本文从开发者的角度给大家用通俗的语言来解释一下有关音视频播放的问题。
1. 为什么在视频网站上播放1080P视频有时候不是特别清晰?
1080P代表视频的分辨率是1920x1080,对于图像而言,分辨率越高,清晰度也越高;但是视频不同,视频是由多帧图像组成的,为了减少存储空间、便于传播,视频中的图像都是经过了一定的算法压缩,而压缩则必然导致失真。
在视频压缩算法中,有一个衡量压缩比率的参数,叫做:码率。它代表一秒钟的视频数据大小,例如:10Mb/s,代表1秒钟有10M bit的视频数据,对于YUV422格式的1080P视频而言,一帧图像是 1920x1080x2x8/1024/1024 = 31.64Mbit,1秒钟30帧图像的话,则有949.2Mb/s,可见其数据量之大,不压缩根本无法网上传播,因此,综上所述,有如下结论:
不要以为1080P的视频就一定是高清的,清晰度还跟视频码率密切相关,对于1080P的视频而言,蓝光视频的码率是20Mb/s,一般下载的视频码率大都是10Mb/s,一些IPCamera/无人机的码率是2~8Mb/s,而很多视频网站的码率甚至低于5M/s,其实有时还不如高码率的720P清晰~
为什么要把码率压缩到这么小,因为现在家庭带宽普遍不够高,看看你家带宽有多大就知道了。
2. 为什么在视频播放的过程中会出现“跳跃”和“花屏”现象?
“跳跃”和“花屏”现象绝大多数原因是网络传输过程中由于信号不好导致丢失了“关键数据”引起的,什么是“关键数据”?对于视频而言,就是“关键帧”/“参考帧”,下面来进一步解释。
上面提到过,视频在网上传播之前是需要压缩的,而简单来解释视频压缩的核心思想就是:每隔10~50帧取视频中的一帧图像作为“关键帧”,而随后的几帧图像由于时间/空间的冗余和相关性,我们只需记录其与关键帧的“差异”信息即可,这样视频文件就可以不用把每一帧完整的图像数据全部保存下来,从而起到了节省空间的效果。
由此可见,如果丢失掉了“关键帧”,随后的几帧图像自然就无法正常地解码了,因此产生了“花屏”现象。
从技术的角度,怎么解决“花屏”现象呢?——当我们在视频传输过程中,通过帧序号发现丢帧后,可以跳过随后的非“关键帧”,直到遇到下一个关键帧再送入解码。这样的确可以解决“花屏”现象,但是由于跳跃了很多帧,因此会出现视频图像的不连续情况(即“跳跃”现象)。
3. 迅雷边下边播的原理 ?
边下边播与播放本地文件其实差不多,只不过是文件数据不在本地,在播放器播放到指定位置之前,后台线程把需要的数据提前下载下来而已。
“边下边播”其实只是像迅雷这样的“下载工具”提的这个概念而已,我们在很多其他的视频网站上看在线视频,其实也是边下载边播放的,只不过下载的数据缓存在你不知道的目录而已,这个缓存目录可以通过如下方法找到:
打开IE浏览器->"设置"->"Internet选项"->"常规"->"设置"->"查看文件"
当然,迅雷的边下边播与其他在线网站可能不同的一点在于,它会通过P2P、多线程并行地去加快视频数据的下载速度。
4. 小结
关于在线视频播放的几个问题就解释到这儿了,有任何疑问或者建议欢迎留言或者来信[email protected]交流,或者关注我的新浪微博 @卢_俊 或者扫描下面的二维码关注我的微信公众号获取最新的文章和资讯。