视频的专业基础知识(一)常用的编码格式和参数

这篇具有很好参考价值的文章主要介绍了视频的专业基础知识(一)常用的编码格式和参数。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1. 常用的编码格式

编码格式:一个视频文件本身,通常由音频和视频两部分组成。例如视频文件,就是由avc视频编码+AAC音频编码组成的,常见的视频编码格式有Xvid,AVC/H.264,MPEG1,MPEG2 等,常见的音频编码有MP3、AAC等。

编解码格式:是数据按那种方式编码压缩,便于网络传输和降低带宽的需要;

文件格式:是将内容按具体的编码格式压缩后,以该文件所规定的格式进行封装的结果,即容器的概念

视频格式即容器:就是把编码器生成的多媒体内容(视频,音频,字幕,章节信息等)混合封装在一起的标准。容器使得不同多媒体内容同步播放变得很简单,而容器的另一个作用就是为多媒体内容提供索引,也就是说如果没有容器存在的话一部影片你只能从一开始看到最后,不能拖动进度条(当然这种情况下有的播放器会话比较长的时间临时创建索引),而且如果你不自己去手动另外载入音频就没有声音。

视频的编码格式有h.263,h.264,mpeg-4等,视频的文件格式有AVI,MPEG,MOV等格式,h.263,h.264,mpeg-4是3种不同的编解码器。
 

2. 参数

2.1 视频码率

是指视频文件在单位时间内使用的数据流量,也叫码流率。码率越大,说明单位时间内取样率越大,数据流精度就越高,这样表现出来的的效果就是:视频画面更清晰画质更高。

2.2 视频帧率

通常说一个视频的25帧,指的就是这个视频帧率,即1秒中会显示25帧;视频帧率影响的是画面流畅感,也就是说视频帧率超高,表现出来的效果就是:画面越显得流畅。你也可以这样理解,假设1秒只显1帧,那么一段视频看起来,就是有很明显的卡顿感,不流畅不连惯。当然视频帧率越高,意味着画面越多,也就相应的,这个视频文件的大小也会随之增加,占用存储空间也就增大了。

2.3 视频分辨率

分辨率就是我们常说的600x400分辨率、1920x1080分辨率,分辨率影响视频图像的大小,与视频图像大小成正比:视频分辨率越高,图像越大,对应的视频文件本身大小也会越大。

视频编码,音视频,ffmpeg

2.4 IPB帧概念

2.4.1 I 帧

帧内编码帧,帧表示为关键帧,可以理解为这一帧画面的完整保留,解码时只需要本帧数据就可以完成。(包含完整画面)

I 帧的特点

一般而言,打印机Dpi最高可达300。而手机厂商一般会指定Dpi,如下:

  • 它是一个全帧压缩编码帧,它将全帧图像信息进行JPEG压缩编码及传输
  • 解码时仅用 I 帧的数据就可重构完整图像
  • I 帧描述了图像背景和运动主体的详情
  • I 帧不需要参考其他画面而生成
  • I 帧是P帧和B帧的参考帧(其质量直接影响到同组中以后各帧的质量)
  • I 帧不需要考虑运动矢量
  • I 帧所占数据的信息量比较大

2.4.2 P帧

前后预测编码帧,P帧表示的是这一帧跟之前的一个关键帧(或P帧)的差别,解码时需要之前缓存的画面叠加上本帧定义的差别,生成最终画面。

(也就是差别帧,P帧没有完整画面数据,只有与前一帧的画面差别的数据)

P帧的预测与重构:P帧是以 I 帧为参考帧,在 I 帧中找出P帧“某点”的预测值和运动矢量,取预测差值和运动矢量一起传送。在接收端根据运行矢量从 I 帧找出P帧“某点”的预测值并与差值相加以得到P帧“某点”样值,从而可得到完整的P帧。

