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

來源:互聯網
上載者:User

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

一、GStreamer

GStreamer is a library that allows the construction of graphs of
media-handling components, 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. It includes libavcodec, the leading audio/video codec library.
FFmpeg is developed under Linux, but it can compiled under most
operating systems, including Windows.

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


ffdshow


ffdshow is DirectShow and VFW codec for decoding/encoding many video
and audio formats, including DivX and XviD movies using libavcodec,
xvid and other opensourced 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和Video for
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
Video For Windows

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.