【问题标题】:Nginx RTMP with FlaskNginx RTMP 与 Flask
【发布时间】:2020-10-01 09:45:26
【问题描述】:

我已经按照文档/教程从这里开始:https://www.nginx.com/blog/video-streaming-for-remote-learning-with-nginx/,了解如何设置 RTMP 流的配置文件,而且非常简单。但是,我不确定如何在 Flask 上构建我的后端,以将流重定向到一些嵌入在 HTML 模板中的 HLS/DASH 视频播放器,该 HTML 模板是为响应请求特定 HTTP 端点的客户端而发送的。本教程展示了如何在 VLC 媒体播放器中本地查看,而不是如何将其嵌入到发送到客户端的 HTML 文件中。我该怎么做呢?作为参考,我将我的网站托管在 Heroku 上,该网站从这里设置了 Nginx buildpack,https://github.com/heroku/heroku-buildpack-nginx,我不确定是否需要让 Heroku 安装其他依赖项来设置 RTMP 服务器并监听流.

【问题讨论】:

    标签: nginx flask heroku rtmp


    【解决方案1】:

    使用 HLS 协议(HTTP Live Streaming)。 Nginx 知道如何完美呈现 HTTP。因此,您只需要创建和更新 HLS 流的播放列表和片段,以及监控旧片段的删除。为此,有一个 nginx-rtmp-hls 模块。它位于 hls 目录下,但默认不收集,因为需要 ffmpeg 包中包含的 libavformat 库。要构建支持 HLS 的 nginx,您需要在配置期间显式添加此模块:

    ./configure --add-module=/path/to/nginx-rtmp-module --add-module=/path/to/nginx-rtmp-module/hls
    

    要生成 HLS,只需指定以下指令:

    application myapp {
        live on;
        hls on;
        hls_path /tmp/hls;
        hls_fragment 5s;
    }
    

    最后,在 http {} 部分,配置与 HLS 相关的所有内容的返回:

    location /hls {
        root /tmp;
    }
    

    要在浏览器中显示流,请创建包含此类内容的 html 页面(示例):

    <video width="600" height="300" controls="1" autoplay="1" src="http://example.com/hls/mystream.m3u8"></video>
    

    更新 1:

    您附上了 Nginx 设置教程的链接,所以我参考了他们的“使用 RTMP 模块编译 NGINX”步骤,其中包含与 HLS 模块相关的更改:

    $ cd /path/to/build/dir
    $ git clone https://github.com/arut/nginx-rtmp-module.git
    $ git clone https://github.com/nginx/nginx.git
    $ cd nginx
    $ ./auto/configure --add-module=../nginx-rtmp-module --add-module=../nginx-rtmp-module/hls
    $ make
    $ sudo make install
    

    【讨论】:

    • 你在哪里添加你上面提到的模块的配置?
    • 在构建 Nginx 时。我将更新我的答案以设置代码样式。
    • 我明白了,谢谢。因此,由于我将其托管在 Heroku 上,因此我需要以与您上面提到的相同的方式设置环境。每次部署应用程序时,我都可以在发布文件中执行此操作,但这会增加部署工作量。这是我在部署到 Heroku 时使用 docker 的目的吗?我不太熟悉。
    • 你可以像这样简单地使用开源 docker 镜像:hub.docker.com/r/alqutami/rtmp-hls Docker 是很好的调查工具,所以也许是研究它的最佳时机)
    • Heroku 有管道,可以获取您的图像,例如这个 'rtmp-hls',在管道中,您可以构建项目文件,然后将其复制到生成的图像。看看devcenter.heroku.com/articles/build-docker-images-heroku-yml教程。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-17
    • 1970-01-01
    • 2022-01-26
    • 1970-01-01
    • 1970-01-01
    • 2013-10-22
    相关资源
    最近更新 更多