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

【DSP开发】【VS开发】MUX和DEMUX的含义的更多相关文章

  1. 【DSP开发】【Linux开发】基于ARM+DSP进行应用开发

    针对当前应用的复杂性,SOC芯片更好能能满足应用和媒体的需求,集成众多接口,用ARM做为应用处理器进行多样化的应用开发和用户界面和接口,利用DSP进行算法加速,特别是媒体的编解码算法加速,既能够保持算 ...

  2. XE7 & IOS开发之开发账号(3):证书、AppID、设备、授权profile的申请使用,附Debug真机调试、Ad hoc下iPA文件生成演示(XCode5或以上版本推荐,有图有真相)

    网上能找到的关于Delphi XE系列的移动开发的相关文章甚少,本文尽量以详细的图文内容.傻瓜式的表达来告诉你想要的答案. 原创作品,请尊重作者劳动成果,转载请注明出处!!! 注意,以下讨论都是以&q ...

  3. XE7 & IOS开发之开发账号(2):发布证书、发布授权profile的申请使用,附Ad hoc真机调试、生成ipa文件演示(XCode所有版本通用,有图有真相)

    网上能找到的关于Delphi XE系列的移动开发的相关文章甚少,本文尽量以详细的图文内容.傻瓜式的表达来告诉你想要的答案. 原创作品,请尊重作者劳动成果,转载请注明出处!!! 注意,以下讨论都是以&q ...

  4. XE7 & IOS开发之开发账号(1):开发证书、AppID、设备、开发授权profile的申请使用,附Debug真机调试演示(XCode所有版本通用,有图有真相)

    网上能找到的关于Delphi XE系列的移动开发的相关文章甚少,本文尽量以详细的图文内容.傻瓜式的表达来告诉你想要的答案. 原创作品,请尊重作者劳动成果,转载请注明出处!!! 注意,以下讨论都是以&q ...

  5. Spark集群 + Akka + Kafka + Scala 开发(3) : 开发一个Akka + Spark的应用

    前言 在Spark集群 + Akka + Kafka + Scala 开发(1) : 配置开发环境中,我们已经部署好了一个Spark的开发环境. 在Spark集群 + Akka + Kafka + S ...

  6. Spark集群 + Akka + Kafka + Scala 开发(2) : 开发一个Spark应用

    前言 在Spark集群 + Akka + Kafka + Scala 开发(1) : 配置开发环境,我们已经部署好了一个Spark的开发环境. 本文的目标是写一个Spark应用,并可以在集群中测试. ...

  7. Spark集群 + Akka + Kafka + Scala 开发(4) : 开发一个Kafka + Spark的应用

    前言 在Spark集群 + Akka + Kafka + Scala 开发(1) : 配置开发环境中,我们已经部署好了一个Spark的开发环境. 在Spark集群 + Akka + Kafka + S ...

  8. Android 服务端开发之开发环境配置

    Android 服务端开发之开发环境配置 这里是在Eclipse的基础上安装PhpEclipse插件方法,PHPEclipse是Eclipse的 一个用于开发PHP的插件.当然也可以采用Java开发a ...

  9. IDEA搭建scala开发环境开发spark应用程序

    通过IDEA搭建scala开发环境开发spark应用程序   一.idea社区版安装scala插件 因为idea默认不支持scala开发环境,所以当需要使用idea搭建scala开发环境时,首先需要安 ...

随机推荐

  1. 微信小程序--详情页的推荐位置继续打开详情页;返回之后分享等数据不正确问题

    问题背景 -- 分享的数据来源 当前在维护的小程序项目使用wepy开发:分享的数据都是通过接口请求后台的形式获得:然后存在了数据data的对象中:类似 定义分享数据 data = { shareDat ...

  2. vue 里面异步加载高德地图

    前言 关于Vue 里面使用异步加载高德地图 项目中其实只有几处需要用到地图,不需要全局引入 在index文件中引入js会明显拖慢首屏加载速度,虽然可以使用异步加载script的方式解决,但是始终觉得不 ...

  3. RFID-RC522射频

    与Arduino的接线方法: 米其林编程:

  4. 【JZOJ5434】【NOIP2017提高A组集训10.30】Matrix

    题目 分析 假设答案为ans, 发现\[k=\sum_{i=1}^{min(n,k)}\lfloor \dfrac{ans}{i} \rfloor\] 于是可以对ans进行二分, 用分块来求出上面的式 ...

  5. 写在centos7 最小化安装之后

    1.最小化安装之后首先解决联网问题(https://lintut.com/how-to-setup-network-after-rhelcentos-7-minimal-installation/) ...

  6. python_多线程多进程

    多线程,适用于IO密集型任务 IO,input,output缩写,包括网路io(比如上传下载),磁盘io,(比如数据库读写),CPU操作不频繁 多进程,适用于CPU密集型任务 数据分析,算法,依赖CP ...

  7. SessionState的几种设置

    SessionState:   web Form 网页是基于HTTP的,它们没有状态, 这意味着它们不知道所有的请求是否来自同一台客户端计算机,网页是受到了破坏,以及是否得到了刷新,这样就可能造成信息 ...

  8. 什么是CSS 表单?

    ㈠输入框(input) 样式 ⑴使用 width 属性来设置输入框的宽度   示例:css部分:input { width: 100%; }                html部分:<for ...

  9. jquery设置css属性几种方式

    用css()方法返回元素的样式属性 $("div").css("padding-left")); 用css()设置样式 $("div").c ...

  10. 【PKUSC2019】树染色【线段树合并】【树形DP】

    Description 给出一棵n个点的树,现在有m种颜色,要给每个节点染色,相邻节点不能同色. 另外有k条限制,形如x号点不能为颜色y 同一节点有可能有多条限制. 求方案数对998244353取模的 ...