GStreamer:通过网络传输vorbis编码的音频

时间:2013-01-03 14:31:05

标签: networking stream udp 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

这种作品,但音频很抢眼。

有人可以通过网络向我提示如何通过麦克风顺利对音频进行编码和流式处理吗?

编辑:我使用了audiotestsrc并记录了输出:http://db.tt/oDuQ2O41

2 个答案:

答案 0 :(得分: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

这将控制数据生成速率到流水线时钟。 如果有效,请告诉我。

答案 1 :(得分:0)

我在下面尝试过这些命令(与原帖中的命令略有修改) 他们能否为我解决“抢夺”声音问题

发件人:

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