Details
-
Bug
-
Resolution: Fixed
-
P2: Important
-
None
-
5.15.12, 6.7.3
-
Qt5.15.12, Qt6.7.3, gstreamer v1.16, Debian 9, gstreamer v.1.22, Debian 12, RTSP, live555, video server
Description
gstreamer backend, Qt5.15.12, Qt6.7.3, FFmpeg, Debian 9, Debian 12, RTSP, playback, play, pause, resume, issue.
Hello,
Testing a very simple QML file based application, importing the QtMultimedia module, and implementing a VideoOut and one MediaPlayer elements. We test the same QML both in Qt5.15.12 and Qt6.7.3 (by adapting the import version-less in Qt6.7.3).
The video test server is a live555 server, streaming an h264 video file through RTSP on a given URL.
The MediaPlayer QML element just sets the source to the URL of the live555 test stream.
The QML file implements a user interface to call a "play" command of the MediaPlayer, and the video playback of the stream, just starts as expected when the user selects this interface.
The QML file also implements a user interface to call a "pause" command. When the user selects this 'pause' interface, then the video is paused as expected, and the last available video frame is displayed.
Now, if the user selects the "play" interface again, RTSP stream does not resume and the last frame is still displayed. This is the issue we would like some support for.
This issue is reproduced with gstreamer v1.22, Qt5.15.12 with gstreamer backend, and with Qt6.7.3 with FORCED gstreamer backend, in a Debian 12 environment (QT_MEDIA_BACKEND =gstreamer; by the way the doc here is wrong: https://doc.qt.io/qt-6/qtmultimedia-index.html if you use uppercases GStreamer as stated, it does not work)
Now, if we test gstreamer rtsp playback using gst-play-01 tool, no Qt application here, just the CLI, it can playback the video, it can pause it, if you press the space keyboard key, and it can resume the live555 RTSP stream, if you press the keyboard key again. => our conclusion is that gstreamer v1.22 is not the issue in our Debian 12 environment.
If we test Qt6.7.2 with the default FFmpeg backend, the play/pause/play-resume, works just fine too. => our conclusion is that the issue relies in the* Qt gstreamer backend* in Qt5.15.12 as well as in Qt6.7.3.
If we test Qt5.15.12 with gstreamer backend, but with a Debian 9 environment, and therefore an older gstreamer version (possibly v1.16/v1.18?), then we assume that the play/pause/play-resume was working, but we can not test this again recently, so it is just an assumption with a high probability that this was the case indeed.
What would be the best recommendation to dig deeper into this problem, and how could we fix the gstreamer backend for Qt5 to workaround this issue? Is the source code for this backend available, can it be modified, recompiled? What is the .so corresponding to this backend? Where is it? How to compile it to perform tests?
Thank you for your support!
Bill