Raspberry pi GStreamer音频指南?

Raspberry pi GStreamer音频指南?,raspberry-pi,gstreamer,audio-streaming,Raspberry Pi,Gstreamer,Audio Streaming,几天来,我一直在试图找出GStreamer是否适用于“仅音频”,但由于在1.0和0.10之间有不同的说明,而且大多数说明都与视频有关,我很难理解它是如何组合在一起并通过网络(相同的子网范围)进行通信的。大多数示例似乎也希望将音频发送到目的地,而不是等待连接到目的地,我认为这不是我需要的 基本上,我使用的是BlueIris摄像机记录系统,它与IP摄像机对话。不幸的是,我的相机没有麦克风,所以我想使用一个备用的RaspberryPI和一个USB麦克风来提供音频,BlueIris将连接到它来获取音频。

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

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

摄像头工作得很好,所以gstreamer将只是我的音频源

到目前为止,我的进展是:

我已经了解了如何使用以下方法将音频从USB麦克风播放到扬声器:

gst-launch-1.0 alsasrc device=hw:1 ! audioconvert ! autoaudiosink
这很有效

然后,我尝试设置TCP服务器会话,以等待连接到它的内容:

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 ...
…这是一个很大的否定

因此,我希望测试,我可以去我的Windows机器,启动VLC,并尝试连接到树莓PI与类似的东西rtsp://192.168.0.123 但这就是一切变得模糊的地方,特别是当我甚至不能让gstreamer在同一个盒子上连接到自己的时候

有人能帮忙吗?

这帮我做到了:

gst-launch-1.0 alsasrc设备=hw:1,0!穆拉文克!rtppcmupay!udpsink主机=224.1.1.1自动多播=true端口=5000

现在VLC工作到
rtp://224.1.1.1:5000
并且有我想要的正确编解码器


关于下一个问题…

+1很高兴看到有人在提问之前真正尝试:)现在。。别担心,你的解决方案已经很接近了。。首先要给你一些知识:使用
GST\u DEBUG=4 GST-launch-1.0…
调试正在发生的事情。。现在,您使用rtp对流进行了付费加载,因此在接收器上,您需要使用rtp元素解除付费加载。。它在服务器端和客户端总是对称的(当然,在客户端,它的方向与服务器相反),请尝试在speexdec之前添加
rtpspeexdepay
。。当你有一些进展时,如果你非常感谢@otopolsky的回复,请给我写一条评论。从那以后我一直在尝试很多事情(还有一些RPI问题),最终我找到了一些有效的方法。这是我的最后一个命令行:
gst-launch-1.0 alsasrc device=hw:1,0!穆拉文克!rtppcmupay!udpsink host=224.1.1.1自动多播=true port=5000
,因此您可以看到我选择了多播方法。反正我在一个小型的私人网络上。通过这种方式,我可以让我的摄像机录制应用程序录制音频,甚至可以在我的Windows PC上加载VLC,通过进入
rtp://224.1.1.1:5000
而且它很有效!很好,你可以添加自己的答案,并将其视为正确答案-这将帮助他人,很高兴听到你在所有的努力之后解决了它:)