视频的编解码格式
文章目录
- 视频的编解码格式
- 概念术语
- 视频处理流程
- 视频封装格式
- 视频编码格式
- 视频编解码器,视频容器和视频文件格式之间的区别
- 补充
- 视频码率
- 参考资料
视频的编解码格式

概念术语
-
两大组织主导视频压缩的组织及其联合(joint)组织
-
ITU-T(VCEG)
ITU-T的中文名称是国际电信联盟远程通信标准化组织(ITU-T for ITU Telecommunication Standardization Sector), 它是国际电信联盟管理下的专门制定远程通信相关国际标准的组织。ITU-T下属的第16研究组( ITU-T Study Group 16),又称为VCEG(Video Coding Experts Group )。它制定的标准有H.261、H.263、H.263+等,对于目前流行最广的,影响也是最大的H.264和H.265也有部分贡献。
-
ISO/IEC(MPEG)
国际标准化组织(ISO)是由各国标准化团体(ISO成员团体)组成的世界性的联合会,负责各种标准的制定。ISO/IEC下属的ISO/IEC JTC 1 SC 29 / WG 11组织,又称为MPEG(Moving Picture Experts Group)。它制定的关于视频编码方面标准有MPEG-1、MPEG-2、MPEG-4等。并且已经制定出来了最新的MPEG-7,并且计划公布MPEG-21。
-
JVT
联合视频小组JVT( Joint Video Team )成立于2001年,由来组VCEG和MEPG的视频编码专家组成,旨在开发高级视频编码规范。主要的工作成果是ITU-T Rec. H.264 | ISO/IEC 14496-10,即H.264/AVC/MPEG-4 part 10。
-
JCT-VC
视频编码联合协作团队JVT-VC(Joint Collaborative Team on Video Coding),是由VCEG和MPEG于2010年成立的视频编码专家组,旨在开发HEVC(High Efficiency Video Coding )标准。HEVC标准与当时最先进的AVC标准相比,新一代视频编码标准将进一步降低高质量视频编码所需的数据速率的50%。主要成果是H.265/HEVP part 2

-
-
JPEG
1986 年, ISO 和 CCITT 成立了联合图像专家组(Joint(ITU+ISO) Photographic Experts Group , JPEG),研究连续色调静止图像压缩算法国际标准, 1992 年 7 月通过了 JPEG 标准。
-
MPEG
1988 年 ISO/IEC 信息技术联合委员会成立了活动图像专家组(MPEG, Moving Picture Expert Group)。 1991 年公布了 MPEG-1 视频编码标准, 1994 年 11 月,公布了 MPEG-2 标准 。
-
H.263
1995 年, ITU-T 推出 H.263 标准,用于低于 64 Kbps 的低码率视频传输 。
-
MPEG-4
1999 年 12 月份, ISO/IEC 通过了“视听对象的编码标准”——MPEG-4,它除了定义视频压缩编码标准外,还强调了多媒体通信的交互性和灵活性。
-
H.264/AVC
2003 年 3 月, JVT正式公布了 H.264/AVC(Advanced Video Coding)视频压缩标准,H.264/AVC/MEPG-10 part 10是MPEG-4标准的一部分(MPEG-4 part10)。H.264能够在低码率情况下提供高质量的视频图像,在较低带宽上提供高质量的图像传输;H.264可以根据不同的环境使用不同的传输和播放速率,并且提供了丰富的错误处理工具,可以很好的控制或消除丢包和误码。
-
H.265/HEVC
2013年6月和11月, ITU-T 和 ISO/IEC 分别正式公布了新一代视频压缩标准H.265/HEVC(High Efficiency Video Coding)/MPEG-H part 2,H.265旨在在有限带宽下传输更高质量的网络视频,与H.264相比,同样的视觉质量的视频只占用一半的空间,仅需原先的一半带宽即可播放相同质量的视频,或者具有相同文件大小和比特率的视频可能看起来更好。
视频处理流程

