视频的编解码格式

news2024/10/23 17:30:18

文章目录

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


视频的编解码格式

概念术语

  • 两大组织主导视频压缩的组织及其联合(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                   
.WEBMGoogle
.MPG, .MP2, .MPEG, .MPE, .MPVMPEG
.OGGOGGVobis(oggVorbis)
.MP4, .M4P, .M4VMPEG
.AVIMicrosoft
.WMVMicrosoft
.MOV,.QTApple
.FLV, .SWFAdobe
AVCHDSony & Panasonic

视频编码格式

视频编码方式就是指通过特定的压缩技术,将某个视频格式的文件转换成另 一种视频格式文件的方式。视频编码格式来源于有关国际组织、民间组织和企业制定的视频编码标准。研究视频编码的主要目的是在保证一定视频清晰度的前提下缩小视频文件的存储空间。

​ 由于视频编码的主要任务是缩小视频文件的存储空间,因此,视频编码又称视频压缩编码或视频压缩,简单地说就是去除视频数据中的冗余信息。可以对视频或音频进行编码(encode)和解码(decode )的程序(或硬件)称为编解码器( codec)。

​ 目前常见的视频编码格式如下

视频编解码格式                   Corporation/Organization                   
MPEG-1MPEG
MPEG-2MPEG
MPEG-4MPEG
H.264JVT
H.265JCT-VC
WMVMicrosoft
MJEPGMJEPG(Motion Joint Photographic Experts Group)/MJPG(缩写)
DivX/XviDMPEG-4的衍生编码标准(后者是免费版)
VP9Google

视频编解码器,视频容器和视频文件格式之间的区别

​ 视频文件由两部分组成:编解码器(codec)和容器( container)。

​ 视频编解码器是用于对视频进行编码和解码的协议(单词编解码器来自“ enCOde / DECode”)。常见的编解码器包括H.264,MPEG-4和DivX。精心设计的编解码器具有很高的效率,或者可以在减小文件大小的同时保持质量。

​ 容器(文件)格式(file format)是文件元数据和数据结构的定义,不包括视频的实际编码方式(编解码器确定)。容器文件保存使用编解码器编码的元数据和压缩视频数据。容器格式通常也称为“格式”,并反映在文件的扩展名中。常见的容器格式括.AVI,.MP4和.MOV。容器格式可以与不同的编解码器配对,这些编解码器会影响文件兼容的设备和程序。

  • 实例说明

    下面使用 ffmpeg 音视频处理库解析一段包含语音信息的视频片段,并输出相应的编解码和封装格式,完整代码如下

    import ffmpeg
    
    input_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 info
        print("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) format
        print("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/sbps是 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 bytes847 MB

参考资料

  • 参考资料一
  • 参考资料二
  • 参考资料三
  • 参考资料四
  • 参考资料五
  • 参考资料六
  • 参考资料七

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2213188.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【wpf】05 几种容器动态创建控件的对比

今天利用一点时间,对wpf中在常用容器中动态创建控件的方法进行了学习和测试,本篇文章用来记录这个过程及一些心得。 1 容器说明 用于对比的wpf常用容器类包括如下七种: StackPanelGridScrollViewerWrapPanelCanvasUniformGridDockPanel 以…

Vue实现动态表单

使用 Vue 实现动态表单 在前端开发中,我们经常遇到根据用户输入动态生成不同表单项的需求。这类动态表单不仅提升了用户体验,还可以让复杂的交互流程变得简洁而高效。本文将详细讲解如何使用 Vue 3 的响应式特性,逐步构建一个递归动态表单。…

服务器虚拟化的好处有哪些

1.什么是服务器虚拟化? 在计算服务中,有7种虚拟化包括硬件虚拟化(即服务器虚拟化)、软件虚拟化、内存虚拟化、存储虚拟化、数据虚拟化、网络虚拟化和桌面虚拟化。 其中,服务器虚拟化的初衷是让Windows和Linux操作系统…

【环境搭建】更换电脑后的开发环境怎么重建

目录 🍸前言 🍻一、系统配置检查 🍺二、开发环境搭建 🍹三、章末 🍸前言 小伙伴们大家好,这次文章跟技术没有关联,因为最近刚更换了装备,开发环境啥的残缺不全,也不能…

多倍体重测序-经典分析思路

你知道吗?甘蔗不仅是全球糖分的主要来源,而且它还隐藏着许多未被发掘的秘密。今天,我们就来聊聊科学家们是如何通过全基因组测序技术解开甘蔗品种改良之谜的! 广东省科学院南繁种业研究所在《The Plant Journal》杂志上发表题为“…

vue3项目在vue平台下添加nvue文件会报[plugin:vite:nvue-css]

项目运行是会报大量的[plugin:vite:nvue-css]作警告 解决办法:在app.vue引入公共css文件外添加#ifndef APP-PLUS-NVUE条件 // #ifndef APP-PLUS-NVUE import "uview-plus/index.scss"; /*每个页面公共css */ import "colorui/main.css"; //#en…

微信小程序考试系统(lw+演示+源码+运行)

摘要 随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。本文介绍了微信小程序考试系统的开发全过程。通过分析微信小程序考试系统管理的不足,创建了一个计算机管理微信小程序考试系统的方案。文章介绍了微信小程序考…

Leetcode 1168. 水资源分配优化

1.题目基本信息 1.1.题目描述 村里面一共有 n 栋房子。我们希望通过建造水井和铺设管道来为所有房子供水。 对于每个房子 i,我们有两种可选的供水方案:一种是直接在房子内建造水井,成本为 wells[i – 1] (注意 -1 ,…

双十一买什么东西比较好?2024双11好物攻略诚意分享

双十一活动已经准备要开始了,很多人摩拳擦掌准备入手划算好物,但是有的人也比较迷茫,双十一买什么东西比较好?为了帮助大家在这场购物狂欢中理性消费,提升购物体验,我们精心整理了一份2024双11好物攻略诚意…

扭亏年只是开始,赛力斯的成长性仍在继续

赛力斯的三季度业绩报告发出之后,不少股民在评论区如释重负: 大雪压我两三年,我笑大雪轻如棉。 业绩预告显示,赛力斯2024年前三季度营业收入同比大增518%到559%,达1030.0亿元到1100.0亿元;同时净利润连续…

2018年计算机网络408真题解析

第一题: 解析:TCP/IP体系结构应用层常用协议及其相应的运输层协议 TCP协议是面向连接可靠数据传输服务,UDP无连接不可靠的数据传输服务,IP无连接不可靠的数据连接服务。 FTP协议,SMTP协议和HTTP协议使用TCP协议提供的面…

防爆手机能有多轻薄?AORO A29小身躯在石油化工有大作为!

防爆手机能有多轻薄?AORO A29防爆手机机身尺寸为177.4*81.5*12.75mm,重量仅为334.5g,其轻薄的设计在一众“砖头”工业防爆手机中脱颖而出。 轻薄是不是意味着功能削减?AORO A29防爆手机在保持轻薄体态的同时,集成了九…

数据结构(七大排序)

前言 前话:排序在我们日常中很常见,但在不同的场合我们需要选择不同的排序,因为每个排序都有不同的使用场景,不同的时间复杂度和空间复杂度;常见的排序分为七种, 插入排序、选择排序、交换排序和归并排序&…

2024 年 Mac 下这些生产力工具,好用到哭

每段关系最终都会结束 即使不是因为别的原因 也会因为死亡 我只知道 你不对她说出来 她就永远不知道 你的心意 她那天离开的时候 才知道一个道理 有时候 保护一样重要的东西的方式 不是守在她旁边 而是离开她 离得远远的远到看起来谁也 不在乎谁一样 今天呢&#x…

FPGA上板调试方式总结----VIO/ILA

在Vivado中,VIO(Virtual Input/Output)是一种用于调试和测试FPGA设计的IP核,它允许设计者通过JTAG接口实时读取和写入FPGA内部的寄存器,从而检查设计的运行状态并修改其行为。VIO IP核提供了一个简单易用的接口&#x…

Redis总结(官方文档解读)

定义 Redis是一个开源的,基于内存的数据结构存储系统,可以用作数据库、缓存和消息中间件。 特征 高性能 支持丰富的数据类型 丰富的操作类型,操作是原子性的 支持周期性持久化 支持分布式 开源免费,社区活跃 数据类型 数据…

图片加水印怎么弄?四款软件供你选择!

在这个信息爆炸的时代,每一张图片都可能成为你创意与努力的结晶。然而,网络上的复制粘贴如此轻易,如何有效保护自己的原创作品,防止未经授权的盗用,成为了每位创作者必须面对的问题。别担心,今天我们就来揭…

[Linux系统编程]线程概念,三级映射,线程操作函数

一.线程概念 线程概念: 进程:有独立的 进程地址空间。有独立的pcb。 进程是分配资源的最小单位。 线程:没有独立的进程地址空间。有独立的pcb。 进程是cup执行的最小单位。 线程有线程id和线程号,线程id是用于进程内部标识线程…

2024年10款超好用的图纸加密软件推荐|企业常用图纸加密软件分享

在数字化时代,图纸作为企业的关键技术资产,承载着大量敏感信息,泄露这些图纸不仅可能导致重大经济损失,还可能危及企业的市场竞争力。因此,选择一款合适的图纸加密软件,对企业而言至关重要。为了帮助企业保…

【C#网络编程】基础概念2

文章目录 网络、数据包和协议网络数据包协议TCP、UDP 地址客户端和服务器套接字 网络、数据包和协议 计算机网络通过通信通道互连的机器组成,通常把这些机器称为主机和路由器,主机是是运行应用程序(如 Web 浏览器)的计算机。路由器…