Dil*_*nov 4 javascript nginx rtmp webrtc
我正在尝试构建一个服务,将您的屏幕从浏览器流式传输到客户端(类似于抽搐)。
我所完成的是我用 rtmp 构建了一个可以工作的 nginx 服务器,我使用 OBS 对其进行了测试。这很好用。
我的问题是如何使用 WebRTC 将屏幕从浏览器(而不是来自 OBS 或其他广播公司)流式传输到带有 RTMP 的 nginx 服务器?
对于 RTSP<->WebRTC/RTMP<->WebRTC 转换,您需要运行某种 WebRTC 网关/媒体服务器软件,该软件适用于所有这些格式/协议,并且可以在所有这些格式/协议之间进行传输。试试 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(简单实时服务器)还能够将WebRTC转换为RTMP,反之亦然。
WebRTC to RTMP用于H5发布者进行直播。由于RTMP现已禁用(2021.12),因此H5发布流的唯一方式是WebRTC。我们还需要将WebRTC转换为RTMP,这使我们能够重用其他平台的流。
它的工作原理如下:
Chrome --WebRTC---> SRS ---RTMP--> YouTube, VLC, etc.
       H.264+OPUS       H.264+AAC
注意:SRS 将 WebRTC/OPUS 转换为 RTMP/AAC,因此每个流消耗约 2% 的 CPU。
请按照此wiki将 WebRTC 转换为在本地主机上运行的 RTMP。如果您需要互联网上的网页,则需要设置 HTTPS,因为 WebRTC 需要 localhost 或 HTTPS 网页才能访问摄像头,请参阅此wiki。
而且SRS还支持RTMP to WebRTC低延迟直播。一般来说,RTMP大约有3~5s的延迟,而RTMP的延迟RTMP to WebRTC大约是3~5s 0.8~1s。请注意,H5 不支持 RTMP,但HTTP-FLV运行良好。
除此之外,SRS还支持HTTP-FLV,使得H5可以通过mpegts.js播放RTMP 。延迟也低于 HLS 或 LLHLS。
注:其他直播功能也很重要,因为跑题了,所以请查看SRS的wiki,如DVR-MP4、DASH、Cluster、HTTP-API等。
也可以使用nginx从SRS拉取RTMP流,或者通过SRS将WebRTC转换为RTMP流后让SRS将RTMP转发给nginx。
请不要使用 WebRTC 进行直播,除非您知道自己在做什么,请阅读为什么和为什么不使用 WebRTC 进行直播。
| 归档时间: | 
 | 
| 查看次数: | 9121 次 | 
| 最近记录: |