2013-01-03 130 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