hat eine Eigenschaft namens rate
, die die Wiedergabegeschwindigkeit steuern soll. 1.0
ist normale Geschwindigkeit, während Werte wie 2.0
oder 5.0
mit 2x bzw. 5x wiedergegeben werden sollten.Wie erhalten Sie eine reibungslose High-Rate-Wiedergabe von AVPlayer?
Immer wenn ich einen höheren Wiedergabegeschwindigkeitswert als 1.0
anwende (z. B. 10.0
), ist die Wiedergabe sehr abgehackt und es sieht so aus, als würde eine große Anzahl von Bildern 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 Raten 2x, 5x, 10x, 30x and 60x
(wie vom QuickTime Player gemeldet).
Ich erstellte eine Test OS X-Anwendung, die nichts mehr als eine AVPlayerView
und zwei Tasten 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.
jedoch die AVPlayerView
eine ungeradee Marotte, dass hat, wenn Sie mit der Maus klicken Sie auf dem Wiedergabe-Timeline an einem anderen Ort zu suchen (während es bei 10-facher und abgehackt spielen), dann die AVPlayerView
wird „reparieren“, um die Wiedergabe und den Film wird mit 10x flüssig gespielt. Sie mussten lediglich auf die Wiedergabe-Timeline klicken.
Weiß jemand, wie man 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 question legt nahe, dass es möglicherweise eine Audio-Ausgabe (und beide in der Tat Quicktime Player und AVPlayerView Stummschalten des Audio-Signals bei Weiterleitung), aber alle Versuche meinerseits alle entweder deaktivieren Sie alle Audio-Tracks, mute Tracks oder ändern Sie den Tonhöhenalgorithmus schien keinen Unterschied zu machen. Die Wiedergabe war immer noch abgehackt, auch wenn kein Ton vorhanden war.
Ich habe auch versucht, Wiedergabe zu stoppen und dann prerollAtRate:completionHandler
mit der neuen Rate aufrufen, aber das macht auch keinen Unterschied.
Was machen QuickTime Player und AVPlayerView, die eine flüssige Filmwiedergabe mit einer Geschwindigkeit von 10x, 30x oder sogar 60x ermöglichen?
Haben Sie eine Lösung für dieses Problem finden? Wenn ja, was war das? –
Nein, tut mir leid. Ich musste meine eigene Lösung erstellen, aber es ist nicht so gut, wie ich es gerne hätte. Langfristig denke ich, dass die beste Wiedergabeerfahrung viel tiefer gehen und die Frame-Decodierung außerhalb von AVPlayer behandeln muss. – kennyc
Unter Macos 10.12.3/Xcode 8.2.1 habe ich einige der oben genannten bestätigt: Geschwindigkeiten bis zu 2.0 zeigt kein Problem, aber das Setzen von 'AVPlayer.rate' auf einen Wert größer als 2.0 verursacht eine abgehackte Wiedergabe; Wenn Sie AVPlayerView verwenden, um die Wiedergaberate zu ändern, erhalten Sie eine flüssige Wiedergabe für alle Geschwindigkeiten. Setzen Sie die Rate zuerst auf 0.0 und rufen Sie dann 'prerollAtRate (atRate :, completionHandler:)' auf und setzen Sie die Rate im Completion-Handler hoch, um das Problem nicht zu lösen. Das Erstellen einer AVMutableComposition mit nur der Videospur löst das Problem nicht; Das Deaktivieren der Audiospur behebt das Problem nicht. – Jamborino