2010-11-14 222 views
0

儘管我不確定Stack Overflow是否是提出這個問題的最佳地點,但我可以想出它的最佳效果,看看我的谷歌技術如何讓我失望......儘管這個問題沒有解決並非特定於任何語言,我認爲這裏的人應該能夠幫助我理解這些概念和理論。分離音頻和視頻流

因此,隨着中說...

我已經看到了撕裂比如從YouTube視頻音頻不少服務。看到我很好奇用視頻編程,我認爲實現相同的目標是一種非常有益且簡單的方法。

至於這個問題的技術細節,我迷路了。對於視頻回放的工作原理我沒有一個好主意,而我對如何通過編程分離這些東西毫無頭緒。

感謝您的時間和耐心。

回答

0

這是一個相當廣泛的問題,但我會試一試。基本上有兩種方法:

  1. 模擬回放,並以某種方式捕獲輸出音頻。
  2. 下載或竊聽從服務器獲取原始視頻流並將其保存到磁盤。然後,知道容器格式的佈局,提取只編碼音頻的比特流。

選項1可以實現,即使你不能反向工程的格式,但我不認爲這是一個受歡迎的選擇,因爲它是緩慢的,需要再一次編碼的音頻,引起可能下降質量。所以選項2是首選。

我不知道Adobe FLV流(這是YouTube使用什麼)的細節,除了FLV是一種將音頻/視頻信號合併到一個流中的容器格式。你將不得不學習如何解析它們(或者找一個能爲你做的圖書館)。您還需要找到想要閱讀的flv流的url。對於測試,您可以在回放視頻後從您的臨時互聯網文件開始閱讀。

+0

我不太瞭解這個概念。我認爲,如果聲卡是由聲卡處理的,它應該以某種方式訪問​​,這是....你認爲你可以指向我的地方閱讀這個?到目前爲止,我甚至不知道我會搜索什麼。 – Roger 2010-11-18 00:16:16

+0

你是否搜索了FLV格式的信息? – 2010-11-18 07:06:31

+0

http://en.wikipedia。org/wiki/Flash_Video – 2010-11-18 07:08:45

0

您可以通過以下方式的VLC應用做到這一點:

只是音頻

VLC --daemon --ttl 7 --ipv4 「/home/user/song.mp3」:SOUT ='#transcode {acodec = mp3,ab-128}:std {access = mmsh,mux = asfh,dst =:3333}':no-sout-rtp-sap:no-sout-standard-sap:sout-keep

只是視頻

VLC --daemon --ttl 7 --ipv4用v412:///開發/ video0的:用v412標= 0:輸入從式= ALSA://:SOUT ='#轉碼{了vcodec = DIV3,VB = 2000,標度= 1,ACO dec = none}:std {access = mmsh,mux = asfh,dst =:3333}':no-sout-rtp-sap:no-sout-standard-sap:sout-keep

+0

如果你這樣做,你會轉換音頻導致質量更差。 – 2010-11-17 19:04:24

0

你可以去看看在TAE,http://github.com/tuna74/TunaAudioExtracter。請記住,TAE只會轉儲音頻流,並且只在必要時進行轉碼。

+0

好的,謝謝......但我一直在尋找更多的理論背後。雖然我一定會看到所有這些源代碼,但我猜測我無法完全理解所有這些內容。但再次感謝,這絕對有幫助。 – Roger 2010-11-18 00:18:32