
mpromonet/webrtc-streamerWebRTC-Streamer是一个基于mpromonet/webrtc-streamer项目的Docker镜像,用于流式传输多种WebRTC媒体源,包括捕获设备、屏幕捕获、mkv文件及RMTP/RTSP源。它采用简单的信令机制,并兼容WHEP接口,可将传统媒体源转换为WebRTC流,适用于视频监控、直播、屏幕共享等场景。
-o选项使用原生编码帧,减少CPU占用(禁用调整大小、编解码器切换和带宽控制)bashdocker run -p 8000:8000 -it mpromonet/webrtc-streamer --help
bashdocker run -p 8000:8000 -it mpromonet/webrtc-streamer
| 参数 | 描述 |
|---|---|
-v[v[v]] | 日志详细程度(v越多越详细) |
-V | 打印版本信息 |
-C config.json | 从JSON配置文件加载媒体源URL |
-n name -u videourl -U audiourl | 为视频/音频URL注册名称 |
[url] | 在源列表中注册的媒体URL |
-H [hostname:]port | HTTP服务器绑定地址(默认0.0.0.0:8000) |
-w webroot | Web文件路径 |
-c sslkeycert | HTTPS的私钥和证书路径 |
-N nbthreads | HTTP服务器线程数 |
-A passwd | HTTP服务器访问密码文件 |
-D authDomain | HTTP服务器认证域(默认:mydomain.com) |
-S[stun_address] | 启动嵌入式STUN服务器(默认0.0.0.0:3478) |
-s[stun_address] | 使用外部STUN服务器(默认:stun.l.google.com:***,-表示禁用) |
-T[username:password@]turn_address | 启动嵌入式TURN服务器(默认禁用) |
-t[username:password@]turn_address | 使用外部TURN服务器(默认禁用) |
-R [Udp port range min:max] | 设置WebRTC UDP端口范围(默认0:65535) |
-W webrtc_trials_fields | 设置WebRTC trials字段(默认:WebRTC-FrameDropper/Disabled/) |
-a[audio layer] | 指定音频捕获层(默认0) |
-q[filter] | 指定发布过滤器(默认:.*) |
-o | 使用原生编码帧(低CPU模式) |
-n定义的别名,对应-u指定的视频URLrtsp://:通过live555的RTSP捕获器打开file://:通过live555的MKV捕获器打开rmtp://:通过librmtp的RMTP捕获器打开screen://:通过webrtc::DesktopCapturer::CreateScreenCapturer捕获屏幕window://:通过webrtc::DesktopCapturer::CreateWindowCapturer捕获窗口v4l2://:捕获H264帧(Windows不支持)videocap://:视频捕获设备名称audiocap://:音频捕获设备名称bashdocker run --device=/dev/video0 -p 8000:8000 -it mpromonet/webrtc-streamer
bashdocker run -p 8000:8000 -it mpromonet/webrtc-streamer -n raspicam -u rtsp://pi2.local:8554/unicast
bashdocker run -p 8000:8000 -v $PWD/config.json:/usr/local/share/webrtc-streamer/config.json mpromonet/webrtc-streamer
bashdocker run -p 8000:8000 -p 3478:3478 -it mpromonet/webrtc-streamer -S0.0.0.0:3478 -s$(curl -s ifconfig.me):3478
bashdocker run -p 8000:8000 -p 3478:3478 -it mpromonet/webrtc-streamer -s- -T0.0.0.0:3478 -tturn:turn@$(curl -s ifconfig.me):3478
在外部HTML页面中嵌入WebRTC流,需引入webrtcstreamer.js并创建WebRtcStreamer实例:
html<html> <head> <script src="libs/adapter.min.js"></script> <script src="webrtcstreamer.js"></script> <script> var webRtcServer = null; window.onload = function() { webRtcServer = new WebRtcStreamer("video", location.protocol+"//"+location.hostname+":8000"); webRtcServer.connect("rtsp://wowzaec2demo.streamlock.net/vod/mp4:BigBuckBunny_115k.mov"); } window.onbeforeunload = function() { webRtcServer.disconnect(); } </script> </head> <body> <video id="video" autoplay muted></video> </body> </html>
通过WebComponents简化嵌入,直接使用<webrtc-streamer>标签:
html<html> <head> <script type="module" src="webrtc-streamer-element.js"></script> </head> <body> <webrtc-streamer url="rtsp://wowzaec2demo.streamlock.net/vod/mp4:BigBuckBunny_115k.mov"></webrtc-streamer> </body> </html>
兼容WHEP接口,可配合WebRTC播放器使用:
html<html> <head> <script src="[***]"></script> </head> <body> <whep-video id="video" muted autoplay></whep-video> <script> video.setAttribute('src', `${location.origin}/api/whep?url=Asahi&options=rtptransport%3dtcp%26timeout%3d60`); </script> </body> </html>

manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务