aboutsummaryrefslogtreecommitdiffstats
path: root/examples/multimedia/player.py
diff options
context:
space:
mode:
Diffstat (limited to 'examples/multimedia/player.py')
-rw-r--r--examples/multimedia/player.py157
1 files changed, 0 insertions, 157 deletions
diff --git a/examples/multimedia/player.py b/examples/multimedia/player.py
deleted file mode 100644
index 762d26b7e..000000000
--- a/examples/multimedia/player.py
+++ /dev/null
@@ -1,157 +0,0 @@
-
-#############################################################################
-##
-## Copyright (C) 2017 The Qt Company Ltd.
-## Contact: http://www.qt.io/licensing/
-##
-## This file is part of the Qt for Python examples of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:BSD$
-## You may use this file under the terms of the BSD license as follows:
-##
-## "Redistribution and use in source and binary forms, with or without
-## modification, are permitted provided that the following conditions are
-## met:
-## * Redistributions of source code must retain the above copyright
-## notice, this list of conditions and the following disclaimer.
-## * Redistributions in binary form must reproduce the above copyright
-## notice, this list of conditions and the following disclaimer in
-## the documentation and/or other materials provided with the
-## distribution.
-## * Neither the name of The Qt Company Ltd nor the names of its
-## contributors may be used to endorse or promote products derived
-## from this software without specific prior written permission.
-##
-##
-## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-##
-## $QT_END_LICENSE$
-##
-#############################################################################
-
-"""PySide2 Multimedia player example"""
-
-import sys
-from PySide2.QtCore import QStandardPaths, Qt
-from PySide2.QtGui import QAction, QIcon, QKeySequence
-from PySide2.QtWidgets import (QApplication, QDialog, QFileDialog,
- QMainWindow, QSlider, QStyle, QToolBar)
-from PySide2.QtMultimedia import QMediaPlayer, QMediaPlaylist
-from PySide2.QtMultimediaWidgets import QVideoWidget
-
-class MainWindow(QMainWindow):
-
- def __init__(self):
- super(MainWindow, self).__init__()
-
- self.playlist = QMediaPlaylist()
- self.player = QMediaPlayer()
-
- toolBar = QToolBar()
- self.addToolBar(toolBar)
-
- fileMenu = self.menuBar().addMenu("&File")
- openAction = QAction(QIcon.fromTheme("document-open"),
- "&Open...", self, shortcut=QKeySequence.Open,
- triggered=self.open)
- fileMenu.addAction(openAction)
- exitAction = QAction(QIcon.fromTheme("application-exit"), "E&xit",
- self, shortcut="Ctrl+Q", triggered=self.close)
- fileMenu.addAction(exitAction)
-
- playMenu = self.menuBar().addMenu("&Play")
- playIcon = self.style().standardIcon(QStyle.SP_MediaPlay)
- self.playAction = toolBar.addAction(playIcon, "Play")
- self.playAction.triggered.connect(self.player.play)
- playMenu.addAction(self.playAction)
-
- previousIcon = self.style().standardIcon(QStyle.SP_MediaSkipBackward)
- self.previousAction = toolBar.addAction(previousIcon, "Previous")
- self.previousAction.triggered.connect(self.previousClicked)
- playMenu.addAction(self.previousAction)
-
- pauseIcon = self.style().standardIcon(QStyle.SP_MediaPause)
- self.pauseAction = toolBar.addAction(pauseIcon, "Pause")
- self.pauseAction.triggered.connect(self.player.pause)
- playMenu.addAction(self.pauseAction)
-
- nextIcon = self.style().standardIcon(QStyle.SP_MediaSkipForward)
- self.nextAction = toolBar.addAction(nextIcon, "Next")
- self.nextAction.triggered.connect(self.playlist.next)
- playMenu.addAction(self.nextAction)
-
- stopIcon = self.style().standardIcon(QStyle.SP_MediaStop)
- self.stopAction = toolBar.addAction(stopIcon, "Stop")
- self.stopAction.triggered.connect(self.player.stop)
- playMenu.addAction(self.stopAction)
-
- self.volumeSlider = QSlider()
- self.volumeSlider.setOrientation(Qt.Horizontal)
- self.volumeSlider.setMinimum(0)
- self.volumeSlider.setMaximum(100)
- self.volumeSlider.setFixedWidth(app.desktop().availableGeometry(self).width() / 10)
- self.volumeSlider.setValue(self.player.volume())
- self.volumeSlider.setTickInterval(10)
- self.volumeSlider.setTickPosition(QSlider.TicksBelow)
- self.volumeSlider.setToolTip("Volume")
- self.volumeSlider.valueChanged.connect(self.player.setVolume)
- toolBar.addWidget(self.volumeSlider)
-
- aboutMenu = self.menuBar().addMenu("&About")
- aboutQtAct = QAction("About &Qt", self, triggered=qApp.aboutQt)
- aboutMenu.addAction(aboutQtAct)
-
- self.videoWidget = QVideoWidget()
- self.setCentralWidget(self.videoWidget)
- self.player.setPlaylist(self.playlist)
- self.player.stateChanged.connect(self.updateButtons)
- self.player.setVideoOutput(self.videoWidget)
-
- self.updateButtons(self.player.state())
-
- def open(self):
- fileDialog = QFileDialog(self)
- supportedMimeTypes = QMediaPlayer.supportedMimeTypes()
- if not supportedMimeTypes:
- supportedMimeTypes.append("video/x-msvideo") # AVI
- fileDialog.setMimeTypeFilters(supportedMimeTypes)
- moviesLocation = QStandardPaths.writableLocation(QStandardPaths.MoviesLocation)
- fileDialog.setDirectory(moviesLocation)
- if fileDialog.exec_() == QDialog.Accepted:
- self.playlist.addMedia(fileDialog.selectedUrls()[0])
- self.player.play()
-
- def previousClicked(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:
- self.playlist.previous()
- else:
- self.player.setPosition(0)
-
- def updateButtons(self, state):
- mediaCount = self.playlist.mediaCount()
- self.playAction.setEnabled(mediaCount > 0
- and state != QMediaPlayer.PlayingState)
- self.pauseAction.setEnabled(state == QMediaPlayer.PlayingState)
- self.stopAction.setEnabled(state != QMediaPlayer.StoppedState)
- self.previousAction.setEnabled(self.player.position() > 0)
- self.nextAction.setEnabled(mediaCount > 1)
-
-if __name__ == '__main__':
- app = QApplication(sys.argv)
- mainWin = MainWindow()
- availableGeometry = app.desktop().availableGeometry(mainWin)
- mainWin.resize(availableGeometry.width() / 3, availableGeometry.height() / 2)
- mainWin.show()
- sys.exit(app.exec_())