媒体格式的概念

小程之前介绍了录制的实际操作,以及声音采集的概念,而采集只是多媒体操作流程中的一个环节,更多的环节可以参考一下这个图:

声音或视频采集后,就是编码、写文件或推流。不管是编码还是写“文件”,读者都能找到相应的程序来完成,一般加上自己的业务代码就能实现自己的功能需求。

小程这次不介绍编码或写文件的具体实现,因为这些流程会作为后续的某个场景的实现中的一部分出现,这种方式也能达到理解的目的。

小程这次还是介绍概念方面的内容,而且跟编码与写文件有关。因为概念还是相对枯燥的,如果读者不感兴趣,那可以到此就结束阅读。

本文介绍音视频常见的编码格式与容器格式。

声音或图像在采集后需要进行编码压缩,这个格式叫作编码格式,或压缩格式。压缩后的数据一般需要保存到文件,或者以文件的组织(比如一些tag或box)形式来传输,这就好像把编码后的数据放到一个容器中一样,所以这个叫容器格式或封装格式。

编码的目的是为了节省体积或带宽

一般一首歌曲4分钟,如果不对它进行压缩,以pcm格式采集后就保存起来,那这个文件占多大体积呢?

以44100的采样率、双声道跟16位采样精度(2字节)来计算:44100*2*2*(4*60) = 40.37M。

也就是说,如果没有编码压缩,一个一般的音频文件就占了40m,那“磁盘容量不足”极有可能成为突出问题;如果在网络上传输,那带宽就会成为问题。

那如果经过编码,可以节省多少体积呢?以常见的mp3编码格式来看,按mp3的十分之一的压缩率,可以把40m的大小变成4m大小,节省的体积十分明显。而压缩率可以大概计算出来(以128kbps来算):44100*2*2/(128000/8*1) = 11。


所以,减肥是有必要的。那么,有哪些编码格式呢?

(1)pcm


pcm(脉冲编码调制)是特殊的编码格式,因为它没有压缩数据,它是釆集声音时表示电平值的一种格式,也是其它编码格式的原始数据。

(2)mp3

mp3是mpeg制定的压缩标准。

mpeg,动态图像专家组,从属于ISO标准化组织,主要工作是制定视音频压缩编码标准。还有一个jpeg,是静态图像专家组。

mpeg标准的版本有:mpeg1/2/4/7/21,但是,没有mpeg3,而mpeg2.5是非官方版本,是mpeg2的扩展。

我们经常说的mp3,在它之前,还有mp1与mp2。

mp1/mp2/mp3,一般都指mpeg-1 audio layer1/2/3,都是基于mepg1标准。layer1/2/3的区别是编码的复杂度不一样,由低到高,layer3的复杂度最高,使得它编解码时会更耗时耗力,但它编码时可以用更小的体积来达到相同的质量。

注意,mp3并不是指mpeg3标准,实际上不存在mpeg3标准,而mp3是基于mpeg1标准,一般来说mp1与mp2也是基于mpeg1标准。mp3全称是:mpeg-1 audio layer3。

mp3的压缩,大概来说,就是把时域波形转换成频率数据,再把高频段与低频段加大压缩力度(特别是高频段),对不同频段使用不同的压缩比例,为有损压缩,压缩率达1:10或更高。

(3)aac

Advanced Audio Coding,目标是取代mp3,而且似乎真的做到了,现在aac编码格式得到广泛使用(h264搭配aac到处可见)。

aac在mpeg-2与mpeg-4标准中都有涉及。从编码的角度,lc-aac(低复杂度的aac)使用最为广泛,此外还有he-aac(高性能的aac)、main-aac、ssr-aac之类规格的编码格式。

(4)ac3

ac3, 全称是Audio Coding version 3,是杜比(Dolby)实验室制定的有损音频编码格式。

ac3广泛应用于5.1声道(前左右、后左右、中低音),也是电影院专属编码格式。

(5)ape/flac

ape与flac都是无损压缩,也就是能还原出原始的pcm数据。

ape,全称就是ape,猿的意思,所以也叫Monkey。

flac,Free Lossless Audio Codec(无损音频压缩编码)。

想听高品质的音频,ape与flac是很好的选择。

(6)wma

wma,Windows Media Audio,是微软力推的一种音频格式。wma是有损压缩,压缩率可达1:18,比mp3更高,但未必音质就更好。

(7)amr

amr,Adaptive Multi-Rate,由欧洲通信标准化委员会提出,在移动通信系统中广泛使用的语音标准。

