将 nginx rtmp 片段发送到 WebRTC

问题描述

我想使用 OBS 通过 RTMP 流式传输到 Nginx 服务器,然后在本地将 RTMP 片段发送到 WebRTC,以便它们可以通过 MediaStream 传输到客户端。我认为这是可能的,因为它基本上被描述为 here。我这样做是因为 HLS 的多秒延迟不适合我想要做的事情。

我在从 Nginx提取 RTMP 片段时遇到问题,我在 documentation 中找到的唯一可行的命令是 pull rtmp://...。当我尝试这个时,我没有看到任何文件出现在我的根文件夹中,如果我使用 hls on,我通常会在那里找到 HLS 文件。有谁知道如何完成我在上面尝试实现的目标?

谢谢!

解决方法

这很容易!您可以基于 Pion 的 rtp-to-webrtc 示例。这使您可以轻松地将媒体从 ffmpeg 获取到浏览器中。

您运行的 ffmpeg 命令将是这样的 ffmpeg -re -i rtmp://localhost:1935/$app/$name -vn -acodec libopus -f rtp rtp://localhost:6000 -vcodec copy -an -f rtp rtp:localhost:5000 -sdp_file video.sdp

我会考虑转码到 VP8,因为并非所有浏览器都支持 H264。

——

如果您想在浏览器中进行亚秒级播放,我会查看 Project Lightspeed,这是今天 IMO 的最佳选择。