在音视频开发中有很多共性的问题是很多人都会遇到的,而具体的解决方案却没有一个系统专业的标准化答案,今天达内安卓培训专家就将为大家全面解析一下音视频开发中的常见问题以及解决方案。
对于1080P的视频而言,蓝光视频的码金莎与林俊杰率是20Mb/s,一般下载的视频码率大都是10Mb/s,一些IPCamera/无人机的码率是2~8Mb/s,而很多视频网站的码率甚至低于5M/s。
同等分辨率的情况下,码率越大,清晰度越大,但同时对网络带宽的占用也越大,具体码率该设置为多少,需要看应用的具体场景了。
“跳跃”和“花屏”现象绝大多数原因是网络传输过程中由于信号不好导致丢失了“关键帧”/“参考帧”引起的,下面来进一步解释。
视频在网上之前是需要压缩的,而简单来解释视频压缩的核心思想就是:每隔10~50帧取视频中的一帧图像作为“关键帧”,而随后的几帧图像由于时间/空间的冗余和相关性,我们只需记录其与关键帧的“差异”信息即可,这样视频文件就可以不用把每一帧完整的图像数据全部保存下来,从而起到了节省空间的效果。
由此可见,如果丢失掉了“关键帧”,随后的几帧图像自然就无法正常地解码了,因此产生了“花屏”现象。
从技术的角度,怎么解决“花屏”现象呢?——当我们在视频传输过程中,通过帧序号发现丢帧后,可以跳过随后的非“关键帧”,直到遇到下一个关键帧再送入解码。这样的确可以解决“花屏”现象,但是由于跳跃了很多帧,因此会出现视频图像的不连续情况(即“跳跃”现象)。
由于网络是很不稳定的,因此,音视频数据的传输也是时快时慢的,在播放网络视频流的过程中,一定要根据时间戳来决定何时解码何时显示,而不是来一帧就播放一帧,另外,添加一定数量的“帧缓冲区”可以有效地降低由于网络抖动带来的“卡顿”现象。
一般情况下,帧率为30f/s的视频,每缓冲n帧,就会增加1000/30*n毫秒的延时。因此,要想减少延时,则必须通过分析和测试找到上述每一部分的延时,尽量减少数据的拷贝和缓冲。
边下边播与播放本地文件其实差不多,只不过是文件数据不在本地,在播放器播放到指定之前,后台线程把需要的数据提前下载下来而已。
本文由 325游戏(m.325games.com)整理发布