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

问题描述 投票:-1回答:1

我正在尝试使用YouTubephantomjs将网页流式传输到ffmpeg。长问题简短:

这有效。视频已保存到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,第二个输出到test.flv
  5. 我在OBS Studio上使用了YouTube流键,并且可以正常工作;
  6. [YouTube输出到streamingffmpeg

    YouTube

  7. [enter image description hereffmpeg version 4.2.1-static https://johnvansickle.com/ffmpeg/ Copyright (c) 2000-2019 the FFmpeg developers上运行]

有什么错的主意吗?

ffmpeg youtube phantomjs video-streaming streaming
1个回答
0
投票

您需要添加音频流。它可以来自文件,也可以使用Ubuntu-1804

生成静音/虚拟音频流。
anullsrc filter

不相关的更改:

  • 使用image2pipe输入选项代替泛型。参见phantomjs runner.js | ffmpeg -f image2pipe -framerate 10 -video_size 1280x720 -i - -f anullsrc -c:v libx264 -preset ultrafast -g 50 -b:v 400k -maxrate 400k -minrate 400k -bufsize 800k -c:a aac -f flv rtmp://a.rtmp.youtube.com/live2/xxxxxxx
  • 已删除ffmpeg -h demuxer=image2pipe。我怀疑输入是隔行扫描的。如果是,则使用过滤器(-deinterlace使用-deinterlace,但与直接使用yadif相比,其可自定义性较低。
  • 如果输入的yadif filter选项是相同的值,则不需要添加-r输出选项,因此已从命令中将其删除。
  • 让编码器通过省略-framerate选项自动选择最佳线程数。
  • -threads被libx264忽略。删除它。
  • -q:v 0可以设置为帧率x 2
  • 如果您不想使用其他JavaScript,可以使用-g捕获屏幕。
© www.soinside.com 2019 - 2024. All rights reserved.