博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
音视频开发:码率、延时、花屏、卡顿
阅读量:7187 次
发布时间:2019-06-29

本文共 1043 字,大约阅读时间需要 3 分钟。

1. 视频码率一般设多大?

对于1080P的视频而言,蓝光视频的码率是20Mb/s,一般下载的视频码率大都是10Mb/s,一些IPCamera/无人机的码率是2~8Mb/s,而很多视频网站的码率甚至低于5M/s。

同等分辨率的情况下,码率越大,清晰度越大,但同时对网络带宽的占用也越大,具体码率该设置为多少,需要看应用的具体场景了。

2. 播放中出现“跳跃”和“花屏”现象?

“跳跃”和“花屏”现象绝大多数原因是网络传输过程中由于信号不好导致丢失了“关键帧”/“参考帧” 引起的,下面来进一步解释。

视频在网上传播之前是需要压缩的,而简单来解释视频压缩的核心思想就是:每隔10~50帧取视频中的一帧图像作为“关键帧”,而随后的几帧图像由于时间/空间的冗余和相关性,我们只需记录其与关键帧的“差异”信息即可,这样视频文件就可以不用把每一帧完整的图像数据全部保存下来,从而起到了节省空间的效果。

由此可见,如果丢失掉了“关键帧”,随后的几帧图像自然就无法正常地解码了,因此产生了“花屏”现象。

从技术的角度,怎么解决“花屏”现象呢?——当我们在视频传输过程中,通过帧序号发现丢帧后,可以跳过随后的非“关键帧”,直到遇到下一个关键帧再送入解码。这样的确可以解决“花屏”现象,但是由于跳跃了很多帧,因此会出现视频图像的不连续情况(即“跳跃”现象)。

3. 播放过程中出现“卡顿”现象?

由于网络是很不稳定的,因此,音视频数据的传输也是时快时慢的,在播放网络视频流的过程中,一定要根据时间戳来决定何时解码何时显示,而不是来一帧就播放一帧,另外,添加一定数量的“帧缓冲区”可以有效地降低由于网络抖动带来的“卡顿”现象。

4. 音视频实时传输的延时主要来自哪里 ?

(1) 编码器/解码器一般需要缓冲2~4帧

(2) 编码/解码的耗时

(3) 业务代码中的帧缓冲区

(4) 网络传输延时

(5) 代码中的数据拷贝

一般情况下,帧率为30f/s的视频,每缓冲n帧,就会增加1000/30*n毫秒的延时。因此,要想减少延时,则必须通过分析和测试找到上述每一部分的延时,尽量减少数据的拷贝和缓冲。

5. 边下边播的原理 ?

边下边播与播放本地文件其实差不多,只不过是文件数据不在本地,在播放器播放到指定位置之前,后台线程把需要的数据提前下载下来而已。

本文转自 Jhuster 51CTO博客,原文链接:http://blog.51cto.com/ticktick/1722446,如需转载请自行联系原作者

你可能感兴趣的文章
linux 磁盘管理
查看>>
VMWARE服务器虚拟化功能介绍
查看>>
深入搜索引擎原理
查看>>
jemalloc 内存分配管理
查看>>
mysqld源码及目录结构
查看>>
Golang walk在win及linux建立 GUI 應用程式
查看>>
Linux执行命令常见的英语语句
查看>>
elasticsearch简单JavaAPI总结
查看>>
线索化二叉树
查看>>
vimrc
查看>>
【Spark亚太研究院系列丛书】Spark实战高手之路-第一章 构建Spark集群(第四步)(1)...
查看>>
Perl语言之统计特定字符串个数
查看>>
Linux用户和组管理
查看>>
Eclipse中从svn上检出项目无法识别jar包
查看>>
shell实现FTP自动批量上传下载文件
查看>>
我的友情链接
查看>>
Mybatis使用存储过程以及原理
查看>>
【Objective-C】OC中字典基本概念和常用方法(NSDictionary和NSMutableDictionary)
查看>>
maven打包包含配置文件
查看>>
C# readonly与const比较
查看>>