我试图从我的Windows上的OBS (开放广播软件)流到安装在同一台PC上的NGINX+RTMP。我已经在OBS中设置了20,000 will的比特率,这将是我在NGINX中设置的多个流的基础比特率。
我希望能够流到NGINX,然后在飞行中使用FFmpeg对流进行代码转换,以遵守我打算向其广播的流站点,例如Twitch.tv。
如果使用网络路径rtmp://localhost/live/test,我可以通过VLC查看流。然而,当我在特维奇的巡查员现场看我的溪流是否会流过来时,我什么也没收到。我不知道我的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
为了简单起见,我正在同一台物理计算机上测试OBS、NGINX和FFmpeg,这是一台全新的Windows,一旦一切正常运行,我将把NGINX和FFmpeg移植到我的Linux上。
我使用的是预编译版本的NGINX和RTMP模块。我还下载了最新的FFmpeg库,在Windows中设置了path环境变量,这样就可以在CommandPrompt/PowerShell中调用FFmpeg命令。
我想走的路是:-
OBS正在以20000 live的速度编码X 264,它的目的地是NGINX中的一个名为“live”的RTMP应用程序。从这里开始,我想将从OBS派生出来的一个流编码到几个较小的带宽流中,这样我就可以满足流服务的要求,例如Twitch和Mixer。
在FFmpeg参数的末尾,我是直接将输出推到the,还是将FFmpeg的输出发送回NGINX上的第二个RTMP应用程序,然后再推到the?
将FFmpeg的输出推回NGINX,然后再切换到外部流服务的好处之一是,我可以通过RTMP支持的播放器(例如VLC )打开FFmpeg转换流,允许我查看压缩的输出。
我的另一个问题是,FFmpeg参数可以放在单独的行上,还是必须全部放在一行中?
这是一个非常好的网站,我一直在提及。
发布于 2020-01-27 00:58:12
您的ffmpeg命令试图连接到rtmp://localhost/source,但是您将应用程序命名为“live”,而不是“source”。
另外,除非您真正了解级别是如何工作的,以及约束是什么,否则不要手动发送该级别。X264也会自动选择最好的级别。
https://stackoverflow.com/questions/59922977
复制相似问题