【发布时间】:2017-07-09 03:41:57
【问题描述】:
我一直在尝试将 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 Server 16.04 LTS
- 内存:10gb
- 处理器:AMD Phenom(tm) II X6 1090T
- GPU:Geforce GT 520
互联网。
- 上传 15mbit
- 下载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 直播,就我目前的测试而言,它似乎至少有超过 2 分钟的健康流。我找到了我的 nginx 服务器的输出,然后 youtube live 打破了一切。
我的 nginx rtmp 设置在这个链接上https://pastebin.com/siE99Tv8
编辑 2
如果我将流推送到类似 restream 的网站以将其流式传输到 youtube,那么它似乎可以正常工作。测试了 25 分钟,他们没有说坏视频容器或任何东西。所以我要说 nginx 部分归咎于它如何分发文件?不确定我做错了什么。我很确定 ffmpeg 至少不应归咎于此
【问题讨论】:
-
我想我已经确认 nginx 推送流是现在解决该部分的问题,看看我是否能找到替代方案
标签: nginx video ffmpeg youtube live-streaming