2016-06-08 167 views
1

我一直在试图找出GStreamer为“仅音频”几天现在,但1.0和0.10之间的不同指令,并且大多数说明都是关于视频,我很难理解它是如何实现的通过网络(相同的子网范围)融合在一起并通话。大多数例子似乎也想将音频发送到目的地,而不是等待某些东西连接到它,我不认为这是我需要的。GStreamer音频操作方法?

基本上,我使用BlueIris相机录制系统与IP摄像机进行对话。不幸的是,我的相机没有麦克风,所以我想用一个带有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

+1它很好看真有人尝试问问题之前:)现在..不要担心你非常接近您的解决方案..第一件事就是给你一些知识:使用'GST_DEBUG = 4 gst-launch-1.0 ...'来调试发生的事情..现在你用rtp支付流,所以你需要用rtp元素卸载的接收器..它始终在服务器和客户机上对称(当然,在客户端它的方向与服务器相反),请在speexdec之前添加'rtpspeexdepay' ..如果您有任何进展,请写信给我评论 – nayana

+0

非常感谢@otopolsky的回复。自从(和一些RPI问题)以来,我一直在尝试很多事情,并且我终于找到了一些可行的方法。这是我最后的命令行:'gst-launch-1.0 alsasrc device = hw:1,0! mulawenc! rtppcmupay! udpsink host = 224.1.1.1 auto-multicast = true port = 5000'正如你所看到的,我选择了多播方式。无论如何,我在一个小型私人网络上。这样我可以让我的相机录制应用程序记录音频,我甚至可以在我的Windows PC上加载VLC,并直接通过转到'rtp://224.1.1.1:5000'进行监听,并且它可以工作! –

+0

完美的,你可以添加你自己的答案,并接受它为正确的 - 它会帮助别人,很高兴听到你解决它后,所有的斗争:) – nayana

回答

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并且具有正确的编解码器,我想。

下一个问题......