2013-01-03 133 views
3

我想編寫一個通過網絡傳輸音頻和視頻的應用程序。作爲一個簡單的開始,我想嘗試音頻部分。GStreamer:通過網絡流式傳輸vorbis編碼的音頻

我想通過網絡傳輸來自麥克風的vorbis編碼音頻。我開始用下面的管道的接收器:

gst-launch-0.10 tcpserversrc host=localhost port=3000 ! oggdemux ! vorbisdec ! audioconvert ! audio/x-raw-int, endianness="(int)1234", signed="(boolean)true", width="(int)16", depth="(int)16", rate="(int)22000", channels="(int)1" ! alsasink

而且發件人:

gst-launch-0.10 autoaudiosrc ! audio/x-raw-int,rate=22000,channels=1,width=16 ! audioconvert ! vorbisenc ! oggmux ! tcpclientsink host=localhost port=3000

這類作品,但聲音是斷斷續續的。

有人可以給我一個提示如何我可以通過網絡從我的麥克風順利 vorbis-編碼和流音頻?

編輯:我用audiotestsrc並提出了輸出的記錄:http://db.tt/oDuQ2O41

回答

1

我曾嘗試下面這些命令(從那些在原崗位sligthly修改) ,他們可以解決了「斷斷續續」的聲音問題,我

發件人:

 
gst-launch-0.10 autoaudiosrc ! \ 
audio/x-raw-int, endianness="(int)1234", signed="(boolean)true", width="(int)16", depth="(int)16", rate="(int)22000", channels="(int)1" ! \ 
audioconvert ! \ 
vorbisenc ! \ 
oggmux max-delay=50 max-page-delay=50 ! \ 
tcpclientsink host=localhost port=3000 

接收器:

 
gst-launch-0.10 tcpserversrc host=localhost port=3000 ! \ 
oggdemux ! \ 
vorbisdec ! \ 
audioconvert ! \ 
audio/x-raw-int, endianness="(int)1234", signed="(boolean)true", width="(int)16", depth="(int)16", rate="(int)22000", channels="(int)1" ! \ 
pulsesink 
0

改變你的發件人管道 -

gst-launch-0.10 autoaudiosrc ! audio/x-raw-int,rate=22000,channels=1,width=16 ! audioconvert ! vorbisenc ! identity silent=true sync=true ! oggmux ! tcpclientsink host=localhost port=3000

這將控制數據生成速率管道時鐘。 讓我知道這是否工作。

+0

我試過了,但沒有改變任何東西。音頻仍然很搶手。我將記錄搶奪(明天左右),也許這有助於確定問題。不管怎麼說,多謝拉! – youknow