Ich habe eine NSTimer
Konfiguration, die alle 0.1
Sekunden auslöst, im Callback hole ich currentTime()
und benutze es, um das Label mit der Dauer des Videos zu aktualisieren. Wenn ich vorwärts suche, indem ich die rate
auf 3 setze, hält dieser Timer an, aber wenn ich die Rate auf -3 setze, läuft das Video weiter, aber die currentTime()
gibt immer noch denselben Wert zurück, als ich anfing zu suchen . Dies geschieht, bis ich aufhören zu suchen und dann currentTime()
gibt die richtige Zeit zurückAVPlayer aktualisiert currentPlaybackTime nicht bei Rückwärtssuche
Wie kann ich die aktuelle Zeit abrufen, die das Video ist, die funktioniert, wenn rückwärts suchen?
Edit: Hier ist der Code I (übersetzt von Xamarin C#) verwenden:
class VideoPlayer: UIView {
var player: AVPlayer!
var wasPaused: Bool!
func play(url: String) {
// set the URL to the Video Player
let streamingURL: NSURL = NSURL(string: url)!
player = AVPlayer(URL: streamingURL)
let playerLayer = AVPlayerLayer(layer: player)
layer.insertSublayer(playerLayer, atIndex: 0)
// Reset the state
player.seekToTime(CMTime(seconds: 0, preferredTimescale: 600))
// Start a timer to move the scrub label
NSTimer(timeInterval: 0.1, target: self, selector: #selector(playbackTimeUpdated), userInfo: nil, repeats: true)
}
func playbackTimeUpdated() {
// This one is not correct when seeking backwards
let time = player.currentTime().seconds;
// Use the time to adjust a UIProgressView
}
// Gets called when the reverse button is released
func reverseTouchUp() {
player.rate = 1
}
// Gets called when the reverse button is pressed
func reverseTouchDown()
{
player.rate = -3;
}
}
Können Sie bitte Code hinzufügen? Ich habe dieses Verhalten in [Demo-Projekt] (https://developer.apple.com/library/ios/samplecode/AVPlayerDemo/Introduction/Intro.html) versucht, funktioniert wie erwartet. –
@RomanErmolov Ich habe meinen Code hinzugefügt, ich werde in den Code schauen, um zu sehen, was ich falsch mache – vrwim