音頻視頻解決方案:GStreamer-ffmpeg-ffdshow-directshow-vfw

來源:互聯網
上載者:User

linux和window下幾種流行的音頻視頻編程架構作一個總結,防止自己迷惘,免於暈頭轉向。

一、GStreamer

GStreamer is a library that allows the construction of graphs of media-handlingcomponents, ranging from simple Ogg/Vorbis playback to complex audio (mixing)and video (non-linear editing) processing.
GStreamer是一個開源的多媒體架構庫。利用它,可以構建一系列的ApsaraVideo for Media Processing模組,包括從簡單的ogg播放功能到複雜的音頻(混音)和視頻(非線性編輯)的處理。
應用程式可以透明的利用解碼和過濾技術。開發人員可以使用簡潔通用的介面來編寫一個簡單的外掛程式來添加新的解碼器或濾鏡
gstreamer是linux上的(也支援其它系統) multi-media framework 多媒體應用程式框架。一直以來,linux上的多媒體開發都很麻煩,由於沒有統一模型,所以很多東西都需要自己實現(或者code copy)。gstreamer的目的就是彌補這一缺陷。gstreamer有一個核心,核心管理許多的elements。每個element都有自己的功能,比如:音量控制、mp3解碼、從硬碟讀取多媒體資料、把聲音發往音效卡等。使用者變成所需要做的,就是把用得著的elements串成線(pipeline)。多媒體流就可以在pipeline裡流動了,一旦pipeline正常工作,就意味著音樂出來了、vedio出來了...pipeline是在單獨的線程中啟動並執行,所以你不必擔心自己的進程會阻塞。並且pipeline線程的管理(建立、銷毀、IPC等)都是gstreamer自己負責的,使用者程式只需要對其發出控制資訊久可以了。
在Window平台上有DirectShow體系,則在linux平台上有GStreamer架構.

二、ffmpeg

FFmpeg is a complete solution to record, convert and stream audio and video. Itincludes libavcodec, the leading audio/video codec library. FFmpeg is developedunder Linux, but it can compiled under most operating systems, includingWindows.

ffmpeg項目由以下幾部分組成:
ffmpeg 視頻檔案轉換命令列工具,也支援經過即時電視卡抓取和編碼成視頻檔案.
ffserver 基於HTTP(RTSP正在開發中)用於即時廣播的多媒體伺服器.也支援時間平移
ffplay 用 SDL和FFmpeg庫開發的一個簡單的媒體播放器
libavcodec 一個包含了所有FFmpeg音視頻轉碼器的庫.為了保證最優效能和高可複用性,大多數轉碼器從頭開發的.
libavformat 一個包含了所有的普通音視格式的解析器和產生器的庫.

三、ffdshow

ffdshow is DirectShow and VFW codec for decoding/encoding many video and audioformats, including DivX and XviD movies using libavcodec, xvid and otheropensourced libraries with a rich set of postprocessing filters.

ffdshow是對一些codec(ffmpeg,xvid, and other)的封裝,封裝成了DirectShow和VFW的標準組件。比如對於xvid來講,ffdshow是可以選擇具體使用那個codec的, ffmpeg(libavcodec) or xvid。那麼封裝有沒有額外的成本哪?有,但對大部分應用來講,可以忽略不計。就如c++和c。
vfw和dshow裡的CODEC分別是通過fourcc碼和guid機制尋找的,可以在系統註冊codec後調用,比內建編解碼庫形式更加統一,便於使用。此外,vfw和dshow是代表了兩個微軟不同時期的音視頻處理封裝庫,裡麵包含了音視頻驅動,音視頻處理的一整套方案。

