gst-webrtc
本文介绍了GStreamer的WebRTC相关组件及使用方式。主要内容包括:1) GStreamer官方提供的WebRTC信令服务器源码和Web客户端示例;2) webrtcsink和webrtcsrc组件的命令行使用方法,包含推流和拉流示例;3) 基于Rust实现的webrtcsrc/webrtcsink组件及其与Livekit、Janus的对接方案;4) 支持WHEP/WHIP协议的推拉流客户
https://gitlab.freedesktop.org/gstreamer/gstreamer/-/tree/main/subprojects/gst-examples/webrtc
:gstreamer的webrtc的ws信令服务器源码及编译,含web客户端。webrtcbin为webrtcsink. .webrtcsink的使用。
https://webrtchacks.com/webrtc-plumbing-with-gstreamer/
webrtcbin为webrtcsink. .webrtcsink命令行的使用,及历史,2024年6月11日为止WHEP仍然在开发中。
提供了以下两个命令:
gst-launch-1.0 -v \
videotestsrc ! video/x-raw,width=640,height=480,framerate=30/1 ! \
webrtcsink stun-server=stun://stun.l.google.com:19302 signaller::uri=ws://<your-signaling-server>:8443
gst-launch-1.0 -v \
webrtcsrc stun-server=stun://stun.l.google.com:19302 signaler::uri=ws://<your-signaling-server>:8443 ! \
queue ! videoconvert ! autovideosink
官方文档,介绍rust实现的webrtcsrc,webrtcsink,以及与livekit,janus对接的webrtc客户端。
支持WHEP和WHIP的webrtc推拉流客户端
https://gstreamer.freedesktop.org/documentation/rswebrtc/webrtcsink.html?gi-language=c
https://gstreamer.freedesktop.org/documentation/webrtchttp/whepsrc.html?gi-language=c
运行以下命令安装 rustup:
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
安装过程中会提示选择安装选项,输入 1 选择默认安装(安装稳定版 Rust)。
安装完成后,rustup 会将 Rust 工具链(包括 rustc、cargo 等)安装到 ~/.cargo/bin,并自动添加到系统 PATH。
安装完成后,重新加载 shell 环境以确保 PATH 更新:
source $HOME/.cargo/env
以下命令环境配置,gststream + gst-plugins-rs,webrtc的扩展是在gst-plugins-rs中实现的。
推流:(延时较大)
gst-launch-1.0 v4l2src device=/dev/video0 ! video/x-raw,format=YUY2,width=640,height=480,framerate=30/1 ! \
videoconvert ! x264enc ! rtph264pay ! \
whipsink name=whip use-link-headers=true whip-endpoint="http://localhost:1985/rtc/v1/whip/?app=live&stream=show"
拉流:
gst-launch-1.0 whepsrc signaller::whep-endpoint="http://localhost:8080/players/whep.html?stream=show&autostart=true" ! \
decodebin ! videoconvert ! autovideosink
以下推拉流问题,用更新版本解决,这里用的是1.25
//OK
gst-launch-1.0 videotestsrc ! videoconvert ! openh264enc ! rtph264pay ! 'application/x-rtp,media=video,encoding-name=H264,payload=97,clock-rate=90000' ! whip.sink_0 audiotestsrc ! audioconvert ! opusenc ! rtpopuspay ! 'application/x-rtp,media=audio,encoding-name=OPUS,payload=96,clock-rate=48000,encoding-params=(string)2' ! whip.sink_1 whipsink name=whip whip-endpoint="http://localhost:1985/rtc/v1/whip/?app=live&stream=show"
//OK
gst-launch-1.0 v4l2src device=/dev/video0 ! videoconvert ! openh264enc ! rtph264pay ! 'application/x-rtp,media=video,encoding-name=H264,payload=97,clock-rate=90000' ! whipsink name=whip whip-endpoint="http://localhost:1985/rtc/v1/whip/?app=live&stream=show"
//OK
yqw@yqw-Vostro-3681:~$ gst-launch-1.0 v4l2src device=/dev/video0 ! video/x-raw,width=1280,height=720 ! videoconvert ! openh264enc ! whipclientsink name=whip signaller::whip-endpoint="http://localhost:1985/rtc/v1/whip/?app=lives&stream=shows"
以上能推流成功,网页拉流,需要另一个网页先推流好,然后关闭这个推流网友,用命令推流,拉流网页才能显示推的流。直接命令推,网页拉不到流。
//看日志推流成功,但无法拉到它的流
GST_DEBUG=4 gst-launch-1.0 v4l2src device=/dev/video0 ! videoconvert ! openh264enc ! whipclientsink name=whip signaller::whip-endpoint="http://localhost:1985/rtc/v1/whip/?app=lives&stream=shows"
拉流
gst-launch-1.0 whipserversrc signaller::host-addr="http://localhost:1985/rtc/v1/whip/?app=lives&stream=shows" stun-server="stun://stun.l.google.com:19302" ! video/x-h264 ! h264parse ! avdec_h264 ! videoconvert ! autovideosink
gst-launch-1.0 whepclientsrc signaller::whep-endpoint="http://localhost:1985/rtc/v1/whep/?app=live&stream=show" ! video/x-h264 ! h264parse ! avdec_h264 ! videoconvert ! autovideosink
[srs 网页 搭建本地推拉流环境](https://blog.csdn.net/weixin_43466192/article/details/134300871?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522f26544eba830d9a0944548c93494e963%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=f26544eba830d9a0944548c93494e963&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_ecpm_v1~rank_v31_ecpm-2-134300871-null-null.nonecase&utm_term=srs&spm=1018.2226.3001.4450)
火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。
更多推荐
所有评论(0)