我正在尝试从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。
我正在使用带有RTMP模块的NGINX的预编译版本。我还下载了最新的FFmpeg库,该库已在Windows中设置了路径环境变量,以便可以在CommandPrompt中调用FFmpeg命令。 / PowerShell。
这是我要走的路:-
OBS以20,000Kbps的速率编码x264,它的目标是NGINX中的RTMP应用程序,称为``实时''。从这里开始,我想将来自OBS的一个流编码为几个较小的带宽流,以便可以满足流服务的要求,例如Twitch和Mixer。
在FFmpeg参数的末尾,我是否将输出直接推到Twitch或将FFmpeg的输出发送回NGINX上的第二个RTMP应用程序中,然后推到Twitch?
在不使用外部流服务之前将FFmpeg的输出推回NGINX的一个优势是,我可以通过支持RTMP的播放器(例如VLC)打开FFmpeg转码的流,从而可以查看压缩的输出。
我的另一个问题是,FFmpeg参数可以放在单独的行中还是必须全部放在一行中?
这是我一直在引用的一个非常好的网站
答案 0 :(得分:0)
您的ffmpeg命令试图连接到rtmp:// localhost / source,但是您将应用程序命名为“ live”,而不是“ source”
此外,除非您真正了解了关卡的工作原理和约束,否则不要手动发送关卡。 X264还将自动选择最佳级别。