四、DirectShow
DirectShow是微軟公司在ActiveMovie和Videofor Windows的基礎上推出的新一代基於COM的流ApsaraVideo for Media Processing的開發包,與DirectX開發包一起發布。目前,DirectX最新版本為9.0。 DirectShow為多媒體流的捕捉和回放提供了強有力的支援。運用DirectShow,我們可以很方便地從支援WDM驅動模型的採集卡上捕獲資料,並且進行相應的後期處理乃至儲存到檔案中。這樣使在多媒體資料庫管理系統(MDBMS)中多媒體資料的存取變得更加方便。DirectShow是微軟公司提供的一套在Windows平台上進行流ApsaraVideo for Media Processing的開發包,與DirectX開發包一起發布。
運用DirectShow,我們可以很方便地從支援WDM驅動模型的採集卡上捕獲資料,並且進行相應的後期處理乃至儲存到檔案中。它廣泛地支援各種媒體格式,包括Asf、Mpeg、Avi、Dv、Mp3、Wave等等,使得多媒體資料的回放變得輕而易舉。另外,DirectShow還整合了DirectX 其它部分(比如DirectDraw、DirectSound)的技術,直接支援DVD的播放,視頻的非線性編輯,以及與數字攝像機的資料交換。

五、vfw
VFW(Videofor Windows)是Microsoft推出的關於數位視訊的一個軟體開發包,VFW的核心是AVI檔案標準。AVI(Audio Video Interleave)檔案中的音、視頻資料幀交錯存放。圍繞AVI檔案,VFW推出了一整套完整的視頻採集、壓縮、解壓縮、回放和編輯的應用程式介面(API)。它引進AVI的檔案標準,該標準未規定如何對視頻進行捕獲、壓縮及播放,僅規定視頻和音頻該如何儲存在硬碟上,在AVI檔案中交替儲存視訊框架和與之相匹配的音頻資料。VFW給程式員提供.VBX和AVICap視窗類別的進階編程工具,使程式員能通過發送訊息或設定屬性來捕獲、播放和編輯視訊剪輯。現在使用者不必專門安裝VFW了,Windows95本身包括了Videofor Windows1.1,當使用者在安裝Windows時,安裝程式會自動地安裝配置視頻所需的組件,如裝置驅動程式、視頻壓縮程式等。由於AVI檔案格式推出較早且在數位視訊技術中有廣泛的應用,所以VFW仍然有很大的實用價值,而且進一步發展的趨勢。

  VFW主要由以下六個模組組成:

  (1)AVICAP.DLL:包含了執行視頻捕獲的函數,它給AVI檔案I/O和視頻、音訊裝置驅動程式提供一個進階介面;

  (2)MSVIDEO.DLL:用一套特殊的DrawDib函數來處理螢幕上的視頻操作;

  (3)MCIAVI.DRV:此驅動程式套件括對VFW的MCI命令的解譯器

  (4)AVIFILE.DLL:支援由標準多媒體I/O(mmio)函數提供的更高的命令來訪問.AVI檔案;

  (5)壓縮管理器(ICM):管理用於視頻壓縮-解壓縮的轉碼器(CODEC);

  (6)音頻壓縮管理器ACM:提供與ICM相似的服務,不同的是它適于波形音頻。

  Visual C++在支援VFW方面提供有vfw32.lib、 msacm32.lib 、winmm.lib等類似的庫。特別是它提供了功能強大、簡單易行、類似於MCIWnd的視窗類別AVICap。AVICap為應用程式提供了一個簡單的、基於訊息的介面,使之能訪問視頻和波形音頻硬體,並能在將視頻流捕獲到硬碟上的過程中進行控制

在VC++開發環境中調用VFW和使用其它開發包沒有什麼不同,只是需要將VFW32.lib檔案加入工程中,但在開放視頻捕捉與壓縮管理程式時需要其它軟體硬體設定。VFW為AVI檔案提供了豐富的處理函數和宏定義,AVI檔案的特點在於它是典型的資料流檔案,它由視頻流、音頻流、文字資料流組成。所以對AVI檔案的處理主要是處理檔案流。

 

 

在Windows平台上建立GStreamer開發環境: http://blog.csdn.net/joliny/article/details/4385585

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.