diff options
author | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2021-06-14 10:47:40 +0200 |
---|---|---|
committer | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2021-06-23 13:23:28 +0000 |
commit | e275299e9aef84fd9ab8401fba54b34873a43af2 (patch) | |
tree | 6f902f727963acef874a479ed2dd213fcb501e7a /examples/multimedia | |
parent | 72fff9728579b60643282bf7ccba5659975ca052 (diff) |
PySide6/QtMultiMedia: Adapt to API recent changes
Build against qtmultimedia/a6e014eb088cb9b7bf55bf87c814e75cd4037dc2:
- Re-add QAudioInput, QAudioOutput,
qtmultimedia/9fd208f11a218d8a8b07fc525258eea3b3596d62
- Rename QCameraImageCapture to QImageCapture,
qtmultimedia/83a031c56b74d68fe6d349f78c48a1681e40374e
- Remove QImageEncoderSettings,
qtmultimedia/d58d93b8e45b2bf62221b104914df771849c007c
- Remove QMediaEncoderSettings,
qtmultimedia/9c309ede2feb598908b1476062b79d0d23759bf3
- Changes around QMediaEncoder,
qtmultimedia/fde5d6f7cce6118cac4ce7b92cd056225737917f
qtmultimedia/994bcb23af8399485ddfdd16d2ba34c20326b432
- Comment out QMediaPlaylist,
qtmultimedia/5773f7214c7430a98dea3974c0597cb3ee0ea7f5
Pick-to: 6.1
Change-Id: I9beb96c34ebe6132ad68e3628fcbbf0bc48127ef
Reviewed-by: Christian Tismer <tismer@stackless.com>
Diffstat (limited to 'examples/multimedia')
-rw-r--r-- | examples/multimedia/audiooutput/audiooutput.py | 2 | ||||
-rw-r--r-- | examples/multimedia/camera/camera.py | 10 | ||||
-rw-r--r-- | examples/multimedia/player/player.py | 30 |
3 files changed, 26 insertions, 16 deletions
diff --git a/examples/multimedia/audiooutput/audiooutput.py b/examples/multimedia/audiooutput/audiooutput.py index d391af76e..67c021acf 100644 --- a/examples/multimedia/audiooutput/audiooutput.py +++ b/examples/multimedia/audiooutput/audiooutput.py @@ -48,7 +48,7 @@ from struct import pack from PySide6.QtCore import (QByteArray, QIODevice, Qt, QSysInfo, QTimer, qWarning, Slot) -from PySide6.QtMultimedia import (QAudio, QAudioDeviceInfo, QAudioFormat, +from PySide6.QtMultimedia import (QAudio, QAudioDevice, QAudioFormat, QAudioSink, QMediaDevices) from PySide6.QtWidgets import (QApplication, QComboBox, QHBoxLayout, QLabel, QMainWindow, QPushButton, QSlider, diff --git a/examples/multimedia/camera/camera.py b/examples/multimedia/camera/camera.py index cd1a460a0..c3cfe5384 100644 --- a/examples/multimedia/camera/camera.py +++ b/examples/multimedia/camera/camera.py @@ -48,7 +48,7 @@ from PySide6.QtGui import QAction, QGuiApplication, QDesktopServices, QIcon from PySide6.QtGui import QImage, QPixmap from PySide6.QtWidgets import (QApplication, QHBoxLayout, QLabel, QMainWindow, QPushButton, QTabWidget, QToolBar, QVBoxLayout, QWidget) -from PySide6.QtMultimedia import (QCamera, QCameraImageCapture, +from PySide6.QtMultimedia import (QCamera, QImageCapture, QCameraDevice, QMediaCaptureSession, QMediaDevices) from PySide6.QtMultimediaWidgets import QVideoWidget @@ -104,7 +104,7 @@ class MainWindow(QMainWindow): self._camera_info = available_cameras[0] self._camera = QCamera(self._camera_info) self._camera.errorOccurred.connect(self._camera_error) - self._image_capture = QCameraImageCapture(self._camera) + self._image_capture = QImageCapture(self._camera) self._image_capture.imageCaptured.connect(self.image_captured) self._image_capture.imageSaved.connect(self.image_saved) self._image_capture.errorOccurred.connect(self._capture_error) @@ -141,7 +141,7 @@ class MainWindow(QMainWindow): self._camera_viewfinder = QVideoWidget() self._tab_widget.addTab(self._camera_viewfinder, "Viewfinder") - if self._camera and self._camera.status() != QCamera.UnavailableStatus: + if self._camera and self._camera.error() == QCamera.NoError: name = self._camera_info.description() self.setWindowTitle(f"PySide6 Camera Example ({name})") self.show_status_message(f"Starting: '{name}'") @@ -158,7 +158,7 @@ class MainWindow(QMainWindow): self.statusBar().showMessage(message, 5000) def closeEvent(self, event): - if self._camera and self._camera.status() == QCamera.ActiveStatus: + if self._camera and self._camera.isActive(): self._camera.stop() event.accept() @@ -190,7 +190,7 @@ class MainWindow(QMainWindow): self._tab_widget.addTab(image_view, f"Capture #{index}") self._tab_widget.setCurrentIndex(index) - @Slot(int, QCameraImageCapture.Error, str) + @Slot(int, QImageCapture.Error, str) def _capture_error(self, id, error, error_string): print(error_string, file=sys.stderr) self.show_status_message(error_string) diff --git a/examples/multimedia/player/player.py b/examples/multimedia/player/player.py index 5aa31c5bd..3068dab97 100644 --- a/examples/multimedia/player/player.py +++ b/examples/multimedia/player/player.py @@ -46,7 +46,8 @@ from PySide6.QtCore import QStandardPaths, Qt, Slot from PySide6.QtGui import QAction, QIcon, QKeySequence, QScreen from PySide6.QtWidgets import (QApplication, QDialog, QFileDialog, QMainWindow, QSlider, QStyle, QToolBar) -from PySide6.QtMultimedia import QMediaFormat, QMediaPlayer, QMediaPlaylist +from PySide6.QtMultimedia import (QAudio, QAudioOutput, QMediaFormat, + QMediaPlayer) from PySide6.QtMultimediaWidgets import QVideoWidget @@ -69,8 +70,12 @@ class MainWindow(QMainWindow): def __init__(self): super().__init__() - self._playlist = QMediaPlaylist() + self._playlist = [] # FIXME 6.3: Replace by QMediaPlaylist? + self._playlist_index = -1 + self._audio_output = QAudioOutput() self._player = QMediaPlayer() + self._player.setAudioOutput(self._audio_output) + self._player.errorOccurred.connect(self._player_error) tool_bar = QToolBar() @@ -125,11 +130,11 @@ class MainWindow(QMainWindow): self._volume_slider.setMaximum(100) available_width = self.screen().availableGeometry().width() self._volume_slider.setFixedWidth(available_width / 10) - self._volume_slider.setValue(self._player.volume()) + self._volume_slider.setValue(self._audio_output.volume()) self._volume_slider.setTickInterval(10) self._volume_slider.setTickPosition(QSlider.TicksBelow) self._volume_slider.setToolTip("Volume") - self._volume_slider.valueChanged.connect(self._player.setVolume) + self._volume_slider.valueChanged.connect(self._audio_output.setVolume) tool_bar.addWidget(self._volume_slider) about_menu = self.menuBar().addMenu("&About") @@ -158,6 +163,8 @@ class MainWindow(QMainWindow): self._mime_types = get_supported_mime_types() if (is_windows and AVI not in self._mime_types): self._mime_types.append(AVI) + elif MP4 not in self._mime_types: + self._mime_types.append(MP4) file_dialog.setMimeTypeFilters(self._mime_types) @@ -169,7 +176,8 @@ class MainWindow(QMainWindow): file_dialog.setDirectory(movies_location) if file_dialog.exec() == QDialog.Accepted: url = file_dialog.selectedUrls()[0] - self._playlist.addMedia(url) + self._playlist.append(url) + self._playlist_index = len(self._playlist) - 1 self._player.setSource(url) self._player.play() @@ -182,19 +190,21 @@ class MainWindow(QMainWindow): def previous_clicked(self): # Go to previous track if we are within the first 5 seconds of playback # Otherwise, seek to the beginning. - if self._player.position() <= 5000: + if self._player.position() <= 5000 and self._playlist_index > 0: + self._playlist_index -= 1 self._playlist.previous() - self._player.setSource(self._playlist.currentMedia()) + self._player.setSource(self._playlist[self._playlist_index]) else: self._player.setPosition(0) @Slot() def next_clicked(self): - self._playlist.next() - self._player.setSource(self._playlist.currentMedia()) + if self._playlist_index < len(self._playlist) - 1: + self._playlist_index += 1 + self._player.setSource(self._playlist[self._playlist_index]) def update_buttons(self, state): - media_count = self._playlist.mediaCount() + media_count = len(self._playlist) self._play_action.setEnabled(media_count > 0 and state != QMediaPlayer.PlayingState) self._pause_action.setEnabled(state == QMediaPlayer.PlayingState) |