【问题标题】:GStreamer audio how-to?GStreamer 音频操作方法?
【发布时间】:2016-07-10 11:28:11
【问题描述】:

几天来,我一直在尝试将 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 很高兴看到有人在提出问题之前真正尝试过 :) 现在.. 不要担心你已经非常接近你的解决方案了.. 首先要给你一些知识:使用 GST_DEBUG=4 gst-launch-1.0 ... 来调试正在发生的事情..现在您使用 rtp 对流进行了有效负载,因此在接收器上您需要使用 rtp 元素解除负载.. 它在服务器和客户端上始终是对称的(当然在客户端上它的方向与服务器上的方向相反),尝试在 speexdec 之前添加 rtpspeexdepay。如果您有一些进展,请给我留言
  • 非常感谢@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 直接收听,它可以工作!
  • 完美,您可以添加自己的答案并接受它作为正确的答案 - 它会帮助其他人,很高兴听到您经过所有努力解决了它:)

标签: raspberry-pi gstreamer audio-streaming


【解决方案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 并具有我想要的正确编解码器。

下一个问题...

【讨论】:

    猜你喜欢
    • 2012-09-15
    • 2020-04-02
    • 1970-01-01
    • 1970-01-01
    • 2022-08-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多