gpt4 book ai didi

nginx - 无法使用 nginx-rtmp-module 重新流式传输

转载 作者:行者123 更新时间:2023-12-04 22:55:45 28 4
gpt4 key购买 nike

我无法使用命令 exec 开始重新流式传输.我也试过exec_pull .
它没有帮助。我的目标是重播rtmp://ktv.s4c.link/live/livestream我本地 nginx 的 url,到 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。
我跟着 this tutorial , 观看 this

最佳答案

因此,首先,请注意 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版本。与此相关 answer
FFmpeg 可以用 librtmp 编译,这就是为什么 FFmpeg 可能需要 live=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 .

关于nginx - 无法使用 nginx-rtmp-module 重新流式传输,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43993105/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com