Configuration: PyQt 5.9 with Python 3.6.1 on macOS 10.12.5 Problem: I am evaluating PyQt as a means of playing back videos within a UI. I am including a simple Python script that reproduces the following three problems:
1. When the video plays back it is not scaled to fit the widget. Instead, the pixel ration is set 1:1 and playback is clipped accordingly by the bounds of the QVideoWidget. When the window is resized, the video does get rescaled. 2. When the window is set to full-screen mode, playback is blocked unless the user moves the mouse into the menubar or exits full screen mode. 3. The following error appears almost immediately after playback begins: "/Library/Caches/com.apple.xbs/Sources/AppleGVA/AppleGVA-10.1.16/Sources/Slices/Driver/AVD_loader.cpp: failed to get a service for display 4” Discussion: I am writing to see if other users have experienced this issue, and if so, has anyone discovered a remedy? Source: #!/usr/bin/env python3 from PyQt5.QtCore import * from PyQt5.QtMultimedia import * from PyQt5.QtMultimediaWidgets import * from PyQt5.QtWidgets import * import sys import os def handle_error(mp,e): print("Error!: {} ({})".format(mp.errorString(),e)) def state_changed(mp,s): if s == QMediaPlayer.StoppedState: state = "Stopped" mp.setPosition(0) # Set playback position in ms since the beginning. mp.play() elif s == QMediaPlayer.PlayingState: state = "Playing" elif s == QMediaPlayer.PausedState: state = "Paused" else: state = "Unknown" print("Media player state changed to: {} (mp.state() -> {})".format(state,mp.state())) if __name__ == '__main__': app = QApplication(sys.argv) video_path = os.path.join(os.environ['HOME'],'Movies') video_name = 'test.mp4' video_pathname = os.path.join(video_path,video_name) print("Loading Video: {}".format(video_pathname)) layout = QVBoxLayout() vw = QVideoWidget() mp = QMediaPlayer() mp.error.connect(lambda e: handle_error(mp,e)) mp.stateChanged.connect(lambda s: state_changed(mp,s)) mp.setVideoOutput(vw) mp.setMedia(QMediaContent(QUrl("file://"+video_pathname))) window = QMainWindow() window.setCentralWidget(vw) window.show() mp.play() app.exec_() Relevant Output: Media player state changed to: Playing (mp.state() -> 1) /Library/Caches/com.apple.xbs/Sources/AppleGVA/AppleGVA-10.1.16/Sources/Slices/Driver/AVD_loader.cpp: failed to get a service for display 4
_______________________________________________ Interest mailing list Interest@qt-project.org http://lists.qt-project.org/mailman/listinfo/interest