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

音頻視頻編程相關: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是一個開源的多媒體框架庫。利用它,可以構建一系列的媒體處理模塊,包括從簡單的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的流媒體處理的開發包,與DirectX開發包一起發布。目前,DirectX最新版本為9.0。 DirectShow為多媒體流的捕捉和回放提供了強有力的支持。運用DirectShow,我們可以很方便地從支持WDM驅動模型的采集卡上捕獲數據, 并且進行相應的后期處理乃至存儲到文件中。這樣使在多媒體數據庫管理系統(MDBMS)中多媒體數據的存取變得更加方便。DirectShow是微軟公司 提供的一套在Windows平臺上進行流媒體處理的開發包,與DirectX開發包一起發布。
運用DirectShow,我們可以很方便地從支持WDM驅動模型的采集卡上捕獲數據,并且進行相應的后期處理乃至存儲到文件中。它廣泛地支持各種媒體格 式,包括Asf、Mpeg、Avi、Dv、Mp3、Wave等等,使得多媒體數據的回放變得輕而易舉。另外,DirectShow還集成了DirectX 其它部分(比如DirectDraw、DirectSound)的技術,直接支持DVD的播放,視頻的非線性編輯,以及與數字攝像機的數據交換。

四、vfw
Video For Windows


本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/453998.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/453998.shtml
英文地址,請注明出處:http://en.pswp.cn/news/453998.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Linux 將進程放入后臺執行,解決網絡,ssh斷開導致進程結束(nohup, setsid, , disown)...

