2012-02-25 90 views
1

繼我的其他post之後,我對wondernig是否有可能在解碼音頻數據包上執行一些類似MFCC提取的過程進行了說明。我使用ffmpeg從mpeg-2文件中解碼音頻和視頻的代碼。視頻處理是使用opencv完成的,因爲該庫允許通過一個幀來抓取幀。我需要在同一時間處理相應的音頻樣本。使用ffmpeg解碼的過程音頻數據包

謝謝。

+0

我應該添加更多細節嗎? – Eric 2012-02-27 10:25:36

回答

1

我創建了一個名爲「Crosstalk」的C++音頻引擎。

雖然它被稱爲「音頻引擎」,但它實際上只是一個實時C++數據(浮點)處理引擎。串擾允許您在設計時和實時創建和路由系統。基本上,引擎會處理所有的數據路由,併爲您提供一個創建組件的簡單平臺,通過這些組件可以處理數據(例如,您的「音頻饋送」組件與「視頻饋送」組件並行連接)。只要您的分支具有相同的緩衝區總長度,它們將完全同步。

這非常容易使用。下面是如何在系統中配置播放MP3文件的例子(這裏所用的部件提供發動機):

XtSystem system; 
XtMp3Decoder mp3Decoder; 
XtAudioDevice audioDevice; 

long md = system.addComponent(&mp3Decoder); 
long ad = system.addComponent(&audioDevice); 

system.connOutToIn(md,0,ad,0); 
system.connOutToIn(md,1,ad,1); 

mp3Decoder.loadFile("../05 Tchaikovski-Swan Lake-Scene.mp3"); 
mp3Decoder.play(); 

你可以看看這裏的API文檔和許可的詳細信息:http://www.adaptaudio.com/Crosstalk

編輯(01-12-2012):

串擾已被替換爲一個名爲「DSPatch」的開源項目。 DSPatch實質上是Crosstalk背後的路由引擎的升級版,不再僅限於音頻處理。 DSPatch允許您創建和路由幾乎任何類型的可以想象的流程鏈,並免費供個人使用和專有使用:)

+0

感謝您的鏈接。我已經使用mencoder(更穩定,然後ffmpeg)解碼流,但我會專注於您的lib。 – Eric 2012-04-09 11:59:39