有人可以显示最新的 webrtcbin 管道吗?目前我使用这些管道,但它们不起作用。
发送:
gst-launch-1.0 webrtcbin bundle-policy=max-bundle name=sendrecv stun-server=stun://stun.l.google.com:19302 audiotestsrc is-live=true wave=red-noise ! audioconvert ! audioresample ! queue ! opusenc ! rtpopuspay ! application/x-rtp,media=audio,encoding-name=OPUS,payload=97 ! sendrecv.
接收:
gst-launch-1.0 webrtcbin bundle-policy=max-bundle name=sendrecv stun-server=stun://stun.l.google.com:19302 ! rtpopusdepay ! opusdec ! audioconvert ! autoaudiosink async=false
谢谢!!!
简短的回答是,您将无法从命令行运行 WebRTC 管道。另一位用户已经发布了一些示例代码,您需要根据您的用例进行调整:https://github.com/centric/gstwebrtc-demos
命令行示例缺少 WebRTC 的一个关键部分:信令服务器。在通过 WebRTC 建立连接之前,管道的发送端和接收端需要能够交换两位信息:SDP 和 ICE 候选者。这将允许他们协商流的格式和参数 (SDP) 以及通过点对点连接 (ICE) 相互连接的方式。如果没有这个,就无法建立连接。
请注意,WebRTC 规范没有指定信令服务器需要如何实现。例如,通过电子邮件交换 SDP 和 ICE 候选者是完全有效的,但是信令服务器作为实际服务器更有意义。
这可以通过
webrtcsink
元素实现,它包装 webrtcbin
,并包含内置信令服务器和 Web UI:
git clone https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs.git
# This requires a Rust compiler
cargo build --release -p gst-plugin-webrtc --lib
export GST_PLUGIN_PATH=`pwd`/target
cd net/webrtc
gst-launch-1.0 videotestsrc ! webrtcsink run-signalling-server=true run-web-server=true
Web 服务器默认使用端口 8080,因此访问 http://localhost:8080,您应该会看到一个网页,单击视频流 ID,它将打开包含 GStreamer
videotestsrc
元素输出的 WebRTC 流。
有关 webrtcbin、webrtcsink 和 webrtcsrc 的更多信息,请参阅 使用 GStreamer 进行 WebRTC 管道