P 帧的特点

  • P帧是 I 帧后面相隔1~2帧的编码帧
  • P帧采用运动补偿的方法传送它与前面的I或P帧的差值及运动矢量(预测误差)
  • 解码时必须将帧中的预测值与预测误差求和后才能重构完整的P帧图像
  • P帧属于前向预测的帧间编码。它只参考前面最靠近它的 I 帧或P帧
  • 由于P帧是参考帧,它可能造成解码错误的扩散
  • 由于是差值传送,P帧的压缩比较高

2.4.3 B帧

双向预测内插编码帧。B帧是双向差别帧,也就是B帧记录的是本帧与前后帧的差别(具体比较复杂,有4种情况,但我这样说简单些),换言之,要解码B帧。不仅要取得之前的缓存画面,还要解码之后的画面,通过前后画面的与本帧数据的叠加取得最终的画面。B帧压缩率高,但是解码时CPU会比较累。

B帧以前面的 I 或P帧和后面的P帧为参考帧,“找出”B帧“某点”的预测值和两个运动矢量,并取预测差值和运动矢量传送。接收端根据运动矢量在两个参考帧中“找出(算出)”预测值并与差值求和,得到B帧“某点”样值,从而可得到完整的B帧。

B帧的特点:

  • B帧是由前面的 I 或P帧和后面的P帧进行预测的
  • B帧传送的是它与前面的 I 或P帧和后面的P帧之间的预测误差及运动矢量
  • B帧是双向预测编码帧
  • B帧压缩比最高,因为它只反映并参考帧间运动主体的变化情况,预测比较准确
  • B帧不是参考帧,不会造成解码错误的扩散

2.5 GOP

在视频编码序列中,GOP即Group of picture(图像组),指两个I帧之间的距离,Reference(参考周期)指两个P帧之间的距离。一个I帧所占用的字节数大于一个P帧,一个P帧所占用的字节数大于一个B帧。

所以在码率不变的前提下,GOP值越大,P、B帧的数量会越多,画面细节更多,也就更容易获取较好的图像质量;Reference越大,B帧的数量越多,同理也更容易获得较好的图像质量。

需要说明的是,通过提高GOP值来提高图像质量是有限度的,在遇到场景切换的情况时,H.264编码器会自动强制插入一个I帧,此时实际的GOP值被缩短了。另一方面,在一个GOP中,P、B帧是由I帧预测得到的,当I帧的图像质量比较差时,会影响到一个GOP中后续P、B帧的图像质量,直到下一个GOP开始才有可能得以恢复,所以GOP值也不宜设置过大。

同时,由于P、B帧的复杂度大于I帧,所以过多的P、B帧会影响编码效率,使编码效率降低。另外,过长的GOP还会影响Seek操作(找I帧)的响应速度,由于P、B帧是由前面的I或P帧预测得到的,所以Seek操作需要直接定位,解码某一个P或B帧时,需要先解码得到本GOP内的I帧及之前的N个预测帧才可以,GOP值越长,需要解码的预测帧就越多,seek响应的时间也越长。

2.6 比特率

通常决定视频和音频文件的大小和质量:比特率越高,质量越好,文件大小也越大。

码率影响视频文件的大小,码率越大,视频文件越大;码率越小,视频文件越小。动态编码方式,把较高的采样率用于复杂的动态画面,而把较低的采样率用于静态画面,合理利用资源,达到画质与文件大小可兼得的效果。

码率 (kbps) = 文件大小 (MB) / 时间 (秒)

视频比特率以多种方式影响视频质量。首先,它是衡量任何视频文件大小的关键指标。其次,高视频比特率导致高视频质量,而低比特率导致差的视频质量。但是,使用极高的比特率只是浪费带宽。

帧率与画面的流畅度成正比。帧率越大,画面越流畅;帧率越小,画面有卡顿感。可变码率编码中,帧率也会影响文件的大小,帧率越高,每秒钟采集的画面越多,需要的码率越高,体积也越大。画面的帧率高于 16 时,人眼就会认为是连贯的,当帧率达到一定数值后,再增长的话,人眼也不容易察觉到有明显的流畅度提升了。


如果限定码率,那么帧率越高,编码器就必须加大对单帧画面的压缩比,就是通过降低画质来承载足够多的帧数。一般 fps = 20 就已经可以达到很好的用户体验了。

