原文地址:http://www.dianbo.org/forum.php?mod=viewthread&tid=5740
【扫盲帖,或许不专业,请高手斧正】
对媒体流的处理分为两种:“编码(encoding)”和“解码(decoding)”。编码指的是通过一定协议或规则把一段声音或图像转化成计算机数字文件的过程。而解码恰恰是编码的反面——把编码过的媒体文件重新转化成声音或图像。
用来执行编码工作的软件叫“编码器”(Coder 或 Encoder);
用来执行解码工作的软件叫“解码器”(Decoder)
“编码器”与“解码器”合称“编解码器”(“Codec”)。
声音与图像是两种不同的媒体,它们分别对应人的两种不同感官。作为不同的媒体,我们只能用专门针对声音的软件或是专门针对视频的软件去分别分析处理音频流(Audio Stream)与视频流(Video Stream)。
用来编码音频流的软件叫作“音频编码器”(Audio Encoder)
用来编码视频流的软件叫作“视频编码器”(Video Encoder)
用来解码音频流的软件叫作“音频解码器”(Audio Decoder)
用来解码视频流的软件叫作“视频解码器”(Video Decoder)
音频流与视频流的处理必须分别进行,即:
“音频编码器”编码出单个音频文件,
“视频编码器”编码出单个视频文件,
“音频解码器”单独对音频文件进行解码还原,
“视频解码器”单独对视频文件进行解码还原。
既然音频处理和视频处理必须单独运行,那为什么我们平时看的RMVB、AVI格式的电影都是既包含声音又包含图像的单个文件呢?那是因为我们在通过摄像机获得单独的音频流和视频流后不仅对它们进行了“编码”,还对它们进行了“合成”(Synthesis)。通过合成,音频与视频就打包到一起,生成一个单独的文件。可以说,所有既有声音又有图像的视频文件,100%都是通过某种合成器(Synthesizer)合成过的。(注意:“合成”与“合并”不同,见最后的参考帖子。)
然而必须知道的是:尽管通过合成器可以把音频流和视频流打包成一个文件,但是正如人的眼睛不可能听、人的耳朵不可能看,音频流和视频流是不可能完全地混杂到一起的,是注定“分离”的。因此,所谓“合成”,只是把音频流和视频流用一个容器文件(Container)封装起来,其实里面还是各自独立的。我们在播放视频文件的时候总是先调用分离器(Splitter),将封装合成的视频“分离”成独立的音频和视频码流,然后才调用解码器对这些独立的音频流和视频流进行解码输出。
举个例子应该比较好懂一些:
比如我们有一个音频文件 Sample.mp2 和一个视频文件 Sample.m1v,用编码软件如小日本4通过 MPEG-1 编码方式合成为一个独立文件 Sample.mpg,然后把这个.mpg文件拿到媒体播放器里面播放,直接就可以听到声音看到画面。表面上看播放器只是简单地“播放”了这个文件,实际上这个“播放”包含了更多我们看不到的步骤。这个步骤是这样的:
- 播放器打开视频源文件
- 播放器调用分离器将视频文件分解为单独的音频流和视频流
- 播放器调用音频解码器对音频流进行解码,同时调用视频解码器对视频流进行解码
- 播放器依据同样的时间线将解码后的音频流和视频流输出到播放窗口并使之保持同步。
我们经常听到 滤镜(Filter) 的名称,实际上就是指的各种分离器或解码器。
参考:
==============================================================================
http://www.dianbo.org/forum.php?mod=viewthread&tid=3051
经常看到有些朋友将“合成”与“合并”这两个名词混用,在此澄清一下:
1、“合成”是把只包含声音的音频文件和只包含影像的视频文件叠加到一起,使得合成的结果文件在播放时既有声音又有图像。举例来说,假设有两个文件 A.mp3 和 B.m1v ,播放 A.mp3 时只能听到声音,没有图像,播放 B.m1v 时只能看到图像,听不到声音,这时把 A.mp3 与 B.m1v 合成,就会生成第三个文件 C.mpg 。如果 A.mp3 和 B.m1v 的播放时间均为30分钟,则 C.mpg 的播放时间也是30分钟。
我们制作照片VCD的时候,经常要加入背景音乐,这其实就是一种音频与视频的“合成”。
“合成”的相反概念是“分离”。如上例中生成的 C.mpg 可以再度“分离”为 A.mp3 和 B.m1v 。我们经常通过影音分离技术来获取电影的伴音,这叫作音频的“提取”。
2、“合并”是把各自独立的视频文件首尾串起来,变成一个包含原来所有独立文件的较大文件。比如我们有三个有声视频文件 1.mpg、2.mpg、3.mpg,分别是一部电影的上、中、下三集,每集播放时间为30分钟,将它们合并后,成为一个单独的文件 123.mpg ,其播放时间将是原来三集所有播放时间之和——90分钟。
我们用会声会影或其他非编软件将DV拍摄出来的视频片断制作成完整的电影的过程就是在使用视频“合并”技术。如果同时还加入了背景音乐、旁白等等,就同时应用了“合成”技术。
“合并”的相反概念是“分割”、“切割”或“剪切”,如上例中的 123.mpg 可以再度分割为 1.mpg 、2.mpg、3.mpg。有时我们为了节省空间,不想要电视连续剧每集的片头片尾,就可以用“剪切”功能来去掉它们。
2、什么是滤镜?
http://www.dianbo.org/forum.php?mod=viewthread&tid=5763
“什么是HDTV”中已经描述了HDTV的几个要素,相应地,要播放HDTV,就首先要正确地解开封装,然后进行视频音频解码。所以我们需要分离器,视频解码器和音频解码器,俗称HDTV的“三件套”,又统称滤镜。
一、分离器:
要正确地播放多媒体文件,首先是正确地调用分离器,把视频轨和音频轨分离出来。分离器相应分为三大类。
1、MPEG2 TS分离器:
月光(全称Moonlight-Elecard MPEG2 Demultiplexer),兼容性非常好,是首选的MPEG2分离器。
Gabest(就是Mpeg Splitter),MPC的作者Gabest编写的分离器。
NVIDIA Transport Demux(nVidia自家的分离器),是PureVideo家族成员之一,只能配合自家族的视频音频解码器,配合N卡比较好。
2、H264的分离器:
常见的有Gabest MP4分离器,就是MP4splitter,也是Gabest编写的,Halli的分离器和NDigital分离器等。
3、HD-WMV的分离器:
微软封闭技术,WMP9以上都自带了,XP用户都不需要装。
二、视频解码器
各大公司不断研发新版本,提升画质,改善兼容性,加强显卡硬件加速作用。
1、MPEG2视频解码器:
winDVD的视频解码器InterVideo Video Decoder。
PowerDVD的MPEG2视频解码器,有CyberLink DTV Video/SP Filter和CyberLink Video/SP Filter
月光视频解码器,Moonlight-Elecard MPEG2 Video Decoder为3.X版本和4.0X版本,名为Elecard MPEG-2 Video Decoder。
低端电脑推荐使用Sonic CinemasterVideo,画质一般,强项是能打开硬件加速。
PureVideo家族中的MPEG2视频解码器NVIDIA Video Decoder,只能用于N卡6、7系列的显卡上。
Dscaler5以上所说的PowerDVD、WinDVD、月光、Sonic等的视频解码器都可以打开显卡硬件加速,降低CPU的负担。
2、H264的视频解码器:
CoreAVC的H264视频解码器CoreAVC DirectShow Video Decoder。
月光的H264解码器,全称为Moonlight H264 Video Decoder,ffdshow的解码器,全称为ffdshow MPEG-4 Video Decoder,能打开N卡显卡硬件加速的CyberLink H.264/AVC Decoder(PDVD7)。
3、HD-WMV
只能用上微软自家的解码器,N卡6、7系以上能打开加速。
HDTV视频解码cpu占用很高,目前最强的cpu也难以完成,而且cpu作为通用处理器,用于视频解码则效率很低,所以HDTV播放的关键是显示卡的解码加速。视频解码器能否支持显示卡硬件加速,是能否播放HDTV的关键。
三、音频解码器:
ffdsshow,月光音频解码器、WinDVD的音频解码器、PowerDVD的音频解码器、AC3Filter音频解码器。
如果播放HDTV时碰到有声无画或者有画无声,就应该自己从解码器着手,替换一个试试。