GStreamer音频操作方法?

时间:2016-06-08 01:21:04

标签: raspberry-pi gstreamer audio-streaming

我一直试图找出GStreamer仅用于音频"现在几天,但是在1.0和0.10之间有不同的指令,并且大多数说明与视频有关,我很难理解它们如何组合在一起并通过网络(相同的子网范围)进行通信。大多数示例似乎也希望将音频发送到目的地而不是等待连接到它的东西,我不认为这是我需要的。

基本上,我使用的是与IP摄像头对话的BlueIris摄像机录像系统。不幸的是,我的相机没有麦克风,所以我想使用带有USB麦克风的备用RaspberryPI来提供音频,而BlueIris将连接到它以获取音频。显然,我可以使用rtsp或其他流媒体源指定备用音频源。

相机工作得很好,所以gstreamer只是我的音频来源。

到目前为止我的进展如下:

我已经想出如何使用以下方式播放USB麦克风到扬声器的音频:

gst-launch-1.0 alsasrc device=hw:1 ! audioconvert ! autoaudiosink

这很有效。

然后我尝试设置TCP Sever会话以等待连接到它的东西:

gst-launch-1.0 alsasrc device=hw:1 ! audioconvert ! audioresample ! speexenc ! rtpspeexpay ! tcpserversink
Setting pipeline to PAUSED ...
Pipeline is live and does not need PREROLL ...
Setting pipeline to PLAYING ...
New clock: GstAudioSrcClock
Redistribute latency...
Redistribute latency...

(服务器似乎没有问题。)

然后让客户连接:

gst-launch-1.0 tcpclientsrc ! speexdec ! autoaudiosink
Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...
ERROR: from element /GstPipeline:pipeline0/GstTCPClientSrc:tcpclientsrc0: Internal data flow error.
Additional debug info:
gstbasesrc.c(2948): gst_base_src_loop (): /GstPipeline:pipeline0/GstTCPClientSrc:tcpclientsrc0:
streaming task paused, reason error (-5)
ERROR: pipeline doesn't want to preroll.
Setting pipeline to NULL ...
Freeing pipeline ...

......那是一个很大的NOPE!

所以我希望测试一下,我可以去我的Windows机器启动VLC并尝试使用类似rtsp://192.168.0.123的连接到Raspberry PI,但这就是模糊的地方特别是当我甚至无法让gstreamer连接到同一个盒子上时。

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:1)

这对我有用:

gst-launch-1.0 alsasrc device=hw:1,0 ! mulawenc ! rtppcmupay ! udpsink host=224.1.1.1 auto-multicast=true port=5000

现在VLC可以转到rtp://224.1.1.1:5000并拥有我想要的正确编解码器。

接下来的问题......