gpt4 book ai didi

nginx - 如何使用 FFmpeg 和 NGINX RTMP 进行流式传输

转载 作者:行者123 更新时间:2023-12-04 23:23:24 24 4
gpt4 key购买 nike

我正在尝试从我的 Windows PC 上的 OBS(开放广播软件)流式传输到同样安装在同一台 PC 上的 NGINX+RTMP。我在 OBS 中设置了 20,000Kbps 的比特率,这将是我打算在 NGINX 中设置的多个流的基础比特率。

我希望能够流式传输到 NGINX,然后即时使用 FFmpeg 对流进行转码,以符合我打算广播到的流媒体站点,例如 Twitch.tv。

如果我使用网络路径 rtmp://localhost/live/test,我可以通过 VLC 查看我的流。但是,当我在 Twitch 的检查员网站上查看我的直播是否结束时,我什么也没有收到。我不知道我的 FFmpeg 是否正常工作,或者下面的 NGINX 配置有问题。

如果有人可以阐明我可能会出错的地方,那将不胜感激。

nginx.conf

#user www-data;
worker_processes 1;

events {
worker_connections 1024;
}

http {
server_tokens off;

include mime.types;
default_type application/octet-stream;
sendfile off;
keepalive_timeout 65;

server {
listen 80;
server_name localhost;

# make a internal server page and put it in html
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}

rtmp {
server {
listen 1935;
chunk_size 8192;

application live {
live on;
#interleave on;
#wait_video on;
record off;

# Twitch
exec_push "D:\Users\Will\Downloads\ffmpeg\bin"
-i rtmp://localhost/source/$name
-c:v libx264
-c:a copy
-preset veryfast
-profile:v high
-level 4.1
-x264-params "nal-hrd=cbr" "opencl=true"
-b:v 8000K
-minrate 8000K
-maxrate 8000K
-keyint 2
-s 1920x1080
push rtmp://live-lhr03.twitch.tv/app/STREAM_KEY;
}
}
}

非常感谢

更新 1

为简单起见,我在同一台物理计算机(Windows PC)上测试 OBS、NGINX 和 FFmpeg。一旦一切正常,我会将 NGINX 和 FFmpeg 移植到我的 Linux PC。

我使用的是 NGINX 的预编译版本和 RTMP 模块。我还下载了最新的 FFmpeg 库,我在 Windows 中设置了路径环境变量,以便可以在 CommandPrompt/PowerShell 中调用 FFmpeg 命令。

这是我要走的路:-

OBS 以 20,000Kbps 的速度对 x264 进行编码,其目标是 NGINX 中称为“实时”的 RTMP 应用程序。从这里我想将来自 OBS 的一个流编码成几个更小的带宽流,以便我可以满足流媒体服务的要求,例如 Twitch 和 Mixer。

在 FFmpeg 参数结束时,我是直接将输出推送到 Twitch 还是将 FFmpeg 的输出发送回 NGINX 上的第二个 RTMP 应用程序,然后再推送到 Twitch?

在转到外部流服务之前将 FFmpeg 的输出推回 NGINX 的一个优点是,我可以通过支持 RTMP 的播放器(例如 VLC)打开 FFmpeg 转码流,从而允许我查看压缩输出。

我的另一个问题是,FFmpeg 参数可以放在单独的行中还是必须全部放在一行中?

这是一个非常好的网站,我一直在回顾

https://blog.twitch.tv/en/2017/10/10/live-video-transmuxing-transcoding-f-fmpeg-vs-twitch-transcoder-part-i-489c1c125f28/

最佳答案

您的 ffmpeg 命令正在尝试连接到 rtmp://localhost/source 但是您将应用程序命名为“live”,而不是“source”

此外,除非您真正了解关卡的工作原理以及限制条件,否则不要手动发送关卡。 X264 也会自动选择最佳级别。

关于nginx - 如何使用 FFmpeg 和 NGINX RTMP 进行流式传输,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59922977/

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