nginx - 代理一个rtmp流

标签 nginx ffmpeg video-streaming rtmp

我如何代理 rtmp 流?

我的局域网上有两个树莓派流式传输来自 raspicam 的实时视频。每个树莓派将视频发送到 ffmpeg,ffmpeg 包装在 flv 中并发送到 crtmpserver。

第三台使用 nginx 的服务器有一个静态 html 页面,其中包含两个 jwplayer 实例,每个实例都指向一个树莓派。

设置就像 this one .

Web 服务器使用身份验证,我希望流也不要公开。

我正在考虑尝试 nginx-rtmp-module,但我不确定它是否对我有帮助。此外,它似乎处于休眠状态并且有许多 Unresolved 问题。

我愿意接受建议,在此先感谢!

最佳答案

您可以使用MonaServerthis client (将其复制到 MonaServer 的 www/目录中)监听 udp 端口​​ 6666 并等待一个名为“file”的 flv 文件发布它。

那么您应该已经可以使用 jwplayer(地址为 rtmp:///file)或任何其他播放器播放您的流了。 MonaServer 支持 HTTP 协议(protocol),因此您可以根据需要在没有 nginx 的情况下托管您的 html 页面。

现在如果你想过滤对"file"的订阅,你需要写一个 client:onSubscribe main.lua 脚本中的函数,就像这样:

function onConnection(client)
    INFO("Connection from ",client.address)

    function client:onSubscribe(listener)
       INFO("Subscribing to ", listener.publication.name, "...")

       if not client.right then
          error("no rights to play it")
       end
    end
end

(这里您需要更改“not client.right”并为您的目的实现您的身份验证功能)

更进一步,您可以使用另一个支持 RTMFP 的 Flash 视频客户端来处理大量客户端。联系我(jammetthomas AT gmail.com)了解更多信息。

关于nginx - 代理一个rtmp流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28639422/

相关文章:

ios - HTTP 直播服务,如 LiveStream/Ustream/Twitch/Youtube Live

ruby-on-rails - Rails 部署未在生产中显示图像

ruby-on-rails - 在 Rails 中识别与 HTTPS 的连接

nginx - Nginx MIME类型和gzip

linux - 使用 "top"命令了解 Linux 中的 CPU 使用情况以了解 VLC 使用情况

python - 使用 ffmpeg/ffprobe 的 CMD 错误输出子进程

php - 多个远程上传服务器到服务器

ffmpeg - 如何使用 ffmpeg 生成编码的 HEVC 比特流?

javascript - 通过 ReactJS 中的 .getUserMedia 访问网络摄像头后,单击断开网络摄像头连接

android - 为什么原生 android mediaplayer 不支持 HLS 但网络浏览器支持