2016-11-25 94 views
0

您好,我正在使用AVPlayer进行视频播放。这就是我所做的。AVPlayer的播放时间目前的播放时间

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

现在我想添加一个UISlider视频播放时移动。所以我这样做了。

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) 

但是,当我打印duration这是我的输出

(lldb) po duration 

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

我怎样才能得到这个视频流的持续时间。 请帮帮我。 谢谢

+0

我想你可以从这里得到答案: http://stackoverflow.com/questions/40781738/how-to-detect-avplayer-actually-started-to-play-in-swift#comment68786619_40781738 – nynohu

+0

不,我不能从中得到答案。这也使用相同的方式 – user1960169

+0

我的意思是在您需要获得AVPlayer状态readyToPlay的答案,如果您收到此状态,您可以正确地获得持续时间。 – nynohu

回答

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) 

       } 
      } 

它适合我。干杯。

相关问题