CSDN:珍稀干货!阿里 Web 音视频开发趟坑指南( 二 )
2、后续对齐策略后续分片的对齐 , 会通过DTS/PTS两个尾部指针来做 。 如果发现后续分片时间轴有间隔就往前推从而填上间隔 。 如果发现重叠 , 就把重叠帧后移 。 这样虽然会导致后续分片的前几帧重叠 。 但在播放的过程中几乎没有影响 。
音视频同步
首先 , 什么情况下会导致音画不同步?
1、视频源流压根没对齐 。 没救了 , 看下一点 。
2、还是因为有洞 。 很多时候视频切出来的每个分片之间都不一定是严丝合缝的 , 分片间的音视频时间戳可能有洞 。 而且对于TS由于音频每一帧的duration(≈23ms) 跟视频每一帧的duration(40ms@25fps) 无法吻合(整除) 所以加剧了这种参差不齐的情况 。 那么 , 重点来了!chrome有个特殊的机制 , 如果发现音频之间有洞之后 , 为了保证音频的平顺 , 会自动把后续音频往前推抹平这个洞 。 如果每个分片都有洞 , 悲剧了 , 这种往前推的操作就会积累越来越多导致音视频不同步 。
小tips:
打开chrome的媒体调试页面 chrome://media-internals 可以看到媒体播放相关的所有debug信息和error信息非常有用 。 其中就会有一条关于音频处理的提示:
当然这条显示的具体原因是自动切掉重叠overlap导致的 。 其实gap/overlap本质是一样的 。 怎么办?当然是播放器自己主动把洞填上 。 具体做法是插帧 。 目前主要是插静音帧 , 或者复制前一帧 。 静音帧会带来毛刺音 , 复制帧会导致拖音 。 我们目前的优化方案是判断附近的音频数据量 , 数据量大时说明此处声音丰富(其实不算靠谱 , 姑且这么处理 , 因为没有更好的判断方式) , 如果插静音帧会毛刺很明显 , 所以此时用复制帧 , 反之插静音帧 。
那些年我们趟过的坑
1、 不同版本表现差异 容忍度不同
1) Chrome 35分水岭 。 chrome35之前要求关键帧之后的第一帧dts不允许跟关键帧dts相同 , 否则抛错 。
2) 低延迟的模式 。 把转封装出来的FMP4中的视频轨duration(tkhd box) 设置成0xffffffff 时会让chrome认为这是直播流 , 会开启低延迟模式 , 所谓低延迟模式就是会极大的减少帧缓存 , 基本上视频帧立马解码立马播放减少每个分片的起播延迟 。 但是呢在CPU负载过高的情况下(解不过来)会造成视频频繁卡顿(网络无关的) 。
2、 不同浏览器表现有差异
1) timeupdate事件 。 W3C的标准是不能超过250ms触发一次 。 windows下360等浏览器会达到500ms左右 。
2) safari对每一帧duration平顺度更敏感 。 safari需要对每一视频帧的duration标准化处理 , 例如TS下要处理成3600 。
3) 对洞的容忍度不同 。 chrome遇到buffer中有0.08的间隔以内会自动跳过去 。 像IE edge等浏览器不行会卡住 , 所以播放器一定要有跳洞逻辑 。 比如判断当前卡在洞的边界 , 要主动跳过去(seek) 。
3、内存限制
通过MSE push给video的视频数据会在内部维护一个buffer , 这个尺寸是有限制的 。
1) chrome系列约100M
2) IE系列约30M
超过的话就会导致抛出 QuotaExceededError。 所以需要处理好buffer的尺寸以及及时清除不用的buffer 。 比如已经播放过的 , 正常浏览器会自己清除 , 但是不那么的及时 。
优化
简单说一下卡顿相关的优化 。
- 多级Buffer控制
- ABR 自适应码率算法
- 基于WebRTC的P2P
为什么要有多级的buffer?因为video本身的解码buffer有大小限制 , 而且buffer过长会导致长时间解码 , 会导致CPU一直占用高 。 所以我们搞了两级buffer一级就是video的buffer另外一级是内存中的 , 只负责下载 , 二级很长 。 可以消除网络抖动带来的卡顿影响 。
2、ABR自适应码率的算法
这个主要是来预测用户本身的带宽范围 , 然后选用不同码率的视频流来无缝切换播放 。 当然还有一些策略算法 , 比如根据用户现在buffer的水位 , 或者检测到用户频繁超时 , 来采用不同的策略 。
推荐阅读
- 候鸟@今春,珍稀候鸟用翅膀为北京生态环境“点赞”
- 「共由游戏」不会玩怎么办,超强细节干货奉上,王者荣耀:女娲喜迎加强
- 【9条干货力解企业用地难题】重庆9条“干货”力解企业用地难题
- 文石科技BOOX▲职场人必备法宝!,硬核干货:6个黑科技效率工具
- 文石科技BOOX:职场人必备法宝!,硬核干货:6个黑科技效率工具
- 我国@农村一种植物,全世界就一棵大树,我国特有,濒危珍稀,一级保护
- 苹果6s后置摄像头黑屏怎么处理?纯干货分享,全是知识点!
- 【咪儿爱摄影】让你少走弯路,学习摄影一定要明白这10个使用小干货
- 咪儿爱摄影▲让你少走弯路,学习摄影一定要明白这10个使用小干货
- 「咪儿爱摄影」学习摄影一定要明白这10个使用小干货,让你少走弯路
