网络视频播放缓冲

文章讨论了一个项目中关于网络视频播放的缓冲策略。设计了一个基于PTS的视频帧队列,当队列未达到预设缓冲时长时不播放,以应对网络不稳定。面对播放结束或中断时,提出使用缓冲标记来管理剩余内容。对于录像回放的拖动和倍速播放,建议清除缓冲标记并仅在正常播放时应用缓冲。作者还观察到缓冲区可能会被快速消耗,这可能是由于PTS播放速度略快于网络数据到达。
摘要由CSDN通过智能技术生成

最近一个项目的需求是: 播放网络视频时可以设置一个缓冲时长,当网络不稳定的时候,先缓冲一段时间再播。

设计思路是:有一个视频帧队列,队尾的pts减去队首的pts,没有达到缓冲时长时就不播放,先缓冲。缓冲够了,播放时根据Pts来播放。

问题一。播放结束时或者视频中断时。缓冲区的内容无法及时播放。

可以设置一个缓冲标记。网络不好的时候设置他。缓冲满了之后清除他。这样在没有缓冲标记的时候,没有视频再来了就可以及时播放掉缓冲区。但是如果播放缓冲标记成立但是已经没有视频来了,怎么办?这时候只能认为是网络不好,需要继续缓冲,等待超过缓冲时长之后清除标记。这样在一个缓冲时长之后也能够播放掉缓冲区。这样做也是合理的。什么时候认为网络不好,需要标记缓冲呢?在某一帧延迟比较大的时候,这个条件。对播放结束时缓冲区的播放也是有帮助的,因为假如很久很久都没有视频过来,是不会触发换中标记的,足以让缓冲区播放完。

问题2,录像回放的情况有拖动操作还有倍数播放。这时候播放缓冲怎么处理?

这两种场景要实现缓冲比较复杂,我的思路是只有正常播放的情况才有缓冲。一旦发生拖动操作或者倍速操作走清除缓冲标记。这时候如果网络不好也不会设置缓冲标记。

问题3,按理说缓冲之后就会一直有缓冲消耗不掉,可是在测试的时候发现如果缓冲完了之后标记会清楚,过一段时间之后缓冲区也会播放完。

原因可能是按pts播放会比网络视频来的时间要快一些。网络可能有延迟。但是这个原因也不是很站得住脚。因为就算有网络延迟真间隔还是应该和pts间隔一致的。总的来说还是缓冲区的播放比视频来的快。其实这样恰好能够不需要缓冲的时候,恢复同步。这也提供了一个思路,假如缓冲一直在,怎么样慢慢消化掉。那就是消化缓冲区的时候要稍微比正常快一些。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值