Linux 將進程放入后臺執行,解決網絡,ssh斷開導致進程結束(nohup, setsid, &, disown) 1、nohup 命令 我們知道,當用戶注銷(logout)或者網絡斷開時,終端會收到 HUP(…

bzoj1927

1927: [Sdoi2010]星際競速Time Limit: 20 Sec Memory Limit: 259 MBSubmit: 2556 Solved: 1580[Submit][Status][Discuss] Description 10年一度的銀河系賽車大賽又要開始了。作為全銀河最盛大的活動之一,奪得這個項目的冠軍無疑是很多人的夢想,來自杰…

python until怎么用_python基礎之從認識python到python的使用

python的歷史:python的創始人是吉多范羅蘇姆(Guido van Rossum),人稱“龜叔”,1989年圣誕節期間,Guido開始寫Python語言的編譯器。他希望這個叫做Python的語言能符合他的理想:創造一種C和shell之間,功能全面…

前端之同源策略 Jsonp 與 CORS

同源策略 同源策略(Same origin policy)是一種約定,它是瀏覽器最核心也最基本的安全功能,如果缺少了同源策略,則瀏覽器的正常功能可能都會受到影響。可以說Web是構建在同源策略基礎之上的,瀏覽器只是針對同…

vue新手入門——vue-cli搭建

首先說明,以下內容vue官網都有文檔,如果覺得麻煩啰嗦,請移步至 安裝-vue.js 。 準備工作: 1.下載并安裝node環境,一般情況下安裝好node之后,npm也會安裝好。具體安裝的話,百度大概能幫得上忙。 …

如何看懂源代碼–(分析源代碼方法)

我們在寫程式時,有不少時間都是在看別人的代碼。例如看小組的代碼,看小組整合的守則,若一開始沒規劃怎么看, 就會“嚕看嚕苦(臺語) ” 不管是參考也好,從開源抓下來研究也好,為了了解…

linux關于安裝

一.安裝gcc gcc cloog-ppl ppl(libppl.so.7/libppl_c.so.2) cpp mpfr(libmpfr.so.1) gcc-c libstdc-devel mpfr-2.4.1-6.el6.i686.rpm和ppl-0.10.2-11.el6.i686.rpm 快捷鍵rz sz: rz、sz命令沒找到? 安裝lrzsz即可: shell># y…

python cmath模塊_cmath模塊-PYTHON

這是一個float型的常數>>> cmath.e2.718281828459045>>> type(cmath.e)文檔>>> import cmath>>> help(cmath)Help on module cmath:NAMEcmathFILE/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload/cm…

Python 第三方模塊之 pdfkit

pdfkit,把 HTMLCSS 格式的文件轉換成 PDF 格式文檔的一個工具。 其實,pdfkit 是 html 轉成 pdf 工具包 wkhtmltopdf 的 Python 封裝。所以,首先安裝 wkhtmltopdf 。 一般情況下,wkhtmltopdf需要手動安裝,網站是 https…

LNMP環境添加第三方模塊

一.在LNMP環境下添加memcache模塊 1.安裝依賴庫(libevent) [rootnode1 ~]# tar xvf libevent-2.0.21-stable.tar.gz [rootnode1 ~]# cd libevent-2.0.21-stable [rootnode1 libevent-2.0.21-stable]# ./configure --prefix/usr/local/libevent [rootnode1 libevent-2.0.21-sta…

學生成績管理系統-程序維護

托管平臺地址:https://gitee.com/lucess/StudentMarkManage.git 小組名稱:干翻沈師 程序運行方法: 1、后臺服務:進入項目文件夾執行 python TeamProject.py runsercer 0.0.0.0:5050 2、前臺服務:進入./WEB-INFO/TeamProjectWeb 文件夾執行 ya…

改需求

轉載于:https://www.cnblogs.com/gw2010/p/7856484.html

架構師一般做到多少歲_軟件測試可以做到多大歲數?

做這個行業也幾年了,經常聽到有人問,軟件測試這個行業能干到多少歲,當然里邊包含想要進入這個行業的和已經在這個行業里邊發展的!基本上軟件測試可以分為三條職業發展路線:技術路線、管理路線、產品路線!目…

Python 第三方模塊之 MySQL數據庫連接模塊 PyMySQL

PyMySQL的安裝 pip install PyMySQL python連接數據庫 import pymysqlconn pymysql.connect(hostlocalhost, userroot, password"root",databasedb, port3306, # 數字3306charsetutf8, # 不是utf-8autocommitTrue # autocommitTrue 讓每次提交都去調用…

初學Spring Boot

1.Spring Boot注解 (1)SpringBootApplication開啟了Spring的組件掃描和Spring Boot的自動配置,實際上,SpringBootApplication是將三個注解組合在了一起,這三個注解分別是 SpringBootConfiguration,ComponentScan,Ena…

15條常用的視頻音頻編輯腳本命令(mencoder/ffmpeg等)

可以把它當快速簡易參考看,主要的功能有: 視頻格式轉換音頻格式轉換切割視頻及音頻連接兩段視頻視頻音頻同步將圖像系列轉換成視頻 這里是百鬼丸以前收集的一部分命令行視頻音頻編輯腳本命令,一直在自己的記事本里隨時用,現在…

python rowcount_PyQt(Python+Qt)學習隨筆:QTableWidget的currentItem、rowCount、columnCount等部件狀態屬性訪問方法...

老猿將QTableWidget表格部件中反映部件當前情況的一些方法歸類為部件狀態訪問方法,包括部件的行數、列數、當前項、當前行、當前列等屬性訪問方法。1、行數rowCountQTableWidget的rowCount屬性保存表格部件中的行數,在QTableWidget創建時如果沒有指定行數…

Python 內置模塊之 random

常用API import random# 隨機小數 print(random.random()) # 大于0且小于1之間的小數。0< n<1.0 print(random.uniform(1,3)) # 大于1小于3的小數# 隨機整數 print(random.randint(1,5)) # 大于等于1且小于等于5之間的整數#從指定范圍內&#xff0c;按指定基…

微信jssdk遇到的一些問題匯總

1.用戶手動去觸發的接口可以直接調用比如wx.startRecord(); 但是寫在頁面加載完成里就無效&#xff0c;需要寫在 wx.ready(function(){wx.startRecord(); }); 才會有效。 2.h5 的audio標簽只支持ogg,mp3,wav格式的音頻&#xff0c;微信jssdk錄制的是amr格式的語音文件&#xf…

mongodb簡單的增刪改查

數據庫操作&#xff1a; show dbs;#查看數據庫use test;#如果沒有就創建一個db;#查看當前數據庫db.dropDatabase();#刪除數據庫 數據操作&#xff1a;show collections&#xff1b;#查看集合創建集合、插入&#xff1a;create collection;#創建集合db.student.insert({"na…