Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Nginx ffmpeg转码到youtube live坏视频容器_Nginx_Video_Ffmpeg_Youtube_Live Streaming - Fatal编程技术网

Nginx ffmpeg转码到youtube live坏视频容器

Nginx ffmpeg转码到youtube live坏视频容器,nginx,video,ffmpeg,youtube,live-streaming,Nginx,Video,Ffmpeg,Youtube,Live Streaming,我一直在尝试将obs studio生成的流转码到我的nginx服务器并发送到youtube。现在,我已经使它与twitch一起工作,我知道这些设置实际上基本正确地转换了代码,并且可以查看。问题是youtube live将其视为坏的视频设置,并告诉我更改当前的视频容器格式。另一个可能不相关的副作用是,这条流在youtube上看起来非常糟糕。看起来它是以很差的比特率流的,但是真正的问题是坏的视频设置错误 正在使用的ffmpeg命令如下 ffmpeg -i rtmp://localhost/Priva

我一直在尝试将obs studio生成的流转码到我的nginx服务器并发送到youtube。现在,我已经使它与twitch一起工作,我知道这些设置实际上基本正确地转换了代码,并且可以查看。问题是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}
我尝试了不同的帧率,在谷歌上搜索了一段时间,没有发现任何东西,也没有错误地解释一切。不管怎样,我都很乐意在这里得到帮助

系统信息

操作系统:Ubuntu服务器16.04 LTS 内存:10gb 处理器:AMD Phenomtm II X6 1090T GPU:Geforce GT 520 互联网

上传15比特 下载150mbit 如果你需要更多的信息,我很乐意发送给你。谢谢你的阅读

编辑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 live,它至少有一个健康的流超过2分钟。我找到了我的nginx服务器的输出,然后youtube live破坏了一切

我的nginx rtmp设置在此链接上

编辑2


如果我将该流推送到一个像restream这样的网站,将其流到youtube,那么它似乎可以工作。测试了25分钟,没有改变他们说的坏视频容器或任何东西。所以我要说,nginx的文件分发方式在一定程度上应该受到谴责?不确定我做错了什么。我很确定ffmpeg在这里不是罪魁祸首至少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\u rtmp\u codec\u module.c并替换以下行:

ngx_string("Server"),


然后重新编译nginx。

我想我已经确认了nginx推流是现在的问题,要想弄清楚这一部分,看看我是否能找到替代方案。抱歉,我之前没有提到这一点,但它工作得非常好。我发现做那件事没有什么问题。谢谢
ngx_string("xtradata"),