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

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.

Related

Recording IP Camera in QT

I am busy with writing a program that is able to view an IP camera and also have a playback option available.
To realize this i have been looking to record the feed that i now have running in my program using the Qmediaplayer.
From what i understand it is not possible to use Qmediarecorder to record this feed. All the examples that use Qmediarecorder use the Qcamera class.
Is there a way to record a stream from an IP camera (mjpeg, h.264 ) with the Qmediarecorder or any other QT tool ?
If not ? what is a good library to use for this kind of application?
libvlc may be the library you can looking for, there is also a c++ - qt wrapper that simplifies the usage of library in c++ and qt : vlc-qt library :https://vlc-qt.tano.si/ . record and playback availability of library of vlc player is present in this wrapper

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.

Add mp3 codec to qt-project

I am really new to Qt development as well as audio codecs. I recently found a way to play mp3 sound using QSound. I want to play it in my qt project using QAudioOutput, but there is no mp3 codec in QAudioDeviceInfo::supportedCodecs().
I tried install mp3 codec but it is still not listed in QAudioDeviceInfo::supportedCodecs(). How can I add a codec to QAudioDeviceInfo::supportedCodecs()?
By definition QAudioDeviceInfo provides an interface to query audio devices and their functionality. Which means any codec returned by QAudioDeviceInfo::supportedCodecs() is a codec format the device is able to play directly, and will be probably be raw audio format like pcm. On the other hand mp3 need to go through a software decoder first, so It will not be in this list.
Take a look at the Media Player example for a reference. It should be able to play mp3 and other formats. The project should be available in the Qt source or installation directory in your machine, either under the folder demo or examples.
It seems from the source that it does lot more than just barely playing audio. So focus on the constructor of the class Player as well as the method Player::addToPlaylist()
ps :I speak in conditional tense because I am more familiar with Qt 4 than Qt 5.
EDIT:
As long as windows media player cannot play mp3, you will not have full mp3 support in your Qt app, and the Player example I gave you will not work either. Download some codecs in your system till Windows media player can play mp3.

Qt MediaPlayer play audio from memory

I'm developing music player for Symbians and need to play raw audio data (PCM) from phone memory.
I tried QAudioOutput, which works fine (through Qbuffer - iherits QIODevice), but it is too much low-level API and therefore not suitable for me. So I found Phonon and QMediaPlayer.
I can't get Phonon to work neither on my phone nor on Windows. However, on Windows i can play files but not QBuffers... strange.
However, now I want to use QMediaPlayer but havent found a way to play raw data from memory. There is only QUrl constructor of QMediaContent.
Is there any option how to play on QMediaPlayer from QBuffer, QDataStream, QByteArray... anything from memory?
Any suggestions would be great, thanks :).
On desktop I'm using plain GStreamer (without phonon layer) to play from memory. Phonon backends doesn't handle well media from memory (QIODevice). From Qt docs:
Warning: On Windows, we only support QIODevices containing the avi, mp3, or mpg formats. Use the constructor that takes a file name to open files (the Qt backend does not use a QFile internally).

decode MPEG1/2 video with Media Foundation

I am using Media Foundation to play videos. On windows 7 some videos encoded with Mpeg1/Mpeg2 PS and Windows Media Player can play them, but Media Foundation does not(I tried to register a stub MPEG1Source but it still does not work). I noticed some of these files could be played with directshow but not Media foundation(can not be open at all). I guess "media player" does not use Media Foundation only?
Is it possible to use Media Foundation to play these file? If it is not, how does Media player work? Thanks a lot.
P.S. I have read the windows SDK and I registered a "fake" mpeg1 decode and it shows a blank frame with no time code. Why we need a fake mpeg1 decoder if windows media player can decode it?
This topic is relative to
best way to build graph for MPEG2 transport stream
Media Foundation does not have inbox support for MPEG-1 or MPEG-2. See: http://msdn.microsoft.com/en-us/library/dd757927(v=VS.85).aspx
Windows Media Player uses various code paths, including DShow, Media Foundation, and Windows Media Format SDK, depending on the source content.
I have found some information about this question and set up a MPEG1 source with the fake decoder. The failure I've been through is because bugs in SDK's code.
About the MPEG1 decoder, I guess I have to use DShow's decoder in MF.
Still have no idea about how MediaPlayer works.
In your Microsoft SDK installation directory, go to Microsoft SDKs -> Windows v7.0 -> Samples -> multimedia -> mediafoundation -> Decoder which contains an example MPEG-1 Decoder MFT. You might find it helpful.
There is new MPEG-2 Video Decoder MF filter at Windows 8.
http://msdn.microsoft.com/en-us/library/windows/desktop/hh162909(v=vs.85).aspx

Resources