amr(分wb或nb)编码时,支持的参数是有限制的,比如nb最高的采样为8000,比特率最高为12200,声道数为1。

amr最大的特别就是体积小,音质差。在语音通话中(直播或本地存储)经常使用到。

以上,小程介绍了编码格式,接下来介绍容器格式

容器格式也叫封装格式,因为把编码数据给封装起来了。一个封装格式往往可以支持多个编码格式。

(1) mkv

mk,是matroska的缩写。matroska封装格式,是CoreCodec公司制定的格式,俗称“万能的容器”,基本上支持所有编码格式。

mkv,是视频容器,一般也包括音频与字幕,是matroska格式中应用最广泛的一种。

mka,只包括音频的matroska格式,可以包括多个音轨,比如国粤英三个音轨。

mks,只包括字幕流的matroska格式。

(2)mp4

mp4,是动态图像专家组(mpeg,从属于ISO)制定的封装格式。

mp4对编码格式有要求,只支持基于mpeg4的编码格式,比如视频的h264,音频的aac。对于其它编码格式,并非官方支持,比如ac3、mp3等。如果硬把非官方支持的编码格式塞到mp4容器,难以保证一定能被播放。

mp4对编码格式要求明确,是它能广泛应用的一个原因,特别在移动平台,比如ios系统上。

mp4如果只有音频,则文件有可能以m4a作为后缀,这是苹果公司起的名字,用来区分带有视频的一般的mp4。所以m4a文件也是mp4文件,从容器的角度。一般m4a里面的音频是aac压缩格式,但不排除塞了mp3、applelossless等格式的数据。

(3)ts

ts,transport stream的缩写,即传输流,从名字就知道它可以用于网络播放。

ts,全称是mpeg2-ts,早期广泛应用于数字电视,视频编码格式为mpeg2。

苹果公司制定的hls协议,使用ts作为数据的封装格式,同时也简化了ts的设计,让这种格式广泛应用于在线直播。简化后的ts,视频编码格式为h264,音频为aac或mp3。

每个ts包,能单独解码与播放。

(4)flv

flv,FlashVideo的缩写,是Macromedia公司(2005年被Adobe收购)制定的视频封装格式。

flv被广泛应用于网络视频播放。flash插件播放器的出现,使得在浏览器上可以轻松观看在线视频,免去安装本地播放器的麻烦。而flash播放器使用flv容器。

直播的兴起,也影响了flv的使用,比如rtmp流协议,使用的是flv封装格式。

(5)avi

avi,Audio Video Interleaved,即音视频交错格式,微软在1992年发布的封装格式,基于riff文件格式。

历史久远,但简单的开发接口与windows平台的影响,还有不少忠实粉丝。



为什么有如此多的封装格式或编码格式呢?一来不同的应用场景需要不同的格式,二来同样的场景,大公司都会制定自己的标准并成为专利(抢先成为行业标准),不会屈服于别家的规则。



总结一下,本文介绍了音视频常见的编码格式与封装格式,理解的难度系数为1。

原文地址:http://blog.51cto.com/13136504/2069443

时间: 2024-10-31 01:27:19

媒体格式的概念的相关文章

H264的常见概念

H264,应该是读者常见的技术术语吧,那h264是什么东西呢? H.264是视频编码标准. 在术语的拼写上,小程以能理解为准. 本文介绍H264的常见概念. 预警,本文相对枯燥,读者可随时放弃阅读. (1)H264从哪里来? 小程之前介绍媒体格式的概念时,有提到过国际标准化组织(ISO),现在又是它出场的时候. H264是国际标准化组织(ISO)与国际电信联盟(ITU)的产物. 但ISO是大boss,给的是造福人类的方向,真正做这件事的是他的下属MPEG,MPEG是动态图像专家组. 同样,ITU

Java web的基本概念

概念一直是学习计算机软件开发中经常遇到的问题,也是软件行业最喜欢创造的东西.很多时候,学习计算机软件开发遇到困难都是因为对某些概念的不理解,而不是因为技术本身有多么复杂.Java Web作为Java EE技术体系的一部分,应该是目前所有Web开发技术中最复杂的一种,很多初学者,或者是从ASP.PHP转移过来的开发者都会遇到概念方面的困难. 其实很多概念都是非产简单的,只是因为厂家为了宣传需要,将概念复杂化.学术化,导致学习者觉得这些概念非常深奥,难以理解.在这里,我们首先去澄清Java Web开

