2016-11-25 3 views
0

Hallo Ich verwende für Video-Streaming. Das ist, was ich getan habe, um zu spielen.Dauer nicht mit AVPlayer currentItem

avPlayer = AVPlayer(url: videoURL! as URL) 
playerLayer = AVPlayerLayer(player: avPlayer) 
playerLayer.videoGravity=AVLayerVideoGravityResizeAspectFill 
avPlayer.play() 

Jetzt möchte ich eine UISlider hinzufügen zu bewegen, wenn das Video abgespielt wird. So habe ich das gemacht.

let minimumValue:Float=0.00 
sliderBar.minimumValue=minimumValue 
playerLayer.frame = self.viewPlayer.bounds 

self.viewPlayer.layer.addSublayer(playerLayer) 
let duration : CMTime = avPlayer.avPlayer.currentItem!.asset.duration 
let seconds : Float64 = CMTimeGetSeconds(duration) 

sliderBar.maximumValue=Float(seconds) 

Aber wenn ich die duration drucken das ist mein Ausgang

(lldb) po duration 

▿ CMTime 
- value : 0 
- timescale : 0 
▿ flags : CMTimeFlags 
    - rawValue : 17 
- epoch : 0 

Wie kann ich die Dauer dieses Streaming-Video. Bitte helfen Sie mir. Danke

+0

Ich glaube, Sie Antwort von diesem erhalten kann: http://stackoverflow.com/questions/40781738/how-to-detect-avplayer-actually-started-to-play-in-swift#comment68786619_40781738 – nynohu

+0

Nein, ich kann nicht bekomme die Antwort davon. Das hat auch den gleichen Weg verwendet – user1960169

+0

Ich meine in der Antwort müssen Sie AVPlayer Status readyToPlay erhalten, wenn Sie diesen Status erhalten, können Sie die Dauer korrekt erhalten. – nynohu

Antwort

1
if let duration = avPlayer?.currentItem?.duration { 
      let seconds = CMTimeGetSeconds(duration) 

       if seconds.isFinite{ 
        let second = Int(seconds) 
        let secondsText = second % 60 
        var secondString = "00" 
        if secondsText < 10{ 
         secondString = "0\(secondsText)" 
        } 
        else{ 
         secondString = "\(secondsText)" 
        } 
        let minutesText = String(format: "%02d", Int(seconds)/60) 
        let videoLength = "\(minutesText):\(secondString)" 
        print(videoLength) 

       } 
      } 

Es funktioniert für mich. Prost.

Verwandte Themen