你好,我已经把UISlider
的最小值设置为0.00。然后我用这种方法设置它的最大值。
self.viewPlayer.layer.addSublayer(playerLayer)
let duration : CMTime = avPlayer.avPlayer.currentItem!.asset.duration
let seconds : Float64 = CMTimeGetSeconds(duration)
sliderBar.maximumValue=Float(seconds)
sliderBar!.isContinuous = false
sliderBar!.tintColor = UIColor.green
但我得到了这个异常
*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Attempting to set a slider's minimumValue (0.000000) to be larger than the maximumValue (nan)'
enter code here
我知道在prepareForPlay()
之后到实际播放需要一段时间才能真正播放视频。那么我如何检测播放器何时真正开始播放视频呢?请帮助我。谢谢
8条答案
按热度按时间guicsvcw1#
从iOS 10开始,您可以观察AVPlayer的
timeControlStatus
属性。它可以是.playing
。检查代码:
9ceoxa922#
下面是我所做的,以实际上知道什么时候视频开始(而不是当它只准备开始)。
雨燕4
jdg4fx2g3#
您可以像这样在AVPlayer的对象上添加观察者
您可以使用AVPlayer检查状态更改,如下所示
oipij1gg4#
来自苹果的docs:
You can observe an AVPlayerLayer object’s readyForDisplay property to be notified when the layer has user-visible content. In particular, you might insert the player layer into the layer tree only when there is something for the user to look at and then perform a transition from
0yycz8jy5#
您可以创建一个Combine发布程序并观察
rate
:在SwiftUI中,您可以接收以下值:
icomxhvb6#
声明AVPlayer全局
goqiplq27#
超级简单的解决方案SWIFT 4-5:
只需检查
timeControlStatus
!:(也可与PlayerQueue配合使用)原始值将提供其当前状态:)
x33g5p2x8#
另一种更简单的方法是:
其中videoPlayer的类型显然是AVPlayer。