【发布时间】:2020-04-21 14:58:37
【问题描述】:
我有一个流转码器,可以将高带宽光纤流转换为多播 RTP 流。我希望能够在浏览器中将此流显示给客户端。如果我理解正确,有两个问题:
- 客户端很可能不支持通过其网络进行多播
- RTP无法在浏览器中播放,需要转换成其他格式
到目前为止我做了什么(使用 FFMPEG):
方法1:将流复制到.m3u8而不进行复用,然后使用Web服务器(Nginx)托管它
ffmpeg -protocol_whitelist file,udp,rtp -i ./stream.sdp -c:v copy -c:a copy -bufsize 50k -flags -global_header -hls_time 1 -f hls -hls_playlist_type event -hls_list_size 3 ./video/stream.m3u8
方法二:在Nginx上开启HLS,将流转为RTMP
ffmpeg -protocol_whitelist file,udp,rtp -i ./stream.sdp -vcodec libx264 -vprofile baseline -acodec aac -strict -2 -f flv rtmp://localhost/show/stream
这两种方法都会产生有效的直播,但延迟保持在 5 秒左右。
有什么方法可以让直播更快?多播直播的最大延迟约为 1 秒。
【问题讨论】:
标签: nginx ffmpeg live-streaming