繁体   English   中英

无法使用nginx-rtmp-module重播

[英]Fail to restream with nginx-rtmp-module

我无法使用命令exec开始重播。 我也尝试了exec_pull 它没有帮助。 我的目标是将rtmp://ktv.s4c.link/live/livestream url重新rtmp://ktv.s4c.link/live/livestream我的本地nginx,再到rtmp://localhost:1935/hls /tmp/logs/ffmpeg.log为空。 我猜那个exec甚至都没有打电话,但是为什么呢?

    rtmp {

    server {
    listen 1935;
    chunk_size 4096;

    application live {
        allow play all;
        live on;
        record off;
        #pull rtmp://ktv.s4c.link/live/livestream;
        exec ffmpeg -i rtmp://localhost:1935/live -f flv rtmp://localhost:1935/hls 2>>/tmp/logs/ffmpeg.log;
    }

        application hls {
        allow play all;
        live on;
        record off;
    }

    }

我正在使用nginx-1.12.0。 我跟随本教程 ,观看

因此, 首先 ,请注意Nginx以nobody用户身份运行所有exec命令。 而且您必须像这样在命令行中对其进行测试:

sudo -u nobody ffmpeg -i rtmp://ktv.s4c.link/live/livestream -f flv rtmp://localhost:1935/hls

然后,如果此命令行有效-打印到nginx.conf。

其次 ,使用完整路径。 非常重要 ,因为与Nginx运行的子进程相比,当前的用户环境具有不同的环境。

sudo -u nobody /usr/bin/ffmpeg -i rtmp://ktv.s4c.link/live/livestream -f flv rtmp://localhost:1935/hls

第三 ,我的错误是我从存储库中使用了FFmpeg,并且FFmpeg具有2.8.11-0ubuntu0.16.04.1版本。 与此相关的答案 FFmpeg的可被编译librtmp ,这就是为什么FFmpeg的可能需要现场= 1和引号(“)所以最后,我复制到nginx.conf是命令:

sudo -u nobody /usr/bin/ffmpeg -i "rtmp://ktv.s4c.link/live/livestream live=1" -f flv rtmp://localhost:1935/hls

我最后的nginx.conf

rtmp {
 server {
      listen 1935;
      chunk_size 4096;

       application live {
           live on;
           record off;
           pull rtmp://ktv.s4c.link/live/livestream;
           exec_play /usr/bin/ffmpeg -i "rtmp://ktv.s4c.link/live/livestream live=1" -f flv rtmp://localhost:1935/hls 2>>/tmp/ffmpeg-$name.log;
       }

       application hls {
           live on;
           record off;
       }

  }

您可以提及,我添加了FFmpeg日志2>>/tmp/ffmpeg-$name.log

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM