es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Qt Multimedia: ¿Existe una forma de implementar la reproducción de video en bucle sin interrupciones en pyside6?

Estoy intentando hacer un bucle de video en el fondo de mi aplicación Pyside6, actualmente lo estoy implementando a través de QML.

Todo funciona bien hasta ahora, pero he notado que el reproductor de medios borra la pantalla por un momento antes de repetir el video.

He visto que era posible solucionar este problema usando una propiedad llamada “flushMode” en el antiguo Qt5 QtMultimedia, pero dicha propiedad parece haber desaparecido en Qt6 (o tal vez simplemente no está implementada todavía, no lo sé).

Me preguntaba si hay alguna otra forma de hacer un bucle de video continuo en QtMultimedia 6.2 (usando QML, ya que mi aplicación está ejecutándose en Python).

Esto es lo que tengo hasta ahora (el reproductor de medios está separado de la aplicación principal por razones):

import QtQuick
import QtMultimedia

Rectangle {

id: playVid2
anchors.left: parent.left
anchors.right: parent.right
anchors.top: parent.top
anchors.bottom: parent.bottom
anchors.rightMargin: 0
anchors.leftMargin: 0
anchors.bottomMargin: 0
anchors.topMargin: 0

MediaPlayer {
    id: mpVid2
    audioOutput: AudioOutput{}
    videoOutput: voVid2
    source: "media/video/2.mp4"
    loops: MediaPlayer.Infinite
}

VideoOutput {
    id: voVid2
    anchors.fill: parent
    fillMode: VideoOutput.PreserveAspectCrop

}

Component.onCompleted: mpVid2.play()

}

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Desafortunadamente, no hay una manera directa de lograr un bucle sin interrupciones en QtMultimedia 6.2. Sin embargo, puede intentar usar la señal onStopped del MediaPlayer para reiniciar el video cuando llegue al final. Esto debería ayudar a reducir el efecto de parpadeo.

    Por ejemplo:

    MediaPlayer 
        id: mpVid2
        audioOutput: AudioOutput
        videoOutput: voVid2
        source: "media/video/2.mp4"
        loops: MediaPlayer.Infinite
        onStopped: 
            mpVid2.play()
    

Comments are closed.