首先让我们一起了解下音视频的基础知识。
1、视频编码:
视频编码是指通过特定的压缩技术,将某个视频文件转换成另外一种视频格式文件的方式。目前最重要的编解码标准有:
标准 | 类型 |
国际电联 | H.261、H.263、H.264 |
运动图像专家组 | M-JPEG |
国家标准化组织运动图像专家组 | MPEG系列 |
Real-Networks | RealVideo |
微软 | WMV |
Apple | QuickTime |
从某种意义上讲视频编码可以分为两个系列:
- MPEG系列:
MPEG系列视频编码方面 | 介绍 |
MPEGI | VCD就是用的这种 |
MPEG2 | DVD就是用的这种 |
MPEG4 | DVDRIP使用的都是他的变种例如:DivX,XviD等 |
MPEG4 AVC | 正热门 |
MPEGI | VCD就是用的这种 |
MPEG系列音频编码方面 | 介绍 |
MPEG Audio Layer 1/2 | \ |
MPEG Audio Layer 3 | 我们经常用的mp3 |
MPEG-2 AAC | \ |
MPEG-4 AAC | \ |
注:DVD音频技术没有采用MPEG的;
- H.26X 系列:
注意:只有视频编码。
(MPEG4 ACV合作的结晶)
2、音频编码:
常见的音频格式有AAC、MP3、AC3;
- AAC:一种专为声音数据设计的文件压缩格式,与MP3不同,他采用了全新的算法进行编码,更加高效,具有更高的“性价比”。声音质量几乎没有明显的降低的前提下,保证了文件的小巧型。苹果iPod、诺基亚手机也支持AAC格式的音频文件。但是,AAC属于有损压缩;
- MP3: 是一种音频压缩技术,全称是动态影像专家压缩标准音频层面(Moving Picture Experts Group Audio Layer III),简称MP3。被设计用来大幅度地降低音频数据量。利用MP3技术,将音乐一1:10甚至1:12的压缩率,压缩成容量较小的文件,对于大多数用户来说,重放的音质与最初的不压缩音频没有明显下降;MP3利用人耳对高频声音信号不敏感的特性,将时域波形信号转换成频域信号,并划分成多个频段,对不同频段使用不同的压缩率,对高频信号使用大压缩率升至忽略信号,对低频信号使用小压缩率,保证信号不失真。等于抛弃了人耳基本听不到的高频声音,只保留了能听到的低频部分,从而实现1:10甚至1:12的压缩率压缩。
- AC3:全称为Audio Coding Version 3,是Dolby实验室锁发展的有损音频编码格式。AC3被广泛应用于5.1省道,是Dolby Pro Logic的继承者,不同的地方在于AC3提供了6个独立的声道而Pro Logic混合其环绕声道。AC3以348~448kb/s的码率应用于激光唱片和DVD,也经常以640kbs/s的码率应用于电影院。Dolby AC3提供的环绕声系统由5个全频域声道和一个超低音声道组成,被称为5.1声道。5个全频域声道包括左前,中央,右前,左后、右后。超低音声道主要提供一些二外的低音信息,是特殊场景例如爆炸,撞击等的声音效果更好。
3、多媒体播放组件:
Android多媒体播放组件包含MediaPlayer、MediaCodec、OMX、StageFright、AudioTrack等;
- MediaPlayer:播放控制。
- MediaCodec:音视频编解码。
- OMX:多媒体部分采用的编解码标准。
- StageFright:是一个播放框架、替代之前的OpenCore,主要是做了一个OMX层,仅仅对OpenCore的omx-component部分做了引用。StageFright是在MediaPlayerService这一层加入的,和OpenCore是并列的。StageFright在Android中是以共享库的形式存在的(libstagefright.so),其中的module–NuPlayer/AwesomePlayer 可用来播放音视频,提供了许多API,可以让生成的应用程序(JAVA/JNI)调用。
- MediaPlayer:音频播放。
4、多媒体框架及解决方案:
常见的播放框架及解决方案有VLC.FFmpeg,GStreamer等。
VLC | Video LAN Client 开源的跨平台多媒体播放器及框架 |
FFmpeg | 多媒体解决方案,不是多媒体框架,广泛应用于音视频开发中 |
GStreamer | 一套构建流媒体应用的开源多媒体框架 |