视频文件大小就是由码率决定的,而且是成正比。 码率的单位是kbps,也就是kb/s

简单来说,码率越高越清晰(不考虑其他条件的情况下)

3 封装

平常我们所看的视频文件后缀都有诸如mp4、rmvb、mkv、avi等等 (各种类型的具体差异这里就不阐述了),这些是文件的扩展名,其实这背后也意味着文件的封装格式

封装相当于一种储存视频信息的容器,我们所看的视频包含音频和视频两个部分(有时还包括字幕),H.264就是视频编码,aaC、mp3等是音频编码,我们把用H.264视频编码和MP3音频编码按照mkv的封装标准封装起来,这样我们看到的就是mkv格式的视频文件。

封装格式并不影响画质,它只负责把内部的视频轨和音频轨集成在一起,并不对内容造成影响。
 

4. 像素格式

4.1 RGB

4.2 YUB

YUV,是一种颜色编码方法。常使用在各个影像处理组件中。 YUV在对照片或影片编码时,考虑到人类的感知能力,允许降低色度的带宽。

三个分量:

  • Y表示明亮度(Luminance或Luma),也就是灰度值
  • U(Cb)表示色度(Chrominance)
  • V(Cr)表示浓度(Chroma)

UV一起描述影像色彩和饱和度,用于指定像素的颜色

对于 YUV 图像来说,并不是每个像素点都需要包含了 Y、U、V 三个分量,根据不同的采样格式,可以每个 Y 分量都对应自己的 UV 分量,也可以几个 Y 分量共用 UV 分量

YUV采样格式

YUV 4:4:4 采样,意味着 Y、U、V 三个分量的采样比例相同,因此在生成的图像里,每个像素的三个分量信息完整,都是 8 bit,也就是一个字节。

 YUV4:4:4  完全抽样,每一个Y对应一组UV分量,对于w*h的一幅图像,存储需要w*h*3*8bit= 3*w*h 字节

YUV4:2:2 表示2:1水平抽样,垂直2:1抽样,每两个Y共用一组UV分量,对于w*h的一幅图像,存储需要w*h*1*8+w*h*1*8/2bit +w*h*1*8/2bit=2*w*h 字节

YUV4:2:0 表示2:1的水平抽样,垂直2:1抽样,每四个Y共用一组UV分量对于w*h的一幅图像,存储需要w*h*8bit+w*h**8bit/4+w*h**8bit/4=3/2*w*h 字节

YUV4:1:1 表示4:1水平抽样,垂直完全抽样,每四个Y共用一组UV分量对于w*h的一幅图像,存储需要w*h**8bit+w*h**8bit/4+w*h**8bit/4=3/2*w*h 字节

(YUV420并不是说有一个分量不存在,而是对uv分量交错取样)
————————————————
版权声明:本文为CSDN博主「ELIO WONG」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_45196915/article/details/120954709


参考链接:

(15条消息) 视频编码格式、视频码率、视频帧率、分辨率的概念_视频码率和帧率_Wanderer001的博客-CSDN博客

https://blog.csdn.net/chengyq116/article/details/103602792

https://blog.csdn.net/qq_40733911/article/details/89949339文章来源地址https://www.toymoban.com/news/detail-639464.html

