使用FFMpeg将网页流式传输到YouTube



我正在尝试使用phantomjsffmpeg将网页流式传输到YouTube
长话短说:

这很有效。视频保存到test.flv:

phantomjs runner.js|ffmpeg -y -f image2pipe -r 10 -s 1280x720 -i - -deinterlace -vcodec libx264 -pix_fmt yuv420p -preset ultrafast -r 10 -g 20 -vb 400k -maxrate 400k -minrate 400k -bufsize 800k -threads 6 -q:v 0 -t 10 -f flv test.flv

这不是。尽管没有错误,但没有任何内容被流式传输到YouTube

phantomjs runner.js|ffmpeg -f image2pipe -r 10 -s 1280x720 -i - -deinterlace -vcodec libx264 -pix_fmt yuv420p -preset ultrafast -r 10 -g 2 -vb 400k -maxrate 400k -minrate 400k -bufsize 800k -threads 6 -q:v 0 -f flv rtmp://a.rtmp.youtube.com/live2/xxxxxxx

备注

  1. 我知道phantomjs不再被积极开发,但这似乎相关,因为phantomjs脚本按预期工作
  2. phantomjs脚本:runner.js
  3. 我尝试过不同的ffmpeg设置,如frame-ratesbit-ratesbufsize,但都没有成功
  4. 两个命令相似,但第一个输出到本地文件test.flv,而第二个输出到YouTube
  5. 我在OBS Studio上使用过YouTube流媒体密钥,它工作正常
  6. ffmpeg输出,同时流式传输YouTube

frame= 13 fps=0.0 q=42.0 size= 94kB time=00:00:00.50 bitrate=1531.0kbits/ frame= 18 fps= 16 q=40.0 size= 130kB time=00:00:01.00 bitrate=1063.6kbits/ frame= 23 fps= 14 q=44.0 size= 149kB time=00:00:01.50 bitrate= 810.8kbits/

  1. ffmpeg version 4.2.1-static https://johnvansickle.com/ffmpeg/ Copyright (c) 2000-2019 the FFmpeg developersUbuntu-1804上运行

知道哪里出了问题吗?

您需要添加一个音频流。它可以来自文件,也可以使用anullsrc过滤器生成无声/伪音频流:

phantomjs runner.js | ffmpeg -f image2pipe -framerate 10 -video_size 1280x720 -re -i - -f lavfi -i anullsrc -c:v libx264 -preset ultrafast -g 20 -b:v 400k -maxrate 400k -bufsize 800k -vf format=yuv420p -c:a aac -f flv rtmp://a.rtmp.youtube.com/live2/xxxx-xxxx-xxxx-xxxx

不相关的变化:

  • 使用image2pipe输入选项而不是泛型。见ffmpeg -h demuxer=image2pipe
  • 删除-deinterlace。我怀疑输入是交错的。如果是,请使用过滤器(-deinterlace使用yadif过滤器,但与直接使用yadiv相比,其可自定义性较差(
  • 如果输入-framerate选项的值相同,则不需要添加-r输出选项,因此它已从命令中删除
  • 通过省略-threads选项,让编码器自动选择最佳线程数
  • -q:v 0被libx264忽略。拆下它
  • CCD_ 27可以设置为帧速率x2
  • 如果您不想使用额外的java脚本,可以使用ffmpeg来捕获屏幕

最新更新