SRS(Simple Realtime Server)还能够将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,RTMP在localhost上运行。如果您需要在互联网上的网页,您需要设置HTTPS,因为WebRTC需要localhost或HTTPS网页来访问相机,请参见此wiki。 并且SRS还支持RTMP to WebRTC,这是一种低延迟的直播,一般RTMP的延迟在3~5s左右,而RTMP to WebRTC的延迟在0.8~1s左右,注意H5不支持RTMP,但是HTTP-FLV的效果很好。 此外,SRS还支持HTTP-FLV,使H5能够以mpegts.js的速度播放RTMP,延时也低于HLS或LLHLS。 注:其他直播功能也很重要,因为离题,所以请查看SRS的wiki,如DVR-MP4,DASH,Cluster,HTTP-API等。 在SRS将WebRTC转换为RTMP流之后,也可以使用nginx从SRS拉取RTMP流,或者让SRS将RTMP转发到nginx。 请不要使用WebRTC做直播,除非你知道你在做什么,请阅读Why and Why NOT use WebRTC for live streaming。
2条答案
按热度按时间unhi4e5o1#
对于RTSP<->WebRTC / RTMP<->WebRTC转换,您需要运行某种WebRTC网关/媒体服务器软件,该软件可以处理所有这些格式/协议,并可以在所有这些格式/协议之间进行多路传输。
因此,在您的情况下,您希望通过WebRTC(H264编解码器是必须的)将屏幕从浏览器发布到媒体服务器,然后使用nginx-rtmp模块将RTMP流从媒体服务器拉到nginx服务器。
请注意,相反的情况也是可能的:您可以通过RTMP将流推送到媒体服务器(例如,OBS屏幕捕获),然后通过WebRTC将此流从媒体服务器发送到Web浏览器。
这些转换中的主要问题是编解码器兼容性:H264必须用于视频,但如果你需要音频,那么你将不得不做Opus到AAC转码。
ubbxdtey2#
SRS(Simple Realtime Server)还能够将WebRTC转换为RTMP,反之亦然。
WebRTC to RTMP
用于H5发布器进行流媒体直播。由于RTMP现在已禁用(2021.12),因此H5发布流媒体的唯一方式是WebRTC。我们还需要将WebRTC转换为RTMP,以便其他平台重用流媒体。它是这样工作的:
注:SRS将WebRTC/OPUS转换为RTMP/AAC,因此每个流消耗约2%的CPU。
请按照此wiki将WebRTC转换为RTMP,RTMP在localhost上运行。如果您需要在互联网上的网页,您需要设置HTTPS,因为WebRTC需要localhost或HTTPS网页来访问相机,请参见此wiki。
并且SRS还支持
RTMP to WebRTC
,这是一种低延迟的直播,一般RTMP的延迟在3~5s左右,而RTMP to WebRTC
的延迟在0.8~1s
左右,注意H5不支持RTMP,但是HTTP-FLV
的效果很好。此外,SRS还支持HTTP-FLV,使H5能够以mpegts.js的速度播放RTMP,延时也低于HLS或LLHLS。
注:其他直播功能也很重要,因为离题,所以请查看SRS的wiki,如DVR-MP4,DASH,Cluster,HTTP-API等。
在SRS将WebRTC转换为RTMP流之后,也可以使用nginx从SRS拉取RTMP流,或者让SRS将RTMP转发到nginx。
请不要使用WebRTC做直播,除非你知道你在做什么,请阅读Why and Why NOT use WebRTC for live streaming。