【问题标题】:Gstreamer audio Webrtc to Webrtc pipelineGstreamer 音频 Webrtc 到 Webrtc 管道
【发布时间】:2022-09-27 22:20:46
【问题描述】:

我对 Gstreamer 中的 Webrtc 有疑问。我对框架工作比较陌生,我不确定我想要实现的目标是否可行。

我有一个希望连接并检索音频流的 Webrtc 对等体。然后我希望将相同的流通过管道传输到不同端点的另一个 webrtc 对等体。

我可以单独实现这两个方面,即:

  1. 使用 webrtc 流并接收它。
  2. 通过 webrtc 流式传输音频

    这可能吗?如果是这样,有人知道如何实现这一目标的任何例子吗?首选 Python,但 C 也可以正常工作。另外,如果不存在示例,是否有人可以描述一下它是如何工作的。

    TIA

  • 你好。你设法弄清楚这一点吗?我正在尝试将本机 WebRTC 与 C++ 中的 GStreamer 集成。不知何故,我需要将视频从 GStreamer 接收器馈送到 WebRTC VideoTrack。直到现在都没有使用这两个库的经验,这被证明是相当棘手的!任何帮助/提示将不胜感激! (顺便说一句,我对 Python 也很满意。)

标签: python c webrtc gstreamer


【解决方案1】:

Gstreamer 不是适合这项工作的工具,因为它是一个媒体处理库。在 WebRTC 的范围内,Gstreamer 将负责解码媒体流以最终对其进行处理,例如显示视频或播放音频。它或多或少会以以下方式工作:

# Real Time Protocol socket (WebRTC over the network)
[peer A > rtp (udp) stream > peer B]

# Network layer from peer B to media layer in peer B machine
[peer B > rtp stream (local pipe/udp) > Gstreamer pipeline]

# GStreamer pipeline
[src (e.g. udpsrc, appsrc) > rtpdepay (e.g. rtph264depay, rtpopusdepay) > rtp payload filter > decode (e.g. avdec_h264, opusdec) > ... > sink (e.g. autovideosink, autoaudiosink)]

您尝试做的只是绕过数据,因此由于您不打算对数据进行任何类型的处理,因此您的工作流程并不真正需要 Gstreamer。

# Real Time Protocol socket (WebRTC over the network)
[peer A > rtp (udp) stream > peer B.1]

# Bypass
[peer B.1 > rtp stream (local pipe/udp) > peer B.2]

# Real Time Protocol socket (WebRTC over the network)
[peer B.2 > rtp (udp) stream > peer C]

也就是说,看起来很像您在中继对等连接,这就是 TURN 服务器的用途。也许看看它也是一项工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-22
    • 1970-01-01
    相关资源
    最近更新 更多