当前位置:网站首页>【读书会第十三期】视频文件的编码格式
【读书会第十三期】视频文件的编码格式
2022-07-04 14:23:00 【华为云】
FFmpeg的视频编码格式
FFmpeg支持很多视频编码格式,比如MPEG4、H263、 H264、 H265、 VP8、 VI9 等。
我们重点学习的是H264视频编码格式。
H263的码率控制
- VBR: Variable BitRate,动态码率模式,其码率可以随着图像的复杂程度的不同而变化,因此其编码效率比较高。
- CBR: Constant Bi tRate,恒定码率模式,由于码率恒定,有画面剧烈变化时,QP参数会增大,图像质量会变差,当场景静止时,又浪费带宽。该模式的整体图像质量不稳定。
- ABR: Average BitRate,平均码率模式,是VBR的一种衍生形式,在指定的文件大小内,静态或者接近静态的画面部分使用相对较低的流量,复杂画面部分使用较高的流量,可以视为是VBR 和CBR 的一种折衷方案。
H264帧参考关系
这里首先我把下面三种帧的参考关系放出来,以便后续理解。
H264的I帧类型
- 一个GOP序列的第一个图像叫做IDR 图像(立即刷新图像),IDR 图像都是I帧图像,但I帧不一定都是IDR帧, 只有GOP序列的第1个I帧是IDR帧。
- I帧, 又叫帧内参考帧,保留一帧完整的画面。
- 解码时仅用1帧的数据就可重构出完整的图像。
- 1帧不需要参考其他画面而生成。
- I帧是P帧和B帧的参考帧。
- I帧不需要考虑运动矢量。
- I帧所占数据的信息量最大。
H264的B帧类型
- B帧,又叫双向参考帧,也就是B帧记录的是本帧与前后帧的差别,要解码B帧,不仅要取得之前的缓存画面,还要解码之后的画面,通过前后画面的与本帧数据的叠加取得最终的画面。
- B帧的压缩率最高,但是解码时CPU使用率会比较高。
- B帧是由前面的I或P帧和后面的P帧来进行预测的。
- B帧传送的是它与前面的I或P帧和后面的P帧之间的预测误差及运动矢量。
- B帧不是参考帧,不会造成解码错误的扩散。
H264的P帧类型
- P帧,又叫前向参考帧,表示的是这一-帧跟之前的一 个关键帧(或P帧)的差别,解码时需要用之前缓存的画面叠加上本帧定义的差别,生成最终画面,P帧没有完整画面数据,只有与前一-帧的画面差异的数据。
- P帧是1帧后面相隔1^ 2帧的编码帧。
- P帧采用运动补偿的方法传送它与前面的I或P帧的差值及运动矢量(预测误差)。
- P帧属于前向预测的帧间编码。它只参考前面最靠近它的1帧或P帧。
- P帧可以是其后面P帧的参考帧,也可以是其前后的B帧的参考帧。
- P帧是参考帧,可能会造成解码错误的扩散。
- P帧的压缩比介于I帧和B帧之间。
总结:
本期的学习可以让我们了解到常见的视频编码格式中都是怎么对视频进行码率控制的,特别是常见的H264,通过IBP三种帧类型来完成视频的校验可以说是非常的完备了。
边栏推荐
- What is the future of the booming intelligent Internet of things (aiot) in recent years?
- mysql 联合主键_Mysql 创建联合主键[通俗易懂]
- LeetCode 58. 最后一个单词的长度
- Numpy notes
- 案例分享|金融业数据运营运维一体化建设
- The performance of major mainstream programming languages is PK, and the results are unexpected
- LeetCode 1200 最小绝对差[排序] HERODING的LeetCode之路
- Korean AI team plagiarizes shock academia! One tutor with 51 students, or plagiarism recidivist
- AI做题水平已超过CS博士?
- Redis publier et s'abonner
猜你喜欢
Redis 解决事务冲突之乐观锁和悲观锁
Guitar Pro 8win10 latest guitar learning / score / creation
Redis哨兵模式实现一主二从三哨兵
MySQL学习笔记——数据类型(数值类型)
[differential privacy and data adaptability] differential privacy code implementation series (XIV)
IO流:节点流和处理流详细归纳。
IO flow: node flow and processing flow are summarized in detail.
Memory management summary
MySQL learning notes - data type (numeric type)
go-zero微服务实战系列(九、极致优化秒杀性能)
随机推荐
How to rapidly deploy application software under SaaS
Weekly recruitment | senior DBA annual salary 49+, the more opportunities, the closer success!
PLC Analog input analog conversion FC s_ ITR (CoDeSys platform)
Five minutes per day machine learning: use gradient descent to complete the fitting of multi feature linear regression model
The performance of major mainstream programming languages is PK, and the results are unexpected
智能客服赛道:网易七鱼、微洱科技打法迥异
Force button brush question 01 (reverse linked list + sliding window +lru cache mechanism)
selenium 元素交互
%s格式符
都在说DevOps,你真正了解它吗?
基于MAX31865的温度控制系统
MP3是如何诞生的?
Leetcode 1200 minimum absolute difference [sort] The Path of leetcode for heroding
Luo Gu - some interesting questions
微博、虎牙挺进兴趣社区:同行不同路
信号处理之一阶RC低通滤波器宏指令实现(繁易触摸屏)
Exploration and practice of eventbridge in the field of SaaS enterprise integration
How to handle exceptions in multithreading?
Techsmith Camtasia Studio 2022.0.2屏幕录制软件
Redis sentinel mode realizes one master, two slave and three Sentinels