我一直在尝试将obs studio生成的流转码到我的nginx服务器并将其发送到youtube。现在我已经让它工作了抽搐,我知道这些设置实际上是正确地转码它并且是可见的。问题是youtube live将其视为错误的视频设置并告诉我更改当前的视频容器格式。另一个可能无关的副作用是在youtube上流看起来很糟糕。看起来它是以一个糟糕的比特率和东西流式传输,但真正的问题是糟糕的视频设置错误。
正在使用的ffmpeg命令如下
ffmpeg -i rtmp://localhost/Private/Private1 -vb 6000k -minrate 6000k -maxrate 6000k -bufsize 6000k -s 1280x720 -c:v libx264 -preset faster -r 50 -g 100 -keyint_min 50 -x264opts nal-hrd=cbr:force-cfr=1 -sws_flags lanczos -tune film -pix_fmt yuv420p -c:a copy -f flv -threads 6 -strict normal rtmp://a.rtmp.youtube.com/live2/{key}
我尝试过不同的帧率并且谷歌搜索了一段时间,没有发现任何内容或者错误地解释了所有内容。无论哪种方式,我都非常乐意在这里提供一些帮助。
系统信息。
互联网。
如果您需要更多信息,我很乐意发送。谢谢你的阅读。
修改1
在谷歌上搜索我做错了什么后,我决定尝试稍微改变一下并提出这个命令
ffmpeg -re -i rtmp://localhost/(app)/(key) -c:v libx264 -r 50 -g 100 -keyint_min 100 -x264opts "keyint=100:min-keyint=100:no-scenecut" -sws_flags lanczos -profile:v baseline -preset veryfast -vb 6000K -minrate 6000k -maxrate 6000k -bufsize 6000k -s 1280x720 -tune film,zerolatency -pix_fmt yuv420p -f flv -c:a copy -ac 1 -strict normal rtmp://(output site)/(output app)/(output key)
如果我只直接输出到youtube直播,那么截至我目前的测试似乎至少有一个健康的流超过2分钟。我已经找到输出到我的nginx服务器,然后youtube直播中断。
我的nginx rtmp设置位于此链接https://pastebin.com/siE99Tv8
修改2
如果我将流推送到像restream这样的站点以将其流式传输到youtube,那么它似乎正在工作。测试了25分钟没有改变他们说坏视频容器或任何东西。所以我要说nginx部分归咎于它如何分发文件?不确定我做错了什么。我很确定ffmpeg至少不应该责怪
答案 0 :(得分:0)
似乎YouTube不喜欢nginx。我找到了两个解决方案。
解决方案1
添加"元副本;"给你nginx配置如下:
rtmp {
server {
listen 1935;
application youtube{
live on;
meta copy;
push rtmp://a.rtmp.youtube.com/live2/(key);
}
}
}
解决方案2
修改nginx-rtmp-module / ngx_rtmp_codec_module.c并替换该行:
ngx_string("Server"),
与
ngx_string("xtradata"),
然后重新编译nginx。