Qt audio editing - qt

I want to create a qt application similar to Audacity that can run on mobile. Al that I want at the moment is the ability to change volume levels, pitch and tempo. I also want the ability to select, copy and paste parts of the audio file.
Do any of you know a API, SDK or something for Qt that would allow this?
All built in stuff I could find in Qt is QtMultimedia which allows me to import a audio file and then play it but it doesn't seem to have editing(except for bitrate, channel, etc.) or manipulation.
This is for Symbian, and can be built on windows or kubuntu.

Use one of the audio backends:
Audio plugins
Audio backends implement QAudioInput, QAudioOutput, QAudioDeviceInfo and QSoundEffect
Here is the list of the current audio backends:
Windows Multimedia
CoreAudio (Mac OS / iOS)
PulseAudio (Unix)
Alsa (Unix)
OpenSL ES (Android)
QNX
Only PulseAudio, CoreAudio, and QNX backends are actual plugins. The other backends are “#ifdef’ed” in the related classes.
References
Qt 5.4 Multimedia Backends
Qt 5.5.0 Multimedia Backends

Related

QMediaPlayer is a wrapper over GStreamer in Linux?

I am developing an audio player in Linux. I would like to use Gstreamer as backend. When I searched I came to know QMediaPlayer (Qt component) provides simple APIs for playback. Is QMediaPlayer is a wrapper over GStreamer APIs (QMediaplayer internally using GStreamer?) in Linux?
Yes, it is: https://wiki.qt.io/Qt_5.13_Multimedia_Backends. Qt6 also uses gstreamer. Qt 6.4 added a new ffmpeg backend.

To switch between two video files in Qt or opencv python -seamlessly

Currently i'm using opencv (have an option to use QT as well) to play a video file (player) in full screen mode. My requirement is when i'm playing videofile-1 there could a request to play video file-2 and i need to switch to video file-2 seamlessly. Is it possible to do this in opencv or QT ? I know we can do this using RTSP or HTTP streaming.
OpenCV uses cv2.VideoCapture() to read from videofile and cv2.imshow() to project image/video to display. What are you doing between those you it is your choice, so answering your question I guess it's possible.

Can I create a .MP4 container with Qt APIs?

Is it possible to create a .mp4 container with Qt Multimedia or some other Qt APIs ?
I understand that Qt does not have encoding APIs, BUT if I've a library helping me to encode & decode, then can I use Qt to create the MP4 container and the additional third party library to encode video data into it ?
Qt (version 5.9.2 or earlier) does not have support for creating or writing to .mp4 files.
You might be able to do this with a third party add-on QtGstreamer

Enabling mp4/mpeg4/avc support for Qt5 WebEngine on Linux

i installed Qt 5.4.1 x64 on LUbuntu and created an app which uses the new QtWebEngine.
I`m trying to display a html5 page with that component which is using the tag.
All works fine except if I try to playback a mp4 video. The video area remains black. It works if I use other video types like webm/ogg as source.
I know this is due to license restrictions, so that mp4 is deactivated by default in Ubuntu/Linux for Qt.
What is needed in Qt to activate it to allow mp4 playback and on what do I have pay attention in case of license terms (I read that statically linking the library is allowed?) ?
I`ve already tried to copy over the x64 distribution of libffmpegsuo.so which is included in Chrome (2,2Mb) over to the Qt directory to /plugins/webengine/ and replaced that one that was already there (1,1 Mb) but it had no effect.
In Chrome playback works fine btw.
If you need more details like paths etc. please tell me.
Thanks !
You can explicitly enable proprietary codecs (H264, MP3) when compiling Qt WebEngine:
In /path-to-qt-src-dir/qtwebengine execute:
qmake WEBENGINE_CONFIG+=use_proprietary_codecs
You should be able to see in the output that H264 codec is enabled, which is not the default configuration.

How to manage required codec for JavaFX application?

I want to show a video (mp4) with JavaFX, which requires a codec to be installed on the target machine.
How should I manage this situation? Bundle the codec? Ask the user to download and install it? And from where?
The application should be able to run on Win, Mac, Linux...
You only need to manage the codec on Linux.
Background on supported configurations
See the supported system configurations for JavaFX media.
Windows 7&8: The pre-installed Microsoft AAC and H.264 DirectShow decoder filters are used by default.
Similarly for OS X, built-in codecs that ship with OS X will be used.
For Linux:
You must install GLIB 2.28 in order to run JavaFX Media . . . to support AAC audio, MP3 audio, H.264 video, and HTTP Live Streaming: libavcodec53 and libavformat53 on Ubuntu Linux 12.04 or equivalent. On Linux platforms, installing libavformat automatically causes libavcodec to be installed.
Also note:
VP6 video support does not require any third party modules.
So VP6 should work out of the box on any platform. However you are using MP4 containers, so VP6 encoding does not apply to you as that is for FLV containers.
Arbitrary codecs are not supported in JavaFX 8
You must let the JavaFX system use either a codec it provides or pick a pre-installed codec according to its internal algorithms. The following feature request is not currently scheduled for implementation:
RT-2684 Media playback needs to be extensible. User defined codecs or media sources should be supported.
Recommendation
Package your application as a self-contained application. For Linux, this will be a debian package or for redhat type systems it will be an rpm. Those packages can specify dependencies on libavformat and glibc so that the correct versions of those packages will be installed when you install your application (e.g. yum install your-app.rpm).

Resources