Temps de réaction de QMediaPlayer à un changement de vitesse de lecture
-
Bonjour,
Dans mon application développée avec PyQt5, je contrôle la vitesse de lecture d'une vidéo à l'aide d'un widget QComboBox qui donne les choix suivants:
SPEED = ['0.25x', '0.50x', '0.75x', '1.00x', '1.25x', '1.50x', '1.75x', '2.00x', '2.25x', '2.50x', '2.75x', '3.00x']
J'ai implanté le connecteur suivant:
self.cbSpeed.currentIndexChanged.connect(self.speedFactorIndexChanged)
Et la méthode va comme suit:
def speedFactorIndexChanged(self, i): # Remove the 'x' and cast to float. self.speedFactor = float(self.cbSpeed.itemText(i)[:-1])
J'ai un décorateur 'setter' qui prends en charge la mise à jour de la vitesse de lecture.
@speedFactor.setter def speedFactor(self, speedFactor): self.__speedFactor = speedFactor print('Speed factor is now {:0.2f}'.format(speedFactor)) index = self.cbSpeed.findText('{:0.2f}'.format(speedFactor) + 'x', Qt.MatchFixedString) # FixMe Warning: "A lot of buffers are being dropped." if index >= 0: self.cbSpeed.setCurrentIndex(index) self.mediaPlayer.setPlaybackRate(speedFactor)
J'ai deux soucis ici. Le premier est en lien avec le "FixMe" que j'ai inscrit dans le code mais j'en ferais une demande d'aide à part si je ne trouve pas de solution. Le second est qu'il y a un délai de plusieurs secondes entre le moment où la valeur de la combo box change et l'effet visible à l'écran (c'est-à-dire le changement de vitesse de lecture).
PyCharm est mon environnement de développement.
Merci.
-
Bonjour et bienvenue sur devnet,
Quelle version de PyQt5 ?
Avec quelle version de Qt ?
Sur quel OS ?
Avec quel type de vidéo ? -
Environnement PyCharm
Qt : 5.15.0
SIP : 5.3.0
PyQt : 5.15.0
OS : Kubuntu 20.04
Video : MP4 produit avec une caméra GoPro. -
Que se passe-t-il si vous arrêtez la vidéo, changer la vitesse, puis la relancer ?
-
Si j'arrête la lecture et la repart, la vitesse demeure inchangée. C'est-à-dire que j'ai toujours la vitesse d'avant le changement dans le choix fait avec la liste déroulante. Mais la vitesse de la vidéo finie par s'ajuster à la nouvelle valeur. Il y a toujours ce délai. Mais, j'ai noté que quelques secondes avant l'ajustement, la vidéo s'arrête de jouer complètement mais l'indicateur de la position ne s'arrête pas lui! L'image ci-contre illustre le montage graphique des widgets.
-
Puisque vous êtes sous Linux, est-ce que GStreamer arrive à lire correctement cette vidéo ?
-
Oui. J'ai utilisé kaffeine pour ce faire. Dans mon application, la lecture se passe très bien si je ne touche à rien!