到了这里,关于视频的专业基础知识(一)常用的编码格式和参数的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 视频基础知识(一) 视频编码 | H.26X 系列 | MPEG 系列 | H.265

    视频基础知识(一) 视频编码 | H.26X 系列 | MPEG 系列 | H.265

    🚀 个人简介:CSDN「 博客新星 」TOP 10 , C/C++ 领域新星创作者 💟 作    者: 锡兰_CC ❣️ 📝 专    栏: 【音视频基础知识】 🌈 若有帮助,还请 关注➕点赞➕收藏 ,不行的话我再努努力💪💪💪   这里的编码和之前音频知识中提到的编码(数字化编码)不是一个编码

    2024年04月09日
    浏览(9)
  • 爬虫基本的编码基础知识

    爬虫基本的编码基础知识

    爬虫的编码基础知识包括以下几个方面: 网络请求:使用Python中的requests库或urllib库发送HTTP请求,获取网页内容。 解析网页:使用Python中的BeautifulSoup库或lxml库解析HTML或XML格式的网页内容,提取所需的数据。 数据存储:将爬取到的数据存储到本地文件或数据库中,常用的数

    2024年02月09日
    浏览(28)
  • 【基础知识】【模块介绍】电机编码器

    【基础知识】【模块介绍】电机编码器

    目录 概述  测速原理 波形分析 解码 单相计数 A相 B相 双相计数 转速计算 电机编码器常见的是AB相电机编码器,和旋转编码器类似,传送门 常见的有光电和霍尔等,属于非接触测转速的方法 不管是光电还是霍尔的编码器本质上都是在电机的旋转轴上放上一个码盘, 不同的是

    2023年04月08日
    浏览(13)
  • 【Java程序员面试专栏 专业技能篇】MySQL核心面试指引(一):基础知识考察

    【Java程序员面试专栏 专业技能篇】MySQL核心面试指引(一):基础知识考察

    关于MySQL部分的核心知识进行一网打尽,包括三部分: 基础知识考察、核心机制策略、性能优化策略 ,通过一篇文章串联面试重点,并且帮助加强日常基础知识的理解,全局思维导图如下所示 本篇Blog为第一部分:基础知识考察,子节点表示追问或同级提问 包括一些核心问题

    2024年01月22日
    浏览(12)
  • 一、Go基础知识21、GOPROXY设置镜像、go编码规范

    在设置 Go 语言的代理时,可以使用 GOPROXY 环境变量来指定代理服务器的地址。 Go 官方提供的中国国内镜像: https://goproxy.cn。 以下是如何设置 Goproxy 中国国内镜像的步骤: 在终端或命令提示符中执行以下命令: 如果你使用的是 Windows 平台的命令提示符,可以使用以下命令:

    2024年01月17日
    浏览(9)
  • JAVA基础知识-进制的介绍与书写格式

    JAVA基础知识-进制的介绍与书写格式

    代码 : 1.3.1 : 十进制到二进制的转换 公式 :除基取余使用源数据,不断的除以基数(几进制,基数就是几)得到余数,直到商为0,再将余数倒着拼起来即可。 需求 :将十进制数字11,转换为2进制。 实现方式 :源数据为11,使用11不断的除以基数,也就是2,直到商为0。 1.

    2024年02月14日
    浏览(9)
  • Oracle常用基础知识

    Oracle常用基础知识

    SQL语言是一种数据库语言  1、DDL:数据定义语言 create-创建  drop-删除 alter-修改 rename-重命名 truncate-截断 2、DML:数据操作语句 insert-插入 delete-删除 update-更新 select-查询 3、DCL:数据控制语句 grant-授权 revoke-回收权力 commit-提交事务 rollback-回滚事务 注:Oracle命令不区分大小写

    2024年02月12日
    浏览(13)
  • Unity | Shader基础知识(第九集:shader常用单词基础知识速成)

    Unity | Shader基础知识(第九集:shader常用单词基础知识速成)

    目录 一、顶点(Vertex)和法线(Normal) 二、UV信息 三、 基础数据种类 1 基础数据种类 2 基础数据数组 3 基础数据数组的赋值 4 对数据数组的调用 四、 基础矩阵 1 基础矩阵种类  2 对矩阵数组的调用 2.1对一个数据的调用  2.2对多个数据的调用  2.3对数据的赋值 五、基础纹理种

    2024年02月01日
    浏览(16)
  • 音频和视频基础知识

    音频和视频基础知识

    什么是声音: 声音是由物体振动产生的声波,通过介质(如空气、固体或液体)传播,并能被人的听觉器官所感知的波动现象。最初发出振动的物体被称为 声源 。 声音以波的形式传播,是一种机械波,其频率和振幅是描述波的重要属性,频率的大小与音高对应,而振幅影响

    2024年02月01日
    浏览(14)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包