diff --git a/repro.py b/repro.py
index c8de052..e74f3e6 100644
--- a/repro.py
+++ b/repro.py
@@ -1,83 +1,107 @@
-
-from PySide import QtCore, QtGui, phonon, QtUiTools
-from PySide.phonon import Phonon
-
-class Reproductor(QtGui.QWidget):
-
- def __init__(self):
- super(Reproductor, self).__init__(parent=None)
- self.setWindowTitle("Python Simple Player")
- self.gridLayout = QtGui.QGridLayout(self)
- loader = QtUiTools.QUiLoader()
- file = QtCore.QFile("repro.ui")
- file.open(QtCore.QFile.ReadOnly)
- self.ui = loader.load(file, self)
- file.close()
- self.gridLayout.addWidget(self.ui, 0, 0, 1, 1)
- # seccion multimedia
- self.audioOutput = Phonon.AudioOutput(Phonon.MusicCategory, self)
- self.mediaObject = Phonon.MediaObject(self)
- Phonon.createPath(self.mediaObject, self.audioOutput)
- self.mediaObject.setTickInterval(1000)
- #
- self.ui.lcdAvance.display("00:00")
- QtCore.QObject.connect(
- self.ui.btnArchivo,
- QtCore.SIGNAL("clicked()"),
- self.openFile)
- QtCore.QObject.connect(
- self.ui.btnPlay,
- QtCore.SIGNAL("clicked()"),
- self.play)
- self.mediaObject.tick.connect(self.alAvanzar)
- self.mediaObject.stateChanged.connect(self.alCambiarEstado)
-
- def alAvanzar(self, tiempo):
- displayTime = QtCore.QTime(
- 0, (tiempo / 60000) %
- 60, (tiempo / 1000) %
- 60)
- self.ui.lcdAvance.display(displayTime.toString('mm:ss'))
-
- def alCambiarEstado(self, new, old):
- if self.mediaObject.state() == Phonon.State.StoppedState:
- self.ui.btnPlay.setEnabled(True)
- elif self.mediaObject.state() == Phonon.State.PlayingState:
- self.ui.btnPlay.setText("||") # .setEnabled(False)
-
- def play(self):
- if self.mediaObject.state() == Phonon.State.PlayingState:
- self.mediaObject.pause()
- self.ui.btnPlay.setText(">")
- else:
- self.mediaObject.play()
- #///////////////////////////////////
- meta = self.mediaObject.metaData()
- meta["TITLE"] = meta["TITLE"] if "TITLE" in meta else "Indefinido"
- meta["ARTIST"] = meta[
- "ARTIST"] if "ARTIST" in meta else "SinNombre"
- label = "{TITLE} by {ARTIST}".format(**meta)
- self.ui.lblNombre.setText(label)
- #///////////////////////////////////
- self.ui.btnPlay.setText("||")
-
- def openFile(self):
- fileName = QtGui.QFileDialog.getOpenFileName(
- self,
- u"Abrir Archivo",
- u"/",
- u"Archivos de Audio (*.mp3 *.wav *.ogg)")
- if fileName[1]:
- self.path = fileName[0]
- self.mediaObject.setCurrentSource(
- Phonon.MediaSource(self.path))
- self.ui.btnPlay.setText(">")
- self.ui.lblNombre.setText("...")
- self.ui.lcdAvance.display("00:00")
-
-if __name__ == "__main__":
- import sys
- app = QtGui.QApplication(sys.argv)
- rep = Reproductor()
- rep.show()
- sys.exit(app.exec_())
+
+from PySide import QtCore, QtGui, phonon, QtUiTools
+from PySide.phonon import Phonon
+
+from videopanel import player
+
+
+class Reproductor(QtGui.QWidget):
+
+ def __init__(self):
+ super(Reproductor, self).__init__(parent=None)
+ self.setWindowTitle("Python Simple Player")
+ self.gridLayout = QtGui.QGridLayout(self)
+ loader = QtUiTools.QUiLoader()
+ file = QtCore.QFile("repro.ui")
+ file.open(QtCore.QFile.ReadOnly)
+ self.ui = loader.load(file, self)
+ file.close()
+ self.gridLayout.addWidget(self.ui, 0, 0, 1, 1)
+ # seccion multimedia
+ self.audioOutput = Phonon.AudioOutput(Phonon.MusicCategory, self)
+ self.mediaObject = Phonon.MediaObject(self)
+ Phonon.createPath(self.mediaObject, self.audioOutput)
+ self.mediaObject.setTickInterval(1000)
+ #
+ self.ui.lcdAvance.display("00:00")
+ QtCore.QObject.connect(
+ self.ui.btnArchivo,
+ QtCore.SIGNAL("clicked()"),
+ self.openFile)
+ QtCore.QObject.connect(
+ self.ui.btnPlay,
+ QtCore.SIGNAL("clicked()"),
+ self.play)
+ self.mediaObject.tick.connect(self.alAvanzar)
+ self.mediaObject.stateChanged.connect(self.alCambiarEstado)
+ #----------------------
+ self.player = None
+
+ def alAvanzar(self, tiempo):
+ displayTime = QtCore.QTime(
+ 0, (tiempo / 60000) %
+ 60, (tiempo / 1000) %
+ 60)
+ self.ui.lcdAvance.display(displayTime.toString('mm:ss'))
+
+ def alCambiarEstado(self, new, old):
+ if self.mediaObject.state() == Phonon.State.StoppedState:
+ self.ui.btnPlay.setEnabled(True)
+ elif self.mediaObject.state() == Phonon.State.PlayingState:
+ self.ui.btnPlay.setText("||") # .setEnabled(False)
+
+ def play(self):
+ if self.player:
+ if self.player.state() == Phonon.State.PlayingState:
+ self.player.pause()
+ self.player.show()
+ self.ui.btnPlay.setText(">")
+ else:
+ self.player.show()
+ self.player.play()
+ self.ui.lblNombre.setText(self.player.file_path)
+ self.ui.btnPlay.setText("||")
+ else:
+ if self.mediaObject.state() == Phonon.State.PlayingState:
+ self.mediaObject.pause()
+ self.ui.btnPlay.setText(">")
+ else:
+ self.mediaObject.play()
+ #///////////////////////////////////
+ meta = self.mediaObject.metaData()
+ print(meta)
+ meta["TITLE"] = meta[
+ "TITLE"] if "TITLE" in meta else "Indefinido"
+ meta["ARTIST"] = meta[
+ "ARTIST"] if "ARTIST" in meta else "SinNombre"
+ label = "{TITLE} by {ARTIST}".format(**meta)
+ self.ui.lblNombre.setText(label)
+ #///////////////////////////////////
+ self.ui.btnPlay.setText("||")
+
+ def openFile(self):
+ fileName = QtGui.QFileDialog.getOpenFileName(
+ self,
+ u"Abrir Archivo",
+ u".",
+ u"Archivos de Audio (*.mp3 *.wav *.ogg);;Archivos de Video (*.mp4 *.mpg *.avi)")
+ if fileName[1]:
+ self.path = fileName[0]
+ self.mediaObject.setCurrentSource(
+ Phonon.MediaSource(self.path))
+ self.ui.btnPlay.setText(">")
+ self.ui.lblNombre.setText("...")
+ self.ui.lcdAvance.display("00:00")
+ if fileName[0][-3:] in "mp4 mpg avi".split():
+ self.player = player(fileName[0])
+ self.player.alAvanzar = self.alAvanzar
+ self.player.alCambiarEstado = self.alCambiarEstado
+ else:
+ self.player = None
+
+if __name__ == "__main__":
+ import sys
+ app = QtGui.QApplication(sys.argv)
+ rep = Reproductor()
+ rep.show()
+ sys.exit(app.exec_())
diff --git a/repro.ui b/repro.ui
index f4a1029..918f0b3 100644
--- a/repro.ui
+++ b/repro.ui
@@ -1,104 +1,104 @@
-
-
- Form
-
-
-
- 0
- 0
- 264
- 121
-
-
-
- Form
-
-
- -
-
-
-
-
-
-
-
-
- Pista
-
-
-
- -
-
-
- ...
-
-
-
-
-
- -
-
-
-
-
-
- Avance
-
-
-
- -
-
-
-
-
-
-
- -
-
-
-
-
-
- Qt::Horizontal
-
-
-
- 40
- 20
-
-
-
-
- -
-
-
- false
-
-
- >
-
-
-
- -
-
-
- ...
-
-
-
- -
-
-
- Qt::Horizontal
-
-
-
- 40
- 20
-
-
-
-
-
-
-
-
-
-
-
+
+
+ Form
+
+
+
+ 0
+ 0
+ 264
+ 121
+
+
+
+ Form
+
+
+ -
+
+
-
+
+
-
+
+
+ Pista
+
+
+
+ -
+
+
+ ...
+
+
+
+
+
+ -
+
+
-
+
+
+ Avance
+
+
+
+ -
+
+
+
+
+
+
+ -
+
+
-
+
+
+ Qt::Horizontal
+
+
+
+ 40
+ 20
+
+
+
+
+ -
+
+
+ false
+
+
+ >
+
+
+
+ -
+
+
+ ...
+
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+
+ 40
+ 20
+
+
+
+
+
+
+
+
+
+
+
diff --git a/videopanel.py b/videopanel.py
new file mode 100644
index 0000000..d18fdb8
--- /dev/null
+++ b/videopanel.py
@@ -0,0 +1,54 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+import os
+from PySide.QtGui import QApplication
+from PySide.phonon import Phonon
+from PySide import QtCore, QtGui
+
+
+class player(Phonon.VideoWidget):
+
+ def __init__(self, file_path):
+ super(player, self).__init__(parent=None)
+ self.setWindowTitle("Video")
+ QtGui.QApplication.addLibraryPath(
+ os.path.join(os.path.dirname(__file__), 'plugins'))
+ media_src = Phonon.MediaSource(file_path)
+ self.file_path = file_path
+ media_obj = Phonon.MediaObject()
+ media_obj.setCurrentSource(media_src)
+ Phonon.createPath(media_obj, self)
+ self.media_obj = media_obj
+ audio_out = Phonon.AudioOutput(Phonon.VideoCategory)
+ Phonon.createPath(media_obj, audio_out)
+ self.audio_out = audio_out
+ self.media_obj.setTickInterval(1000)
+ self.media_obj.tick.connect(self.alAvanzar)
+ self.media_obj.stateChanged.connect(self.alCambiarEstado)
+
+ def alAvanzar(self, tiempo):
+ pass
+
+ def alCambiarEstado(self, new, old):
+ pass
+
+ def play(self):
+ self.media_obj.play()
+
+ def pause(self):
+ self.media_obj.pause()
+
+ def stop(self):
+ self.media_obj.stop()
+
+ def state(self):
+ return self.media_obj.state()
+
+
+if __name__ == "__main__":
+ app = QApplication([])
+ p = player(file_path=os.path.join(os.path.dirname(__file__), 'steve.mp4'))
+ p.show()
+ p.play()
+ app.exec_()