我正在使用AVPlayer播放HLS实时流,并且我试图通过模拟将播放器速率设置为0.05的暂停来强制延迟,当延迟达到所需的延迟时,我将速率设置为1,有时将播放器重置流。这可以在模拟器上更经常地观察到。有谁知道为什么会这样?
答案 0 :(得分:0)
要解决在标题/标题中提出的问题,
我使用player.pause()
和player.play()
暂停和恢复HLS提要,它运行良好。如果您是通过编程方式确定延迟时间,则可以尝试对pause()
和play()
方法进行计时。
现在,要解决体内的问题:
在尝试手动同步两个设备(暂停/播放/暂停/播放)时,我偶尔会观察到这种“重置”行为。
我的猜测是,播放器会尽最大努力同步至关键帧,具体取决于其缓冲的内容。网络连接的抖动或流的比特率,关键帧率和帧率等因素都将影响播放器从状态变化中恢复的能力以及在流中的接收位置。
在使用模拟器时,您并没有从实际硬件的性能提升中受益(因为所有内容都被仿真了),因此它对CPU的负担更大,并且更有可能出现跳动。