如何使用 WebRTC 将视频流式传输到 RTMP?
How to use WebRTC to stream video to RTMP?
我正在尝试构建一项服务,将您的屏幕从浏览器流式传输到客户端(类似于 twitch)。
我所完成的是我用 rtmp 构建了一个工作的 nginx 服务器,我使用 OBS 测试了它。效果很好。
我的问题是如何使用 WebRTC 将屏幕从浏览器(不是来自 OBS 或其他广播公司)流式传输到带有 RTMP 的 nginx 服务器?
对于 RTSP<->WebRTC / RTMP<->WebRTC 转换,
您需要 运行 某种 WebRTC 网关/媒体服务器软件,可以与所有这些一起工作 formats/protocols 并且可以在它们之间进行传输。
试试 Wowza / Unreal Media Server / Flashphoner。
https://en.wikipedia.org/wiki/Comparison_of_streaming_media_systems
因此,在您的情况下,您希望通过 WebRTC(必须使用 H264 编解码器)将屏幕从浏览器发布到媒体服务器,然后使用 nginx-rtmp 模块将 RTMP 流从媒体服务器拉到 nginx 服务器。
请注意,反之亦然:您可以通过 RTMP 将流推送到媒体服务器(例如,OBS 屏幕捕获),然后通过 WebRTC 将该流从媒体服务器发送到 Web 浏览器。
这些转换的主要问题是编解码器兼容性:视频必须使用 H264,但如果您需要音频,则必须将 Opus 转码为 AAC。
SRS(Simple Realtime Server) 也可以将 WebRTC 转换为 RTMP,反之亦然。
WebRTC to RTMP
用于H5发布商直播。因为现在(2021 年 12 月)RTMP 已禁用,所以通过 H5 发布流的唯一方法是 WebRTC。我们还需要将 WebRTC 转换为 RTMP,这使我们能够通过其他平台重用流。
并且SRS还支持RTMP to WebRTC
,即低延迟直播。一般RTMP是3~5s左右的延迟,而RTMP to WebRTC
是0.8~1s
左右的延迟。注意H5不支持RTMP,但是HTTP-FLV
效果不错
除此之外,SRS还支持HTTP-FLV,可以让H5播放RTMP,flv.js。延迟也低于 HLS 或 LLHLS。
Note: Other live streaming features are also important, because of off-topic, so please check the wiki of SRS, like DVR-MP4, DASH, Cluster, HTTP-API, etc.
也可以用nginx从SRS拉RTMP流,或者让SRS把RTMP转发给nginx,在SRS隐蔽WebRTC转RTMP流后
我正在尝试构建一项服务,将您的屏幕从浏览器流式传输到客户端(类似于 twitch)。
我所完成的是我用 rtmp 构建了一个工作的 nginx 服务器,我使用 OBS 测试了它。效果很好。
我的问题是如何使用 WebRTC 将屏幕从浏览器(不是来自 OBS 或其他广播公司)流式传输到带有 RTMP 的 nginx 服务器?
对于 RTSP<->WebRTC / RTMP<->WebRTC 转换, 您需要 运行 某种 WebRTC 网关/媒体服务器软件,可以与所有这些一起工作 formats/protocols 并且可以在它们之间进行传输。 试试 Wowza / Unreal Media Server / Flashphoner。 https://en.wikipedia.org/wiki/Comparison_of_streaming_media_systems
因此,在您的情况下,您希望通过 WebRTC(必须使用 H264 编解码器)将屏幕从浏览器发布到媒体服务器,然后使用 nginx-rtmp 模块将 RTMP 流从媒体服务器拉到 nginx 服务器。
请注意,反之亦然:您可以通过 RTMP 将流推送到媒体服务器(例如,OBS 屏幕捕获),然后通过 WebRTC 将该流从媒体服务器发送到 Web 浏览器。
这些转换的主要问题是编解码器兼容性:视频必须使用 H264,但如果您需要音频,则必须将 Opus 转码为 AAC。
SRS(Simple Realtime Server) 也可以将 WebRTC 转换为 RTMP,反之亦然。
WebRTC to RTMP
用于H5发布商直播。因为现在(2021 年 12 月)RTMP 已禁用,所以通过 H5 发布流的唯一方法是 WebRTC。我们还需要将 WebRTC 转换为 RTMP,这使我们能够通过其他平台重用流。
并且SRS还支持RTMP to WebRTC
,即低延迟直播。一般RTMP是3~5s左右的延迟,而RTMP to WebRTC
是0.8~1s
左右的延迟。注意H5不支持RTMP,但是HTTP-FLV
效果不错
除此之外,SRS还支持HTTP-FLV,可以让H5播放RTMP,flv.js。延迟也低于 HLS 或 LLHLS。
Note: Other live streaming features are also important, because of off-topic, so please check the wiki of SRS, like DVR-MP4, DASH, Cluster, HTTP-API, etc.
也可以用nginx从SRS拉RTMP流,或者让SRS把RTMP转发给nginx,在SRS隐蔽WebRTC转RTMP流后