持续时间不是来自AVPlayer currentItem

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了持续时间不是来自AVPlayer currentItem相关的知识,希望对你有一定的参考价值。

您好我正在使用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

如何获得此流媒体视频的持续时间。请帮我。谢谢

答案
 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)

                
            

这个对我有用。干杯。

以上是关于持续时间不是来自AVPlayer currentItem的主要内容,如果未能解决你的问题,请参考以下文章

AVPlayer 项目的持续时间为 nan

AVCaptureSession + AVAudioEngine + AVPlayer=来自接收器和扬声器而不是扬声器的低音频

iOS 7中的iOS 7 AVPlayer AVPlayerItem持续时间不正确

使用 MPRemoteCommandCenter 为 AVPlayer 和 AVAudioPlayer 添加当前时间和持续时间的位置

传递给不同控制器时 AVPlayer 持续时间会发生变化

AVPlayer 的 addPeriodicTimeObserverForInterval 中的 CMTime:回调永远不会达到项目的持续时间