MUX和DEMUX

Mux 是 Multiplex 的缩写,意为“多路传输”,其实就是“混流”、“封装”的意思,与“合成”的意思相似就是指把视频素材和音频素材封装到一个单独的文件中。

muxing 是在mux 后面加了 -ing 构成的动名词形式。

Demux是在 mux 前面加了个表示否定的 De- 前缀,意思是进行与 muxing 相反的“分解复用”操作,也就是我们平时说的“分离”一个文件中的视频部分或是音频部分。

同样,也可以在 demux 后面加 -ing 构成动名词 demuxing。

意义:

通过 muxing(混流),可以将视频流、音频流甚至是字幕流捆绑到一个单独的文件中,作为一个信号进行传输,等传输完毕,就可以通过 demuxing(分离) 将里面的视频、音频或字幕分解出来各自进行解码和播放。

要点:

在 muxing 与 demuxing 的整个过程,都不对原来的视频、音频或字幕重新编码。混流(封装、打包)后的文件,可以通过分离(分解、解包)操作,获得与原始素材一模一样的独立的视频、音频和字幕文件。

视频的分离与合成,编码和解码

对媒体流的处理分为两种:“编码(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)的名称,实际上就是指的各种分离器或解码器。

Filter(滤镜)



什么是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时碰到有声无画或者有画无声,就应该自己从解码器着手,替换一个试试。

最新文章

  1. 十一. 一步步破解JEB 2.0demo版一
  2. NET WebApi OWIN 实现 OAuth 2.0
  3. 非编码RNA
  4. Android EditText 文本框实现搜索和清空效果
  5. string.format
  6. mfc模态对话框
  7. Vijos1523 NOI2002 贪吃的九头龙 树形dp
  8. Python3 如何优雅地使用正则表达式(详解四)
  9. cxiamge 使用静态库 vs2010
  10. #include <stdlib.h>
  11. MyEclipse配色字体等配置的解决方案
  12. VMware 安装centOS6.4虚拟机以及基础环境搭建
  13. python学习第一天内容整理
  14. fiddler2 中文乱码问题
  15. iOS真机调试配置
  16. mpeg文件格式分析
  17. 移动端设备中1px适配
  18. Android中Enum(枚举)的使用
  19. Linux下的压缩解压缩命令详解及实例
  20. pytorch初步学习(一):数据读取

热门文章

  1. linux 查找某文件所在路径
  2. sql 创建数据库并对数据库更改排序规则
  3. 使用 mybatis-Generator 自动生成DAO、Model、Mapping相关文件
  4. Nginx解析PHP
  5. Python 面向对象Ⅲ
  6. Harbor ($docker login) Error saving credentials
  7. .netcore 图片处理
  8. [LOJ3109][TJOI2019]甲苯先生的线段树:DP
  9. 【转】【Linux经验】Codeblocks 13.12自动补全 、缩进解决
  10. XCTF简单的php