AVPlayer
hat eine Eigenschaft namens rate
, die die Wiedergabegeschwindigkeit steuern soll. 1.0
ist die normale Geschwindigkeit, während Werte wie 2.0
oder 5.0
mit 2x bzw. 5x wiedergegeben werden sollten.
Immer wenn ich einen höheren Wiedergabegeschwindigkeitswert als 1.0
(zB 10.0
) anwähle, ist die Wiedergabe sehr abgehackt und es sieht so aus, als würde eine große Anzahl von Frames fallengelassen, da der Player nicht mithalten kann.
Die gleichen Werte im QuickTime Player (mit demselben Film) erzeugen jedoch eine gleichmäßige Wiedergabe für die Rate von 2x, 5x, 10x, 30x and 60x
(wie vom QuickTime Player gemeldet).
Ich habe eine Test-OS X-Anwendung erstellt, die nicht mehr als AVPlayerView
und zwei Schaltflächen zum Einstellen der Wiedergaberate enthält. Eine Rate von 1.0
funktioniert wie erwartet, aber eine Rate von 10.0
erzeugt eine sehr abgehackte Wiedergabe.
Allerdings hat das AVPlayerView
eine seltsame Eigenart: Wenn Sie mit der Maus auf die Wiedergabe-Timeline klicken, um nach einem anderen Ort zu suchen (während es 10x und abgehackt spielt), "repariert" %%_% die Wiedergabe und der Film wird mit 10x flüssig abgespielt. Sie mussten lediglich auf die Wiedergabe-Timeline klicken.
Weiß jemand, wie man eine reibungslose Wiedergabe für andere Raten als 1x erhält? Es ist offensichtlich kein Hardwareproblem oder ein Problem mit der Dateigröße, da sowohl QuickTime Player als auch AVPlayerView dies können.
Versuche
Diese Frage deutet darauf hin, dass es sich um ein Audio-Problem handeln könnte (und zwar sowohl QuickTime Player als auch AVPlayerView beim Weiterleiten den Ton stummschalten) Alle Versuche, entweder alle Audiospuren zu deaktivieren, alle Spuren stumm zu schalten oder den Tonhöhenalgorithmus zu ändern, schienen keinen Unterschied zu machen. Die Wiedergabe war immer noch abgehackt, auch wenn kein Ton vorhanden war.
Ich habe auch versucht, die Wiedergabe zu stoppen und dann AVPlayerView
mit der neuen Rate aufzurufen, aber das macht auch keinen Unterschied.
Was machen QuickTime Player und AVPlayerView, um eine flüssige Filmwiedergabe mit einer Geschwindigkeit von 10x, 30x oder sogar 60x zu ermöglichen?
Dies ist nur eine Problemumgehung.
Wenn die Wiedergaberate von 0.0 auf einen großen Wert geändert wird, ist die Wiedergabe glatt (und der Ton wird automatisch stummgeschaltet), wenn dies der erste Null-zu-Null-Übergang in der Wiedergaberate seit dem letzten Aufruf von AVPlayer.replaceCurrentItem
ist. Es ist notwendig, dass dies der erste Übergang ist: nur die Rate zuerst auf 0.0 und dann auf die gewünschte Rate zu setzen funktioniert nicht.
So wird zum Beispiel eine reibungslose Wiedergabe bei hohen Geschwindigkeiten erreicht:
%Vor%Tags und Links macos cocoa avfoundation avplayer appkit