通过 ffmpeg x11grab 设备从 xvfb 录制屏幕时出现黑屏

sha*_*zhu 8 ffmpeg xvfb

我正在尝试从运行的 Firefox 中录制视频,xvfb-run但除了黑屏外,它始终在视频文件中不输出任何内容。

这是我所做的:

启动firefox,打开google.com:

$ xvfb-run firefox https://google.com
Run Code Online (Sandbox Code Playgroud)

然后它会使用默认的显示服务器编号99。我可以通过命令看到显示信息xdpyinfo -display :99

通过命令截图效果很好:

$ xwd -root -silent -display :99.0 | xwdtopnm |pnmtojpeg > screen.jpg
Run Code Online (Sandbox Code Playgroud)

开始使用 ffmpeg 录制视频:

$ ffmpeg -f x11grab -i :99.0 out.mpg
Run Code Online (Sandbox Code Playgroud)

当我播放视频文件时out.mpg,总是黑屏。

有没有我遗漏的参数?

更新

我取得了进步,视频工作而不是黑屏仅通过以下命令:

$ ffmpeg -y -r 30 -g 300 -f x11grab -s 1024x768 -i :99 -vcodec qtrle out.mov
Run Code Online (Sandbox Code Playgroud)

请注意,它需要通过指定更多选项来匹配屏幕分辨率xvfb-run

$ xvfb-run -s "-screen 0 1224x768x16" -a firefox http://google.com
Run Code Online (Sandbox Code Playgroud)

但我还是想在这里得到更多的反馈和答案。

小智 5

我碰巧遇到了同样的问题并发现:您必须指定深度(在这种情况下为 16),因此 ffmpeg 不会产生黑屏。

例如

Xvnc -geometry 1024x768 -depth 16 :10  <<---WORKS
Xvnc -geometry 1024x768 :10            <<---does NOT work, produce black screen.
Run Code Online (Sandbox Code Playgroud)

  • ``16`` 似乎是默认值(根据 Xvnc4 手册页)。我有同样的问题,并尝试了 ``16`` 和 ``24`` 作为深度。还是有黑视频。你还有你用于 ffmpeg 的命令吗? (3认同)