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

article/2025/10/15 20:41:35

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分辨率,分辨率影响视频图像的大小,与视频图像大小成正比:视频分辨率越高,图像越大,对应的视频文件本身大小也会越大。

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


http://chatgpt.dhexx.cn/article/W8aL4H54.shtml

相关文章

常见视频编码格式解析

常见视频编码格式解析 文章目录 常见视频编码格式解析1、MPEG2-TS编码技术1.1. MPEG-TS简介1.2. 基本概念及TS流概述1.3. 基本流程1.4. TS流传输包(简称TS包)结构分析1.4.1. TS包包头1.4.2. TS包净荷部分1.5. PS节目流2、MPEG-4编码技术2.1. MPEG-4概述2.2. MPEG-4各部分2.3.…

视频编码全流程

视频编解码用到的一些算法: 正反傅里叶变换、fft算法 dct变换、快速dct变换 如何自己实现一个视频编解码器: (1)取一帧作为I帧,类似jpeg压缩编码,也就是 rgb转yuv,然后dct去除高频信息。因为这种压缩会造成边界bloc…

视频编码技术详解

1、引言 如今我们所处的时代,是移动互联网时代,也可以说是视频时代。从快播到抖音,从“三生三世”到“延禧攻略”,我们的生活,被越来越多的视频元素所影响。 而这一切,离不开视频拍摄技术的不断升级&#x…

FIO源码解读测试

在磁盘测试中,fio是最常用的测试的工具,其下载网址为https://github.com/axboe/fio; 对于fio,其测试命令有许多,这个大家很容易就可以查到,此处不讲解具体的测试命令, 而是讲一下大概的源码框架。 Fio的入口函数在fio.…

fio引发的一些问题

fio引发的一些问题 奇怪的255扇区在nvme驱动中插入打印语句直接编译模块加载源码编译内核 查找内核源码 奇怪的255扇区 由于块设备驱动项目需要测试读写速度,故使用fio工具,没想着深入了解,简单测个速就可以 使用tldr命令得到测试磁盘读写的…

【fio】关于磁盘性能测试

一、关于磁盘 磁盘是可以持久化存储的设备,根据存储介质的不同,常见磁盘可以分为两类:机械磁盘和固态磁盘。 第一类,机械磁盘,也称为硬盘驱动器(Hard Disk Driver),通常缩写为 HDD。…

【测试】 FIO:ceph/磁盘IO测试工具 fio(iodepth深度)

目录 随看随用 NAS文件系统测试 块系统测试 FIO用法 FIO介绍 FIO 工具常用参数: FIO结果说明 I/O 的重放(录下实际工况的IO,用fio重放) fio工作参数可以写入配置文件 fio的iodepth参数说明 IO状态监控: Ios…

FIO详解

fio - Flexible IO Tester 一、服务器配置: 由于我们想通过fio得到SSD真实的参数信息,因此我们需要服务器BIOS一些参数的配合,以便能更好的体现硬盘的性能。 以华为1288HV5为例: 二、fio 1.安装 a.下载地址:htt…

FIO 存储性能压测

一、 FIO简介 FIO 是一个多线程IO生成工具,可以生成多种IO模式(随机、顺序、读、写四大类),用来测试磁盘设备的性能。GFIO是FIO的图形监测工具,它提供了图形界面的参数配置,和性能监测图像。 在github上的…

磁盘性能测试工具-FIO的安装及使用

文章目录 FIO介绍FIO安装在线安装离线安装 磁盘测试命令行方式测试结果说明命令参数说明配置文件方式 dd命令介绍使用方法 FIO介绍 FIO是一款测试IOPS的工具,用于对磁盘进行压力测试和验证,磁盘I/O是检查磁盘性能的重要指标,可以按照负载情况…

NuGet学习笔记(1)——初识NuGet及快速安装使用

http://kb.cnblogs.com/page/143190/ 1. NuGet是什么? NuGet is a Visual Studio 2010 extension that makes it easy to add, remove, and update libraries and tools in Visual Studio projects that use the .NET Framework. This topic lists documentation t…

Nuget路径问题

VS NetGet包管理器 问题场景: 装了两遍VS2019,第一次装D盘卸载了,然后装C盘,结果生成 .netCore项目时就悲剧了,报错:error MSB4018: “ResolvePackageAssets”任务意外失败。Microsoft.PackageDependencyResolution.t…

使用nuget 打包并上传 nuget.org

使用nuget 打包并上传 nuget.org 一、准备工作二、打包你的项目三、上传 nug.org 服务器 前言:今天又玩了个新东西,那就是 使用nuget 打包并上传 nuget.org,在这里即时记录一下,废话不多说,直接上教程。 一、准备工作…

nuget 的生成、发布、使用和更新

nuget 的生成、发布、使用和更新 一、nuget 的生成1.生成.dll1.1创建.net项目(类库)1.2 打包生成 .dll 2.打包成.nupkg文件2.1安装 [NuGetPackageExplorer.exe](https://github.com/NuGetPackageExplorer/NuGetPackageExplorer)程序2.2打开软件,完成打包…

修改NuGet包默认存放位置

默认情况下,NuGet下载的包存放在系统盘(C盘中),这样一来,时间长了下载的包越多,C盘占用的空间也就越多。 1、问题描述 默认情况下,NuGet下载的包存放在系统盘(C盘中,一般在路径C:\Users\用户\.nuget\packag…

Nuget使用简介

1.什么是Nuget Nuget是 ASP .NET Gallery 的一员。NuGet 是免费、开源的包管理开发工具,专注于在 .NET 应用开发过程中,简单地合并第三方的组件库。 当需要分享开发的工具或是库,需要建立一个Nuget package,然后把这个package放到…

Nuget的使用说明

在做项目的时候,经常需要添加一些第三方引用,Visual Studio 2019环境下,最推荐的是Nuget安装方式,好处就是可以将所有依赖的包全部打包下载安装。 1.nuget.org,搜索需要的nuget包,复制相应的安装命令&…

NuGet的了解

目录 1..NuGet 的使用目的 2..Net 的工具 NuGet 1.NuGet 包的下载 2.NuGet 包的分析 3.NuGet 的使用 1.通过命令行使用 2.在 visual studio 里通过图形化界面进行添加。 3.在添加包的时候 4.特点 1..NuGet 的使用目的 在引入第三方程序集(dll)的…

初识NuGet - 概念, 安装和使用

1. NuGet是什么? NuGet is a Visual Studio 2010 extension that makes it easy to add, remove, and update libraries and tools in Visual Studio projects that use the .NET Framework. This topic lists documentation that will help you use NuGet packages…

NuGet的介绍及使用

介绍 NuGet是什么? NuGet是.NET的软件包管理器。NuGet客户端工具提供了生成和使用软件包的功能。NuGet 是所有软件包作者和使用者都使用的中央软件包存储库。 下面是百度百科的介绍 在我看来NuGet类似于Java的Maven和Javascript的npm。 使用 1、通过图形化客户端安…