所谓视频编码方式就是指通过压缩技术,将原始视频格式的文件转换成另一种视频格式文件的方式
编码格式有很多,如下图:
视频编码格式.png
目前比较常用的编码有
目前在这些众多编码格式中, 做音视频开发最关注的应该就是H.264/AVC和H.265/HEVC
对于未入门的人可能会对命名有点疑惑,比如对于H.264, 还会看到有些标签还写成MPEG-4/AVC. 前面我们讲过H.26X系统由ITU主导开发, MPEG系列由ISO主导开发. 而H.264 和H.265 是由ITU和ISO共同开发的, H.264,H.265是ITU组织对着两种编码格式的命名, MPEG-4/AVC ,MPEG-4/HEVC是ISO组织对这两种编码格式的命名.
如果想利用Android MediaCodec对H.264 进行编解码,传进去的参数即为video/avc, H.265 即为 video/hevc
try {
MediaCodec mediaCodec = MediaCodec.createDecoderByType("video/avc");
} catch (IOException e) {
e.printStackTrace();
}
下面是百度百科上对ITU 和 ISO的一个简介:
MPEG系列
由ISO(国际标准组织机构)下属的MPEG(运动图象专家组)开发 视频编码方面主要是Mpeg1(vcd)、Mpeg2(DVD)、Mpeg4(DVDRIP使用的都是它的变种,如:divx,xvid等)、Mpeg4 AVC;音频编码方面主要是MPEG Audio Layer 1/2、MPEG Audio Layer 3(mp3)、MPEG-2 AAC 、MPEG-4 AAC等。注意:DVD音频没有采用Mpeg的。MPEG是运动图像专家组(Moving Picture Experts Group)的缩写,于1988年成立,是为数字视/音频制定压缩标准的专家组,已拥有300多名成员,包括IBM、SUN、BBC、NEC、INTEL、AT&T等世界知名公司。MPEG组织最初得到的授权是制定用于“活动图像”编码的各种标准,随后扩充为“及其伴随的音频”及其组合编码。后来针对不同的应用需求,解除了“用于数字存储媒体”的限制,成为制定“活动图像和音频编码标准的组织。MPEG组织制定的各个标准都有不同的目标和应用,已提出MPEG-1、MPEG-2、MPEG-4、MPEG-7、MPEG-21标准
H.26X系列
由ITU(国际电传视讯联盟)主导,侧重网络传输,(注只是视频编码),ITU-T 的标准包括 H.261、H.263、H.264,主要应用于实时视频通信领域,如视频会议;MPEG 系列标准是由ISO/IEC制定的,主要应用于视频存储(DVD)、广播电视、互联网或无线网络的流媒体等。两个组织也共同制定了一些标准,H.262标准等同于 MPEG-2的视频编码标准,而H.264标准则被纳入 MPEG-4的第10部分
简单用两幅图表示一下
两大组织.png
编码历史.jpg
这里只做简单字面区分,具体细节后面文章进行详述.
既然H.265 比H.264 的优势这么大,那么为什么没有普及呢. 可能主要原因是H.265的编解码难度比较大,另一方面也可能是之前的编码已经广泛得到了应用,替换成本比较高