首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ffmpeg将代码转到youtube实时坏视频容器

ffmpeg将代码转到youtube实时坏视频容器
EN

Stack Overflow用户
提问于 2017-07-09 03:41:57
回答 1查看 1K关注 0票数 0

我一直在尝试将obs工作室产生的流转换到我的nginx服务器上,并将其发送到youtube。现在我已经让它和抽搐一起工作了,我知道这些设置实际上是正确地转换它的代码,并且是可视的。问题是youtube直播将其作为糟糕的视频设置,并告诉我更改当前的视频容器格式。另一个可能与此无关的副作用是,youtube上的流看起来真的很糟糕。看起来它的传输速度很差,但是真正的问题是糟糕的视频设置错误。

正在使用的ffmpeg命令如下

代码语言:javascript
复制
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}

我尝试过使用不同的框架,谷歌搜索了一段时间,没有发现任何发现,或者错误地解释了一切。不管是哪种方式,我都很乐意在这里得到一些帮助。

系统信息.

  • 操作系统:UbuntuServer16.04LTS
  • Ram: 10 Ram
  • 处理器: AMD (Tm) II X6 1090T
  • GPU: Geforce GT 520

互联网.

  • 上传15 15mbit
  • 下载150

如果您需要更多的信息,我会很高兴地发送它。感谢您的阅读。

编辑1

在谷歌上搜索了一下我做错了什么之后,我决定尝试稍微改变一下,然后想出了下面的命令

代码语言:javascript
复制
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设置在这个链接https://pastebin.com/siE99Tv8上。

编辑2

如果我把流推到像restream这样的站点上,将其流到youtube上,那么它似乎是起作用了。测试了25分钟,没有改变它们,说坏的视频容器或任何东西。所以我要说,nginx是如何分配文件的部分原因吗?不知道我做错了什么。我敢肯定,至少在这里,不应该怪芬伯。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-07-13 02:49:19

看来YouTube不喜欢nginx。我找到了两种解决方案。

解决方案1

在nginx配置中添加"meta;“如下:

代码语言:javascript
复制
rtmp {
    server {
        listen 1935;
        application youtube{
            live on;
            meta copy;
            push rtmp://a.rtmp.youtube.com/live2/(key);
        }
    }
}

解决方案2

修改nginx-rtmp-模块/ngx_rtmp_codec_module.c并替换行:

代码语言:javascript
复制
ngx_string("Server"),

使用

代码语言:javascript
复制
ngx_string("xtradata"),

然后重新编译nginx。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44992759

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档