關於音視頻的一些知識(demux、filter等)

MUX和DEMUX php

Mux 是 Multiplex 的縮寫,意爲「多路傳輸」,其實就是「混流」、「封裝」的意思,與「合成」的意思類似就是指把視頻素材和音頻素材封裝到一個單獨的文件中。 git

muxing 是在mux 後面加了 -ing 構成的動名詞形式。
Demux是在 mux 前面加了個表示否認的 De- 前綴,意思是進行與 muxing 相反的「分解複用」操做,也就是咱們平時說的「分離」一個文件中的視頻部分或是音頻部分。
一樣,也能夠在 demux 後面加 -ing 構成動名詞 demuxing。
意義:
經過 muxing(混流),能夠將視頻流、音頻流甚至是字幕流捆綁到一個單獨的文件中,做爲一個信號進行傳輸,等傳輸完畢,就能夠經過 demuxing(分離) 將裏面的視頻、音頻或字幕分解出來各自進行解碼和播放。
要點:

在 muxing 與 demuxing 的整個過程,都不對原來的視頻、音頻或字幕從新編碼。混流(封裝、打包)後的文件,能夠經過分離(分解、解包)操做,得到與原始素材如出一轍的獨立的視頻、音頻和字幕文件。 ssh


視頻的分離與合成,編碼和解碼 ide

對媒體流的處理分爲兩種:「編碼(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(濾鏡) spa


什麼是HDTV」中已經描述了HDTV的幾個要素,相應地,要播放HDTV,就首先要正確地解開封裝,而後進行視頻音頻解碼。因此咱們須要分離器,視頻解碼器和音頻解碼器,俗稱HDTV的「三件套」,又統稱濾鏡。

1、分離器:
要正確地播放多媒體文件,首先是正確地調用分離器,把視頻軌和音頻軌分離出來。分離器相應分爲三大類。
一、MPEG2 TS分離器:
月光(全稱Moonlight-Elecard MPEG2 Demultiplexer),兼容性很是好,是首選的MPEG2分離器。
Gabest(就是Mpeg Splitter),MPC的做者Gabest編寫的分離器。
NVIDIA Transport Demux(nVidia自家的分離器),是PureVideo家族成員之一,只能配合自家族的視頻音頻解碼器,配合N卡比較好。
二、H264的分離器:
常見的有Gabest MP4分離器,就是MP4splitter,也是Gabest編寫的,Halli的分離器和NDigital分離器等。
三、HD-WMV的分離器:
微軟封閉技術,WMP9以上都自帶了,XP用戶都不須要裝。

2、視頻解碼器
各大公司不斷研發新版本,提高畫質,改善兼容性,增強顯卡硬件加速做用。
一、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卡六、7系列的顯卡上。
Dscaler5以上所說的PowerDVD、WinDVD、月光、Sonic等的視頻解碼器均可以打開顯卡硬件加速,下降CPU的負擔。
二、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)。
三、HD-WMV
只能用上微軟自家的解碼器,N卡六、7系以上能打開加速。
HDTV視頻解碼cpu佔用很高,目前最強的cpu也難以完成,並且cpu做爲通用處理器,用於視頻解碼則效率很低,因此HDTV播放的關鍵是顯示卡的解碼加速。視頻解碼器可否支持顯示卡硬件加速,是可否播放HDTV的關鍵。

3、音頻解碼器:
ffdsshow,月光音頻解碼器、WinDVD的音頻解碼器、PowerDVD的音頻解碼器、AC3Filter音頻解碼器。
若是播放HDTV時碰到有聲無畫或者有畫無聲,就應該本身從解碼器着手,替換一個試試。
code

相關文章
相關標籤/搜索