Calificación:
  • 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Consulta sobre: Reproductor de video simple con PyQt 4 y 5
#5
Hola. Pudiste resolver todo muy bien. Está bien que la función from_milliseconds esté fuera de la clase ya que tiene un funcionamiento autónomo, es decir, podría usarse por más que la ventana no se haya creado o bien sin usar Qt en lo absoluto. De todas formas esto es una convención para separar partes de tu código y tampoco habría estado mal que la hayas colocado dentro de la clase (habrías de llamarla como self.from_milliseconds).

Por otro lado, el reproductor de Qt provee una señal llamada tick que se emite cada una cierta cantidad de milisegundos y que tiene como propósito justamente permitir al usuario actualizar datos del video como, por ejemplo, el tiempo transcurrido (tal vez en un QLabel).

El código parcial de la clase sería el siguiente.

  1. class MainWindow(QMainWindow):
  2.    
  3.    def __init__(self):
  4.        QMainWindow.__init__(self)
  5.        
  6.        # Controles principales para organizar la ventana.
  7.        self.widget = QWidget(self)
  8.        self.layout = QVBoxLayout()
  9.        self.bottom_layout = QHBoxLayout()
  10.        
  11.        # Control de reproducción de video de Qt.
  12.        self.video_player = Phonon.VideoPlayer(
  13.            Phonon.VideoCategory, self)
  14.        
  15.        # Botones de reproducción y pausa.
  16.        self.play_button = QPushButton("Pausa", self)
  17.        self.stop_button = QPushButton("Detener", self)
  18.        
  19.        # Deslizadores para el volumen y transición del video.
  20.        self.seek_slider = Phonon.SeekSlider(self)
  21.        self.volume_slider = Phonon.VolumeSlider(self)
  22.        
  23.        # Acomodar controles en la pantalla.
  24.        self.layout.addWidget(self.video_player)
  25.        self.layout.addLayout(self.bottom_layout)
  26.        self.bottom_layout.addWidget(self.play_button)
  27.        self.bottom_layout.addWidget(self.stop_button)
  28.        self.bottom_layout.addWidget(self.volume_slider)
  29.        self.layout.addWidget(self.seek_slider)
  30.        
  31.        # Conectar los eventos con sus correspondientes funciones.
  32.        self.play_button.clicked.connect(self.play_clicked)
  33.        self.stop_button.clicked.connect(self.stop_clicked)
  34.        self.video_player.mediaObject().stateChanged.connect(
  35.            self.state_changed)
  36.        
  37.        # Se utiliza installEventFilter() para capturar eventos
  38.        # del mouse en el control de video que utiliza internamente
  39.        # la clase Phonon.VideoPlayer.
  40.        self.video_player.videoWidget().installEventFilter(self)
  41.        
  42.        # Personalizar la ventana.
  43.        self.setWindowTitle("Reproductor de video")
  44.        self.resize(800, 600)
  45.        self.layout.setMargin(0)
  46.        self.bottom_layout.setMargin(0)
  47.        self.widget.setLayout(self.layout)
  48.        self.setCentralWidget(self.widget)
  49.        
  50.        # Reproducir el archivo.
  51.        self.video_player.play(Phonon.MediaSource(VIDEO_PATH))
  52.        
  53.        # Conectar el control de volumen y transición de video
  54.        # con las clases correspondientes.
  55.        self.seek_slider.setMediaObject(self.video_player.mediaObject())
  56.        self.volume_slider.setAudioOutput(
  57.            self.video_player.audioOutput())
  58.        
  59.        self.video_player.mediaObject().setTickInterval(1000)
  60.        self.video_player.mediaObject().tick.connect(self.update_time)
  61.        self.video_player.mediaObject().finished.connect(self.finished)
  62.    
  63.    def update_time(self):
  64.        print(from_milliseconds(self.video_player.currentTime()))
  65.        print(from_milliseconds(self.video_player.totalTime()))
  66.    
  67.    def finished(self):
  68.        print("Terminado.")


Utilizamos setTickInterval(1000) para que Qt emita la señal cada 1 segundo.

Saludos.
Responder


Mensajes en este tema
RE: Consulta sobre: Reproductor de video simple con PyQt 4 y 5 - por Francisco - 09-05-2017, 03:53 PM

Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)