ios - 持续时间不随 AVPlayer currentItem 一起提供

标签 ios swift avplayer duration

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

                }
            }

它对我有用。干杯。

关于ios - 持续时间不随 AVPlayer currentItem 一起提供,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40797489/

相关文章:

ios - 将更新版本提交到已转移的 iOS 应用程序时出错

ios - 收集字符串值并添加到数组中

ios - 在 Swift 中从 CollectionViewCell 中的 rootViewController 访问 var

ios - 为什么在 Swift 中创建默认值数组时不需要 <Element> ?

ios - Swift AVPlayer 无法播放 MP4 : Play Button With Line Through It

IOS 键盘输入选择器

swift - 快速理解协议(protocol)扩展

swift - 在快速错误处理中重新抛出类/结构实例方法

ios - 通知控制中心同时播放多个音频

ios - 音频硬件.cpp :1200:AudioObjectRemovePropertyListener: AudioObjectRemovePropertyListener: no object with given ID 0