-
2022-01-28 10:01:06
一、封装格式
要了解音视频编解码原理,首先需要知道什么是封装格式?
所谓封装格式,就是将已经编码压缩好的视频轨和音频轨按照一定的格式封装到一个文件中,一般情况下,不同的封装格式对应不同文件后缀,例如:
视频文件格式 视频封装格式 .avi AVI(Audio Video Interleaved) .mp4 .3gp .mpeg .mpg MPEG(Moving Picture Experts Group) .flv Flash Video .rm .rmvb Real Video .wmv .asf WMV(Windows Media Video) .mkv Matroska .mov QuickTime File Format 播放器播放视频文件时,会先根据其封装格式进行解封装,获取到其中的视频数据和音频数据,然后进行解码播放。
注:
1. 虽然封装格式不同,但最终其中的音频和视频数据还是原来的编码数据
2. 手动修改文件后缀并不会影响其封装格式
二、音视频编码方式
既然视频文件是由视频轨和音频轨通过封装格式组成的,那么视频轨和音频轨数据又是怎么来的呢?继续探索...
不能将摄像头等方式采集到的数据直接保存为视频数据,因为那将是灾难性的,会造成视频数据太过庞大,可能一个几秒钟的视频就上百M,因此必须对采集到的数据进行编码,音频也是如此。
1.视频编码方式
所谓视频编码,就是通过摄像头、录屏等方式采集的像素数据(RGB、YUV等)压缩成视频码流,从而降低视频的数据量。知名的视频编码方式主要有以下几种:
编解码方式 发表公司 发表时间 H.264(AVC) MPEG/ITU-T 2003 H.265(HEVC) MPEG/ITU-T 2013 VP8 Google 2008 VP9 Google 2013 VC-1 微软 2006 AVS 中国 2002 2.音频编码方式
同视频编码类似,音频编码是将通过麦克风等方式采集到的采样数据(PCM等)压缩成音频码流,降低音频的数据量,常用的音频编码方式有以下几种:
名称 发表公司 发表时间 常用领域 AAC MPEG 1997 各领域 MP3 MPEG 1993 各领域 WMV 微软 1999 微软平台 AC-3 Dolby Inc. 1992 电影 本节主要对音视频封装格式和编码方式稍做简介,以便由表入里的解开音视频的神秘面纱,本节就介绍到这里,下一节介绍H.264帧内编码原理
更多相关内容 -
音视频编解码原理基础
2020-03-23 18:18:461.音视频播放器原理 音视频技术主要包含以下几点:封装技术,视频压缩编码技术和音频编码压缩技术。 如果解码本地视频,则不需要解协议:解封装->解码音视频->音视频同步; 解协议的作用:将流媒体协议的...1.音视频播放器原理
音视频技术主要包含以下几点:封装技术,视频压缩编码技术和音频编码压缩技术。
如果解码本地视频,则不需要解协议:解封装->解码音视频->音视频同步;
解协议的作用:将流媒体协议的数据解析为标准的响应的封装格式的数据,音视频在网络上传输时常常采用各种流媒体协议,例如HTTP、RPMP和MMS等等,这些协议在传输音视频时也会传输一些信令数据,这些信令数据包含播放、暂停和停止等,或者对网络状态的描述。解协议的过程就是去掉这些信令指令,只保留音视频数据。例如:采用RTMP协议发送的数据,经过解协议后,得到输出结果为flv的封装格式数据。
解封装的作用: 将输入的封装格式的数据,分离成音频流压缩的数据和视频流压缩的数据,封装格式种类很多,例如MP4,MKV,RMVB,TS,FLV,AVI等等。它的作用就是将已经压缩编码的视频数据和音频数据按照一定的格式放到一起。例如:FLV封装格式的数据解封装后,输出H264的视频码流和AAC的音频码流。
解码的作用: 就是将音频/视频的压缩编码数据,解码成为非压缩的音视/视频的原始数据。音频的压缩编码标准包含AAC,MP3,AC-3等,视频的压缩编码标准包含H264,MPEG2,VC-1等等。解码的过程是整个系统中总重要和最复杂的一个环节,通过解码,压缩的视频数据输出为非压缩的颜色数据,例如YUV420P、RGB等等,压缩的音频数据输出为非压缩的音频抽样数据,例如PCM的数据。
音视频同步的作用: 将解封装过程得到的参数信息和同步解码得到的音视频数据,推送到系统的显卡和声卡显示出来。
-
音视频编解码原理(六) 硬解MediaCodec
2022-02-01 17:45:59它是Android低层多媒体架构的一部分,通常与MediaExtractor、MediaMuxer、AudioTrack结合使用,能够编解码诸如H.264、H.265、AAC、3gp等常见的音视频格式。广义而言,MediaCodec的工作原理就是处理输入数据以产生...MediaCodec原理
MediaCodec类Android提供的用于访问低层多媒体编/解码器接口,它是Android低层多媒体架构的一部分,通常与MediaExtractor、MediaMuxer、AudioTrack结合使用,能够编解码诸如H.264、H.265、AAC、3gp等常见的音视频格式。广义而言,MediaCodec的工作原理就是处理输入数据以产生输出数据。具体来说,MediaCodec在编解码的过程中使用了一组输入/输出缓存区来同步或异步处理数据:首先,客户端向获取到的编解码器输入缓存区写入要编解码的数据并将其提交给编解码器,待编解码器处理完毕后将其转存到编码器的输出缓存区,同时收回客户端对输入缓存区的所有权;然后,客户端从获取到编解码输出缓存区读取编码好的数据进行处理,待处理完毕后编解码器收回客户端对输出缓存区的所有权。不断重复整个过程,直至编码器停止工作或者异常退出。
MediaCodec发展历程
Android 4.1 API 16 提出首个版本的MediaCodec
Android 4.3 API 18 扩展了一种通过Surface提供输入的方法createSurface
Android 5.0 API 21 引入了“异步模式”
这是官网提供的MediaCodec编解码流程图:
解释一下大致的意思:
input侧:编(解)码器提供空闲的输入端队列buffer,将需要编(解)码的未压缩yuv数据(压缩H.264数据)丢入到空闲的buffer中,提交给编(解)码器
output侧:编(解)码器将编(解)码完成的未压缩yuv数据(压缩H.264数据)丢入到输出端队列buffer中,可以通过buffer获得编(解)码完成的数据,消费掉buffer中的数据后,将buffer归还给解码器。
-
音视频编解码原理(二) H.264帧内编码原理
2022-01-28 10:58:46上一章介绍了音视频封装格式和音视频编码格式,本章开始介绍H.264原理 说到H.264,首先不得不提到作为奠基鼻祖的H.261,其主要的贡献有: 1.帧内编码 第一次根据帧内的像素趋于统一而采用帧内预测编码技术 2.帧间...上一节简单介绍了什么是封装格式以及音视频编码的几种方式,从本节开始,着重介绍H.264的编解码原理。
说到H.264,首先不得不提到作为奠基鼻祖的H.261,其主要的贡献有:
1.帧内编码
第一次根据帧内的像素趋于统一而采用帧内预测编码技术
2.帧间编码(运动补偿)
使用以宏块为基础的运动补偿预测编码技术,从当前宏块参考帧中产生最佳匹配宏块
3.环路滤波器
实际上是一个数字低筒滤波器,滤除不必要的高频信息
4.块结构的混合编码
第一种采用“块结构的混合编码”方案的编码标准
本节主要介绍帧内编码原理。
H.264数据的来源
上一节讲到,摄像头等中采集的视频数据必须通过编码后才能保存,那么从摄像头采集的数据是如何变成编码成H.264数据的呢?
以摄像头为例,如下图,摄像头采集的一帧画面需经过视频信源编码器、视频复合编码器和传输缓冲器后,再经过传输编码器进行编码,就得到H.264码流数据,本章主要围绕这张图来展开说明。
而解码H.264则刚好与编码相反:
下面一一解释这几个编码器都做了什么?
一、信源编码器:
视频帧首先会经过信源编码器,信源编码器会将帧数据切割为一个一个的小块,称为宏块,H.264默认采用16*16大小的区域作为一个宏块,也可以划分为8*8,这是基于帧的空间冗余度而根据其内部算法决定的。
空间冗余度:
以下图为例,摄像头中采集的蓝色天空颜色大致是相同的,因此所造成的冗余比例成为空间冗余度。所以没有必要将每一个像素都保留下来
如下图,假如其中一个区域被划分为了8*8的宏块(NAL)
在这个宏块中,只需要保留上侧8个像素、左侧7个像素和帧内预测数据,就可以预测整个宏块的数据,大大缩小数据量
帧内预测有如下图8个方向和一个取平均,分别为:垂直、DC(平均值)、水平、下左对角线、下右对角线、右垂直、下水平、左垂直、上水平
为了获得更高的压缩率,还可以在宏块的基础上继续划分出更多的子块,以16*16宏块为例,子块的大小可以是8*16、16*8、8*8、4*8、8*4、4*4,非常的灵活
注:
1. 一个宏块的预测方向只有一个
2. 所有H.264编码的视频的宽高一定是最大宏块的倍数(16的倍数)
3. 越大的宏块越多,压缩比越高
这里可以推算一下第3个结论:
如果16*16的宏块越多,拿单个宏块来说,原数据像素数:16*16=256,宏块记录的像素:上侧:16,左侧:15,一共只需要31个像素,节省了256-31=225个像素
如果4*4的宏块越多,拿单个宏块来说,原数据像素数:4*4=16,宏块记录的像素:上侧:4,左侧:3,共7个像素,节省了16-7=9个像素
由此可以印证第3个结论
二、视频复合编码器:
经信源编码器划分的宏块会交给视频复合编码器,视频复合编码器会将宏块上侧、左侧的像素数据和预测方向数据记录下来,交给传输缓冲器。
三、传输缓冲器:
传输缓冲器主要将前面步骤产生的B帧暂时缓冲在传输缓冲器中,直到获取到I帧或者P帧时,一起输出到传输编码器中生成H.264码流。
注:
这里重新将上图放下来作为解释:
当第一帧I帧从传输缓冲器输出后,随后的B帧会暂时缓存在传输缓冲器中,直到编码出I帧或者P帧到达传输缓冲器,缓冲其中的B帧会依次经编码控制重新经过视频编码器->视频复合器->跟在P帧后从传输缓冲器中输出。这也是后面要讨论的解码顺序和播放顺序不同的根源所在。
本节主要介绍了H.264的帧内编码原理,以及在生成H.264过程中各编码器起到的作用,下一节介绍H.264的帧间编码原理
-
音视频开发系列(3)音频编解码的原理
2022-04-08 20:45:05详解音频编解码的原理、演进和应用选型等 4、语言/音频编码总表 编辑切换为居中 添加图片注释,不超过 140 字(可选) ▲ 语言/音频编码总表 上图展示的是语言/音频编码总表,可以看到其比视频编码要复杂... -
音视频编解码原理(五) RGB与YUV原理解析
2022-01-28 17:22:36YUV原理:YUV主要用于优化彩色视频信号的传输,与RGB视频信号传输相比,它最大的优点在于只需占用极少的频宽(RGB要求三个独立的视频信号),其中Y表示明亮度也就是灰阶值;而U和V表示的则是色度 RGB必须R、G、B三... -
音视频编解码原理(四) H.264码流组成/哥伦布编码
2022-01-28 15:09:20上一章介绍了H.264帧间编码原理,本章开始介绍H.264码流组成 组成H.264码流的结构主要包含以下几个部分,从大到小排序一次是:H.264视频序列、GOP、图像、片组(slice集合)、片(slice)、NALU、宏块、像素。 H.264... -
音视频编解码.pdf
2019-06-11 14:37:06介绍各种编解码原理介绍例如h.263,h.264, mpeg-2,mpeg-4等。 -
音频编解码原理
2020-11-12 23:35:13对音频信号压缩编码的标准主要有ITU/CCITT的G系列:G.711、G.721、G.722、G.723、G.728、G.729;MPEG系列的MPEG-1,MPEG-2,MPEG-4,MPEG-7中的音频编码和DOLBY(杜比)实验室的AC系列:AC-1,AC-2,AC-3等。... -
音视频编解码原理(七) H.265帧内压缩原理
2022-02-06 22:49:32二、对于宏块压缩算法还是以单个宏块进行预测式压缩,帧间预测,从2003年都没有发生过变化,也就是说H.264的核心原理一直没变,当初开发编码时,不知道视频分辨率会发展的如此之快,完全超出了H.264能编码的范畴 ... -
音视频编解码原理-刘华平
2020-01-08 10:03:10https://www.cnblogs.com/imstudy/p/10289944.html -
音视频编解码原理(三) H.264帧间编码原理
2022-01-28 13:21:36由上一章了解到H.264帧内编码的基本原理,本章介绍帧间编码原理 首先看一下视频的下面两帧图片 其中除了车子和镜头在移动,帧间大部分内容并没有发生大的改变,以车子的车牌为例,车牌向左移动了,就是宏块... -
详解MediaCodeC 音视频编解码原理之自定义音频格式转换
2019-10-17 18:14:29MediaCodeC是Android 4.1(API16 ) 版本加入的一个新的音视频处理API,旨在提高Android平台的音视频编码能力,Mediacodec类可用于访问底层的媒体编解码器,即编码器/解码器组件。这是Android底层的多媒体支持基础设施... -
H.264数字音视频编解码SoC芯片Hi3510原理和应用
2020-10-25 10:58:15人类对信息的追求,从简单的结绳纪事、符号记录到图形并茂,到后来的音视频影片,一直在追求人类最实际的感官享受,进入网络时代,信息爆炸,庞大的信息流带来了人类文化的丰富,也带来了存储信息的烦恼。... -
全面解析视频编解码:原理、策略、实现
2022-06-01 11:07:51揭秘高质量远程桌面的三大核心技术之一——视频编解码技术 -
音视频-编解码-重叠复用原理在通信中的应用.pdf
2022-04-20 23:01:42音视频-编解码-重叠复用原理在通信中的应用.pdf -
音视频编解码常用知识点
2020-04-29 22:15:47编解码 转码 帧(Frame) 帧率(Frame rate) 分辨率 比特率(码率) 采样率 采样位数 声道数 有损压缩和无损压缩 帧内压缩和帧间压缩 对称编码和不对称编码 音频编码 声音数字化三要素 音频编码标准 ... -
音视频编解码技术及实践.dpf>>
2018-10-09 12:35:26音视频编解码技术的经典之作,JPEG,MPEG-1, MPEG-2,MPEG-4,H263,H264编码原理 -
精通Visual C++视频/音频编解码技术
2017-10-10 11:18:02《精通Visual C++视频、音频编解码技术》全面、详细地介绍了Visual C++视频/音频编解码技术的基本原理和编程知识,并结合工程实际,给出了丰富的实例和大量的Visual C++源代码文件。全书共分为4篇16章,其中“基础篇... -
音视频-编解码-配电线路快速保护原理与相关通信技术的研究.pdf
2022-04-18 18:12:30音视频-编解码-配电线路快速保护原理与相关通信技术的研究.pdf -
音视频-编解码-含分布式电源的电网故障分析方法与保护原理研究.pdf
2022-04-17 09:12:54音视频-编解码-含分布式电源的电网故障分析方法与保护原理研究.pdf -
音视频-编解码-横向剪切原理在投影栅三维形貌测量中的应用.pdf
2022-04-17 10:31:57音视频-编解码-横向剪切原理在投影栅三维形貌测量中的应用.pdf -
音视频-编解码-频率编码和调制原理在Hodgkin-Huxley系统上的应用.pdf
2022-04-18 18:24:02音视频-编解码-频率编码和调制原理在Hodgkin-Huxley系统上的应用.pdf -
音视频-编解码-非可加投影压的变分原理和零温度的极限.pdf
2022-04-17 01:29:29音视频-编解码-非可加投影压的变分原理和零温度的极限.pdf -
音视频编解码 -- 编码参数 CRF
2021-10-13 18:32:06之前多多少少接触过一些编解码参数,CRF 参数也用过,但是最近在和朋友们聊天时,说到使用 FFMPEG 过程中碰到 CRF 参数,以及具体作用流程,这个之前一直没有跟踪过,也没有详细记录过,所以吊起了自己的好奇心,... -
音视频编解码常用框架
2020-08-07 13:44:45音视频的采集 AVFoundation(数据采集) 滤镜处理 -CoreImage/GPUImage(1.2 OpenGL ES 3.0 Metal) 压缩(编码) VideoToolBox - 视频编码(硬编码) AudioToolBox:-音频编码(硬编码) 硬编码:硬件... -
[多媒体] 音视频编解码基础
2021-09-18 11:42:03音视频学习从零到整--H264编码原理 - 简书 -
视频编解码——视频编解码器工作原理
2021-04-27 10:03:29目录什么是视频编解码器为什么需要视屏编解码器视频编码器与数字视频容器时评编码器的历史 什么是视频编解码器 简单来说就是用于压缩或解压数字视频的软件或硬件 编码是信息从一种形式或格式转换为另一种形式的过程... -
精通Visual C++视频音频编解码技术.pdf
2013-11-01 13:51:51视频篇:重点讲解MPEG-2、H.263、MPEG-4、H.264等视频标准的编码、解码技术。 音频篇:重点讲解G.711、G.721、G.723、GSM、G.728和G.729等语音编码的原理和实现方法。 案例篇:通过两个综合案例,展示了高频/...