C#中反射的概念及其使用(转)

提纲:1. 什么是反射2. 命名空间与装配件的关系3. 运行期得到类型信息有什么用4. 如何使用反射获取类型5. 如何根据类型来动态创建对象6. 如何获取方法以及动态调用方法7. 动态创建委托 1.什么是反射        Reflection,中文翻译为反射.        这是.Net中获取运行时类型信息的方式,.Net的应用程序由几个部分:'程序集(Assembly)'.'模块(Module)'.'类型 (class)'组成,而反射提供一种编程的方式,让程序员可以在程序运行期获得这几个组成

流媒体技术之概念

最近霉霉的歌曲在中国市场下架了,因为Tayler认为Spotify(流媒体音乐服务平台)影响了唱片的销售量和歌曲下载量.这样做法其实很正常,Taylor 在Spotify挣不到钱,所收取的费用几乎等同于免费.在音乐流媒体服务的冲击之下,实体唱片业与数字音乐销量不断下滑.据悉,此次Taylor Swift的需求是全球同步的,国内音乐平台也要配合下架所有Taylor Swift歌曲的免费试听业务,只有付费用户才能收听及下载,这也正是保护Taylor Swift歌曲的正版行为,为了保护实体唱片业.所以

WPF 依赖属性概念

理解依赖属性 在 WPF 中变成相比较于 传统 Windows Forms 变成发生了较大的改变. 属性现在以一组服务的形式提供给开发人员. 这组服务就叫做属性系统. 由 WPF 属性系统所支持的属性成为依赖属性. 依赖属性的概念 WPF 在依赖属性中提供了标准属性无法提供的功能, 特性如下: 决定属性值: 依赖属性的属性值可以在运行时有其他元素或者是其他信息所决定, 决定的过程具有一个优先次序. 自动验证或变更通知: 依赖属性哟一个自定的回调方法, 当属性值变更时被执行, 这个回调能验证新的值

Docker的概念及剖析原理和特点

一.docker的简介: 应用容器是个啥样子呢,一个做好的应用容器长的就像一个装好了一组特定应用的虚拟机一样,比如我现在想用mysql数据库,我直接找个装好了的MySQL的容器就可以了,想用的时候一运行容器,MySQL服务就起来了,就可以使用MySQL了 为什么不能直接安装一个MySQL?或者是SqlServer呢也可以啊? 答:因为有的时候根据每个人的电脑的不同,在物理机安装的时候会出现各种各样的错误,突然你的机器中病毒了或者是挂了,你所有的服务都需要重新安装. 注意:    但是有了dock

老男孩教育每日一题-2017年5月11-基础知识点: linux系统中监听端口概念是什么?

1.题目 老男孩教育每日一题-2017年5月11-基础知识点:linux系统中监听端口概念是什么? 2.参考答案 监听端口的概念涉及到网络概念与TCP状态集转化概念,可能比较复杂不便理解,可以按照下图简单进行理解? 将整个服务器操作系统比喻作为一个别墅 服务器上的每一个网卡比作是别墅中每间房间 服务器网卡上配置的IP地址比喻作为房间中每个人 而房间里面人的耳朵就好比是监听的端口 当默认采用监听0.0.0.0地址时,表示房间中的每个人都竖起耳朵等待别墅外面的人呼唤当别墅外面的用户向房间1的人呼喊时

Tensorflow一些常用基本概念与函数(四)

摘要:本系列主要对tf的一些常用概念与方法进行描述.本文主要针对tensorflow的模型训练Training与测试Testing等相关函数进行讲解.为'Tensorflow一些常用基本概念与函数'系列之四. 1.序言 本文所讲的内容主要为以下列表中相关函数.函数training()通过梯度下降法为最小化损失函数增加了相关的优化操作,在训练过程中,先实例化一个优化函数,比如 tf.train.GradientDescentOptimizer,并基于一定的学习率进行梯度优化训练: optimize

Tensorflow一些常用基本概念与函数(三)

摘要:本系列主要对tf的一些常用概念与方法进行描述.本文主要针对tensorflow的数据IO.图的运行等相关函数进行讲解.为'Tensorflow一些常用基本概念与函数'系列之三. 1.序言 本文所讲的内容主要为以下相关函数: 操作组 操作 Data IO (Python functions) TFRecordWrite,rtf_record_iterator Running Graphs Session management,Error classes 2.tf函数 2.1 数据IO {Da