当前位置:网站首页>【读书会第十三期】视频文件的编码格式
【读书会第十三期】视频文件的编码格式
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三种帧类型来完成视频的校验可以说是非常的完备了。
边栏推荐
猜你喜欢

Five minutes of machine learning every day: why do we need to normalize the characteristics of numerical types?

Numpy notes

MySQL学习笔记——数据类型(2)

【大连理工大学】考研初试复试资料分享

leecode学习笔记-约瑟夫问题

Huawei cloud database DDS products are deeply enabled

Analysis of nearly 100 million dollars stolen and horizon cross chain bridge attacked

每周招聘|高级DBA年薪49+,机会越多,成功越近!

Live broadcast preview | PostgreSQL kernel Interpretation Series II: PostgreSQL architecture

从0到1建设智能灰度数据体系:以vivo游戏中心为例
随机推荐
Five minutes per day machine learning: use gradient descent to complete the fitting of multi feature linear regression model
Summer Review, we must avoid stepping on these holes!
MySQL组合索引(多列索引)使用与优化案例详解
Redis 發布和訂閱
深度学习 神经网络的优化方法
Unity脚本常用API Day03
Quick introduction to automatic control principle + understanding
odoo数据库主控密码采用什么加密算法?
信号处理之一阶RC低通滤波器宏指令实现(繁易触摸屏)
js平铺数据查找叶子节点
C1 certification learning notes 3 -- Web Foundation
Introduction of text mining tools [easy to understand]
输入宽度!
Unity脚本生命周期 Day02
Redis 发布和订阅
浮点数如何与0进行比较?
怎么判断外盘期货平台正规,资金安全?
MySQL学习笔记——数据类型(2)
PXE网络
Ffmpeg Visual Studio development (IV): audio decoding