一 个基本的视频处理和通信系统通常包括采集、预处理、视频编码、通信、图像处理以及显示等几个步骤。
视频封装格式
视频文件格式(或者视频封装格式)是一种用于在计算机系统上存储数字视频数据的文件格式。视频格式实质是视频文件的编码方式,几乎都会使用有损压缩的方式来存储视频,以减小文件的大小。
一个视频文件通常由包含视频编码格式(如VP9)的视频数据和音频编码格式(如Opus)的音频数据的容器(例如Matroska格式)组成。容器还可以包含同步信息、字幕和元数据(如标题)等。视频文件容器内的编码(encode)的视频和音频称为本质(essence)。
视频封装格式就是将已经编码处理的视频数据、音频数据以及字幕数据按照一定的方式放到一个文件中。我们现在看到的大部分视频文件,除了视频数据以外,还包括音频、字幕等数据,为了将这些信息有机地组合在一起,就需要一个容器进行封装,这个容器就是封装格式。严格意义上说,我们通常所说的是视频格式,指的就是视频封装格式
编码格式与封装格式的名称有时是一致的,例如MPEG、WMV、DivX、XviD、RM、RMVB等格式,既是编码格式,也是封装格式;有时却不一致,例如MKV是一种能容纳多种不同类型编码的视频、音频及字幕流的“万能”视频封装格式,同样以mkv为扩展名的视频文件,可能封装了不同编码格式的视频数据。
目前常见的视频封装格式如下:
| 视频文件格式 | Corporation/Organization |
|---|---|
| .WEBM | |
| .MPG, .MP2, .MPEG, .MPE, .MPV | MPEG |
| .OGG | OGGVobis(oggVorbis) |
| .MP4, .M4P, .M4V | MPEG |
| .AVI | Microsoft |
| .WMV | Microsoft |
| .MOV,.QT | Apple |
| .FLV, .SWF | Adobe |
| AVCHD | Sony & Panasonic |
视频编码格式
视频编码方式就是指通过特定的压缩技术,将某个视频格式的文件转换成另 一种视频格式文件的方式。视频编码格式来源于有关国际组织、民间组织和企业制定的视频编码标准。研究视频编码的主要目的是在保证一定视频清晰度的前提下缩小视频文件的存储空间。
由于视频编码的主要任务是缩小视频文件的存储空间,因此,视频编码又称视频压缩编码或视频压缩,简单地说就是去除视频数据中的冗余信息。可以对视频或音频进行编码(encode)和解码(decode )的程序(或硬件)称为编解码器( codec)。
目前常见的视频编码格式如下
| 视频编解码格式 | Corporation/Organization |
|---|---|
| MPEG-1 | MPEG |
| MPEG-2 | MPEG |
| MPEG-4 | MPEG |
| H.264 | JVT |
| H.265 | JCT-VC |
| WMV | Microsoft |
| MJEPG | MJEPG(Motion Joint Photographic Experts Group)/MJPG(缩写) |
| DivX/XviD | MPEG-4的衍生编码标准(后者是免费版) |
| VP9 |

视频编解码器,视频容器和视频文件格式之间的区别
视频文件由两部分组成:编解码器(codec)和容器( container)。
视频编解码器是用于对视频进行编码和解码的协议(单词编解码器来自“ enCOde / DECode”)。常见的编解码器包括H.264,MPEG-4和DivX。精心设计的编解码器具有很高的效率,或者可以在减小文件大小的同时保持质量。
容器(文件)格式(file format)是文件元数据和数据结构的定义,不包括视频的实际编码方式(编解码器确定)。容器文件保存使用编解码器编码的元数据和压缩视频数据。容器格式通常也称为“格式”,并反映在文件的扩展名中。常见的容器格式括.AVI,.MP4和.MOV。容器格式可以与不同的编解码器配对,这些编解码器会影响文件兼容的设备和程序。

