Details
-
Bug
-
Resolution: Fixed
-
P2: Important
-
6.4.0, 6.5.1
-
None
-
window 10
Description
Steps to reproduce:
- Apply attached qtbug114778_repro.diff to C++ player example
- Play attached vertical_video.mp4
- Note green bar at bottom
- Reportedly, states are out of sync, but that did not show
------------------------
Python report:
Hello Qt for Python team,
I report the QMediaPlayer problem that has been occurring since Pyside 6.4
Recent QMediaPlayer has a mismatch between the playbackState and MediaStatus states.
In addition, videos taken vertically cannot be played vertically, and when played, a green bar is displayed at the bottom.
The following results were tested on 'pyside 6.5.1', 'pyside 6.3.2', and on the 'window media player'.
The experiment used the same computer and mp4 video.
I want to use the latest Pyside. Please check.
Thank you.
1. PlaybackState and MediaStatus status mismatch when video playback is finished
My application wants to play the next video as soon as the video is finished. However, in recent pyside, there is a problem that the application is down when calling setSource() for the next video playback.
I can check the problem by adding a line to check the status of QMediaPlayer in the 'Multimedia Player example' Test Code.
===============================================
self._player.playbackStateChanged.connect(self.update_buttons)
def update_buttons(self, state):
# Add Test Code
print('Check_status=', self._player.playbackState(), self._player.mediaStatus())
===============================================
PySide 6.5.1 Case
C:\Python\Python311\python.exe C:\Python\examples\multimedia\player\player.py
Check_status= PlaybackState.StoppedState MediaStatus.NoMedia
Check_status= PlaybackState.PlayingState MediaStatus.LoadingMedia
Check_status= PlaybackState.StoppedState MediaStatus.BufferedMedia
Check_status= PlaybackState.PlayingState MediaStatus.EndOfMedia
Check_status= PlaybackState.StoppedState MediaStatus.BufferedMedia
When the video playback is stopped state, the media state should be EndOfMedia, but it will output to BufferedMedia status.
PySide 6.3.2 Case
C:\Users\Victor\AppData\Local\Programs\Python\Python310\python.exe C:/python/examples/multimedia/player/player.py
Check_status= PySide6.QtMultimedia.QMediaPlayer.PlaybackState.StoppedState PySide6.QtMultimedia.QMediaPlayer.MediaStatus.NoMedia
Check_status= PySide6.QtMultimedia.QMediaPlayer.PlaybackState.PlayingState PySide6.QtMultimedia.QMediaPlayer.MediaStatus.LoadingMedia
Check_status= PySide6.QtMultimedia.QMediaPlayer.PlaybackState.StoppedState PySide6.QtMultimedia.QMediaPlayer.MediaStatus.EndOfMedia
Check_status= PySide6.QtMultimedia.QMediaPlayer.PlaybackState.PlayingState PySide6.QtMultimedia.QMediaPlayer.MediaStatus.EndOfMedia
Check_status= PySide6.QtMultimedia.QMediaPlayer.PlaybackState.StoppedState PySide6.QtMultimedia.QMediaPlayer.MediaStatus.EndOfMedia
When the playback is stopped state, the media status is normally output to EndOfMedia.
2. Problems that output horizontally when playing videos taken vertically
3. Problems with green bar output when playing a video
Please refer to the attached ppt, test code, and video.
Attachments
Issue Links
- relates to
-
QTBUG-111544 Video shows green strip at bottom
- Closed
-
QTBUG-111815 Bumpy rendering of D3D11 textures
- Closed
-
QTBUG-115308 Fix DirectX texture propagation from FFMPEG to RHI
- Closed