【问题标题】:FFMpeg - PhantomJS to Youtube LiveFFMpeg - PhantomJS 到 Youtube 直播
【发布时间】:2017-02-22 14:10:37
【问题描述】:

我正在尝试使用 FMMpeg 将使用 PhantomJS 捕获的网页流式传输到 Youtube。 这是我使用的命令:

xvfb-run phantomjs --web-security=no render.js | ffmpeg -threads 0 -y -v verbose -c:v png -r 30 -f image2pipe -i - -f lavfi -i anullsrc -strict -2 -acodec aac -ac 1 -ar 44100 -b:a 128k -c:v libx264 -s 1280x720 -pix_fmt yuv420p -f flv "rtmp://a.rtmp.youtube.com/live2/key";

还有 render.js 代码: http://pastebin.com/raw/X9gv8iGH

看起来它正在流式传输,但 YouTube 没有收到任何供稿,我看不出问题出在哪里。 Outpout from my console

【问题讨论】:

  • 为什么是xvfb-run? (PhantomJS 是无头的)你试过用播放器看直播吗?
  • 如果没有 xvfb-run,PhantomJS 将无法启动。我尝试将其导出为 flv 视频,但它只播放黑屏。
  • 我运行脚本 5 秒,它制作了一个 48 分钟长的视频...
  • won't start without xvfb-run 你运行什么版本的 PhantomJS,在什么环境下运行?

标签: youtube ffmpeg phantomjs live image2pipe


【解决方案1】:

试试这个:

phantomjs --web-security=no render.js | ffmpeg -threads 0 -y -v verbose -c:v png -framerate 33 -f image2pipe -i - -f lavfi -i anullsrc -strict -2 -acodec aac -ac 1 -ar 44100 -b:a 128k -c:v libx264 -s 1280x720 -pix_fmt yuv420p -g 60 -r 30 -f flv "rtmp://a.rtmp.youtube.com/live2/key";

参数-帧率:

您可以指定两种帧速率:输入和输出。 使用 -framerate 输入选项(在 -i 之前)设置输入帧速率。读取输入的默认值为 -framerate 25,如果 没有指定 -framerate。 通过在 -i 之后设置 -r 或使用 fps 过滤器来设置视频流的输出帧率。

因此,在您的情况下,帧速率应该是 1/period_from_phantomjs,即 1000/30 = 33.33

至于 -g 60,它将每 2 秒添加一个关键帧,这可能是 youtube 流 api 的要求(我知道对于 facebook 是这样)。

【讨论】:

  • 这可行,但输出的 FPS 非常低(大约 2.5)。除此之外,它流。知道如何解决吗?
  • 这可能是因为 phantomjs 渲染阻塞了 cpu,并且没有足够的输入进入 ffmpeg。
  • 是的,很慢。
猜你喜欢
  • 2017-09-21
  • 2018-07-16
  • 1970-01-01
  • 2018-06-03
  • 1970-01-01
  • 2018-10-30
  • 1970-01-01
  • 1970-01-01
  • 2019-12-23
相关资源
最近更新 更多