-
实例说明
下面使用 ffmpeg 音视频处理库解析一段包含语音信息的视频片段,并输出相应的编解码和封装格式,完整代码如下
import ffmpeginput_video = './data/rafting.avi'if __name__ == "__main__":probe = ffmpeg.probe(input_video)video_stream_info = probe["streams"][0]audio_stream_info = probe["streams"][1]format_info = probe["format"]# show video codec infoprint("codec_type: {0} | codec_name: {1}| codec_long_name: {2}".format(video_stream_info["codec_type"],video_stream_info["codec_name"],# show audo codec info video_stream_info["codec_long_name"]))print("codec_type: {0} | codec_name: {1}| codec_long_name: {2}".format(audio_stream_info["codec_type"],audio_stream_info["codec_name"],audio_stream_info["codec_long_name"]))# show container(encapsulation) formatprint("filename:{0} | format_name: {1} | format_long_name: {2}".format(format_info["filename"],format_info["format_name"],format_info["format_long_name"]))输出结果
codec_type: video | codec_name: mpeg4| codec_long_name: MPEG-4 part 2 codec_type: audio | codec_name: mp3| codec_long_name: MP3 (MPEG audio layer 3) filename:./data/rafting.avi | format_name: avi | format_long_name: AVI (Audio Video Interleaved)容易得到以下信息:
- 视频文件的的视频流编解码格式为 MPEG-4 part 2
- 视频文件的的音频流编解码格式为 MP3 (MPEG audio layer 3)
- 视频文件的的(封装)格式为 AVI (Audio Video Interleaved)
补充
视频码率
视频码率(bit rate) 就是数据传输时单位时间传送的数据位数,一般我们用的单位是kbps即千位每秒。通俗一点的理解就是取样率,单位时间内取样率越大,精度就越高,处理出来的文件就越接近原始文件。
码率计算公式:
码率 = 采样率 × 位深度 × 通道数 码率 = \text{采样率} \times \text{位深度} \times \text{通道数} 码率=采样率×位深度×通道数
码率的单位:
-
bps
比特率表示每秒的比特(bit)数,单位 b i t / s bit/s bit/s。bps是 b i t / s bit/s bit/s的非标准缩写, 其中b代表bit, p表示percent( / / /), s表示second。
具体的换算公式如下
1 K b p s = 1000 b p s = 1000 b i t / s 1 M b p s = 1000 K b p s = 1000000 b p s = 1000000 b p s 1 G b p s = 1000 M b p s = 1000000 K b p s = 1000000000 b p s 1Kbps = 1000bps = 1000 bit/s \\ 1Mbps = 1000Kbps = 1000000bps = 1000000bps \\ 1Gbps = 1000Mbps = 1000000Kbps = 1000000000bps 1Kbps=1000bps=1000bit/s1Mbps=1000Kbps=1000000bps=1000000bps1Gbps=1000Mbps=1000000Kbps=1000000000bps
注意:这里为近似计算,在真实的情况中响应的倍数为1024。 -
Bps
我们可能还会遇到另一种格式的单位 B p s Bps Bps,表示每秒的字节(Byte)数, 1 字节对应8比特$ Byte = 8bit $, 容易得出
1 B p s = 1 B / s = 8 b i t / s = 8 b p s 1 Bps = 1 B/s = 8 bit/s = 8bps 1Bps=1B/s=8bit/s=8bps
同理,也可以换算成对应的单位 -
实例计算
对于CD格式音频:使用 44.1 k H z 44.1kHz 44.1kHz的采样率, 每个采样深度为 16 b i t 16bit 16bit,2个信道。
码率的计算结果如下:
44100 × 16 × 2 = 1411200 b p s = 1411.2 K b p s = 1.4112 M b p s 44100 \times 16 \times 2 = 1411200bps = 1411.2Kbps = 1.4112Mbps 44100×16×2=1411200bps=1411.2Kbps=1.4112Mbps
音频数据长度(不包括文件头或其他元数据)的总的大小可以使用以下公式计算:
bits_size = ( sample_rate × bit_depth × channels ) × time \text{bits\_size} = (\text{sample\_rate} \times \text{bit\_depth} \times \text{channels}) \times \text{time} bits_size=(sample_rate×bit_depth×channels)×time
以字节(byte)为单位的大小通过以位(bit)为单位的大小除以8得到:
b y t e _ s i z e = b i t _ s i z e 8 byte\_size = \frac{bit\_size}{8} byte_size=8bit_size
因此对于一个80分钟( 80 × 60 = = 4800 80\times 60 == 4800 80×60==4800)的音频数据,所占的存储空间的大小计算如下:
44 , 100 × 16 × 2 × 4800 8 = 846 , 720 , 000 bytes ≈ 847 MB {\displaystyle {\frac {44,100\times 16\times 2\times 4800}{8}}=846,720,000\ {\text{bytes}}\approx 847\ {\text{MB}}} 844,100×16×2×4800=846,720,000 bytes≈847 MB
参考资料
- 参考资料一
- 参考资料二
- 参考资料三
- 参考资料四
- 参考资料五
- 参考资料六
- 参考资料七
相关文章:
视频的编解码格式
文章目录 视频的编解码格式概念术语视频处理流程视频封装格式视频编码格式视频编解码器,视频容器和视频文件格式之间的区别补充视频码率 参考资料 视频的编解码格式 概念术语 两大组织主导视频压缩的组织及其联合(joint)组织 ITU-T(VCEG) ITU-T的中文名称是国际电信…...
网络资源模板--Android Studio 实现简易新闻App
目录 一、项目演示 二、项目测试环境 三、项目详情 四、完整的项目源码 一、项目演示 网络资源模板--基于Android studio 实现的简易新闻App 二、项目测试环境 三、项目详情 登录页 用户输入: 提供账号和密码输入框,用户可以输入登录信息。支持“记…...
LabVIEW提高开发效率技巧----离线调试
离线调试是LabVIEW开发中一项重要的技巧,通过使用Simulate Signal Express VI生成虚拟数据,开发者能够有效减少对实际硬件的依赖,加速开发过程。这种方法不仅可以提高开发效率,还能降低成本,增强系统的灵活性。 离…...
6N137S1取反电路图
文章目录 一、前言二、6N137S1性能介绍三、应用电路图 一、前言 在硬件电路设计中需要用到隔离电路,但此引脚输出为WS2812的信号,频率有840khz,所以需要使用逻辑光耦,选用6N137S1光耦,速率能达到10Mhz,能满…...
Nullinux:一款针对Linux操作系统的安全检测工具
关于Nullinux Nullinux是一款针对Linux操作系统的安全检测工具,广大研究人员可以利用该工具针对Linux目标设备执行网络侦查和安全检测。 该工具可以通过SMB枚举目标设备的安全状况信息,其中包括操作系统信息、域信息、共享信息、目录信息和用户信息。如…...
学会这 5 个 AI 神器做字体设计,保证让你私单接到爆!
最近我在浏览 AI 绘画的相关内容时,发现不少图像都是与字体相关的,而且其中一些呈现出的艺术特效很是让人眼前一亮。 放在之前,我们需要掌握一些专业技能、并花费大量时间才能设计出精致酷炫的艺术字,但是现在却可以轻松用文本直…...
《Vue3 踩坑》expose 和 defineExpose 暴露属性或方法注意事项
选项式写法 使用 选项式API - 状态选项 - expose 一定要注意: 接下来,进一步看示例说明: 设置 expose 仅显示列出的属性/方法才能被父组件调用;代码第 2 行,父组件可访问属性 a 和 方法 myFunc01,不可访…...
10.13论文阅读
通过联合学习检测和描述关键点增强可变形局部特征 摘要 局部特征提取是计算机视觉中处理图像匹配和检索等关键任务的常用方法。大多数方法的核心理念是图像经历仿射变换,忽略了诸如非刚性形变等更复杂的效果。此外,针对非刚性对应的新兴工作仍然依赖于…...
六西格玛黑带项目:TBX-02无人机飞行稳定性提升——张驰咨询
一、项目背景与问题定义 TBX-02是该公司最新发布的消费级无人机,面向摄影爱好者和户外探险者。产品上市后,通过客户反馈和实际测试数据发现,该无人机在复杂飞行环境中,如强风或快速移动时,存在明显的飞行抖动和稳定性…...
git clone 国内镜像
比如 git clone https://github.com/HKUST-Aerial-Robotics/A-LOAM.git 改成 git clone https://gitclone.com/github.com/HKUST-Aerial-Robotics/A-LOAM.git...
【服务器虚拟化】
服务器虚拟化是一种将一台物理服务器划分为多个虚拟服务器的技术,每个虚拟服务器都可以独立运行操作系统和应用程序。下面是一个详细的教程,以KVM虚拟化为例,介绍了具体的操作步骤和执行命令。 准备工作 a. 确保你的服务器支持虚拟化技术&…...
【RAG】aiops第一名方案-EasyRAG:自动网络运营的高效检索增强生成框架
来看一个RAG比赛方案,提出了一个名为EasyRAG的框架,用于自动化网络操作的检索增强生成。该框架旨在解决网络操作中信息检索和生成效率低、准确性差的问题。研究难点包括:如何在保证准确性的前提下提高检索和生成的效率;如何实现简…...
3款备受好评的电脑数据恢复软件,赶紧收藏以备不时之需
在日常工作和生活中,电脑数据丢失是许多人都会遇到的问题。无论是误删文件、硬盘格式化,还是系统崩溃,都可能导致重要数据的丢失。所以,好用的数据恢复软件必不可少。 但在如今的市场上数据恢复软件琳琅满目,它们在恢复…...
.net core 实现多线程方式有哪些
在 .NET Core 中,有多种方式可以实现多线程编程。这些方式包括使用 Thread 类、Task 和 Parallel 类库。每种方法都有其适用场景和优缺点。下面我将通过代码示例来展示这些不同的多线程实现方式。 1. 使用 Thread 类 Thread 类是 .NET 中最基本的多线程实现方式。…...
《Linux从小白到高手》综合应用篇:深入理解Linux磁盘及IO优化
1. 前言 其实磁盘优化和IO优化,我在前面的其他Linux调优博文中已经讲述过或者涉及过了,但是太过零碎,所以本篇就来集中深入讨论下Linux磁盘和IO调优。 2.磁盘调优 结合我多年的经验,本人认为磁盘调优最重要的是读写性能的提升和…...
【Linux】内存文件系统的I/O、重定向
文章目录 1. 系统中的文件2. 回顾C中的文件接口3. 文件类的系统调用3.1 open3.2 文件描述符 4. IO的基本过程5.重定向5.1 引入重定向5.2 系统中的重定向接口 6. 缓冲区问题7. 简单版shell的实现 1. 系统中的文件 在学习完Linux权限后,我们清楚的知道:文…...
力扣10.18
1463. 摘樱桃 II 给你一个 rows x cols 的矩阵 grid 来表示一块樱桃地。 grid 中每个格子的数字表示你能获得的樱桃数目。 你有两个机器人帮你收集樱桃,机器人 1 从左上角格子 (0,0) 出发,机器人 2 从右上角格子 (0, cols-1) 出发。 请你按照如下规则…...
cs木马图形化界面出现问题处理
一个月多月没用cs木马了,发现打开客户端之后显示不出图形化界面,且出现下面这样的报错。 、 最后发现是java版本的问题,kali的java自动更新了。把原来的openjdk11改到了openjdk23。 解决方法: 输入: sudo update-…...
数据结构与算法 - 树 #数的概念 #二叉树 #堆 - 堆的实现/堆排序/TOP-K问题
文章目录 前言 一、树 (一)、概念 1、树的定义 (二)、树的定义 1、树为什么是递归定义的? 2、如何定义树(如何表达一棵树) 解决方案一:假设我们得知该树的度 解决方案二:顺序表 解决方案三:左孩子右兄弟表示法 二、二叉…...
Git推送被拒
今天开发完成一个新的需求,将自己的分支合并到test分支后,推送到远程仓库,结果显示推送被拒: 原因是因为有人更新了test分支的代码,我在合并之前没有拉取最新的test分支代码,所以他提示我“推送前需要合并…...
观成科技:隐蔽隧道工具Ligolo-ng加密流量分析
1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具,该工具基于TUN接口实现其功能,利用反向TCP/TLS连接建立一条隐蔽的通信信道,支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式,适应复杂网…...
国防科技大学计算机基础课程笔记02信息编码
1.机内码和国标码 国标码就是我们非常熟悉的这个GB2312,但是因为都是16进制,因此这个了16进制的数据既可以翻译成为这个机器码,也可以翻译成为这个国标码,所以这个时候很容易会出现这个歧义的情况; 因此,我们的这个国…...
OpenLayers 可视化之热力图
注:当前使用的是 ol 5.3.0 版本,天地图使用的key请到天地图官网申请,并替换为自己的key 热力图(Heatmap)又叫热点图,是一种通过特殊高亮显示事物密度分布、变化趋势的数据可视化技术。采用颜色的深浅来显示…...
生成 Git SSH 证书
🔑 1. 生成 SSH 密钥对 在终端(Windows 使用 Git Bash,Mac/Linux 使用 Terminal)执行命令: ssh-keygen -t rsa -b 4096 -C "your_emailexample.com" 参数说明: -t rsa&#x…...
selenium学习实战【Python爬虫】
selenium学习实战【Python爬虫】 文章目录 selenium学习实战【Python爬虫】一、声明二、学习目标三、安装依赖3.1 安装selenium库3.2 安装浏览器驱动3.2.1 查看Edge版本3.2.2 驱动安装 四、代码讲解4.1 配置浏览器4.2 加载更多4.3 寻找内容4.4 完整代码 五、报告文件爬取5.1 提…...
Redis的发布订阅模式与专业的 MQ(如 Kafka, RabbitMQ)相比,优缺点是什么?适用于哪些场景?
Redis 的发布订阅(Pub/Sub)模式与专业的 MQ(Message Queue)如 Kafka、RabbitMQ 进行比较,核心的权衡点在于:简单与速度 vs. 可靠与功能。 下面我们详细展开对比。 Redis Pub/Sub 的核心特点 它是一个发后…...
在Ubuntu24上采用Wine打开SourceInsight
1. 安装wine sudo apt install wine 2. 安装32位库支持,SourceInsight是32位程序 sudo dpkg --add-architecture i386 sudo apt update sudo apt install wine32:i386 3. 验证安装 wine --version 4. 安装必要的字体和库(解决显示问题) sudo apt install fonts-wqy…...
return this;返回的是谁
一个审批系统的示例来演示责任链模式的实现。假设公司需要处理不同金额的采购申请,不同级别的经理有不同的审批权限: // 抽象处理者:审批者 abstract class Approver {protected Approver successor; // 下一个处理者// 设置下一个处理者pub…...
Java求职者面试指南:Spring、Spring Boot、Spring MVC与MyBatis技术解析
Java求职者面试指南:Spring、Spring Boot、Spring MVC与MyBatis技术解析 一、第一轮基础概念问题 1. Spring框架的核心容器是什么?它的作用是什么? Spring框架的核心容器是IoC(控制反转)容器。它的主要作用是管理对…...
消防一体化安全管控平台:构建消防“一张图”和APP统一管理
在城市的某个角落,一场突如其来的火灾打破了平静。熊熊烈火迅速蔓延,滚滚浓烟弥漫开来,周围群众的生命财产安全受到严重威胁。就在这千钧一发之际,消防救援队伍迅速行动,而豪越科技消防一体化安全管控平台构建的消防“…...
