将 ffmpeg 与 xvfb 一起使用会呈现屏幕的裁剪版本

Using ffmpeg with xvfb renders a cropped version of the screen

我正在使用以下命令在虚拟帧缓冲区内渲染 chrome 浏览器 运行 的视频(使用 xvfb):

ffmpeg -f x11grab -i :5 -s `DISPLAY=:5 xdpyinfo | grep 'dimensions:'|awk '{print }'` -r 30 tests.mpg

当我省略 DISPLAY=:5 xdpyinfo | grep 'dimensions:'|awk '{print }' 时,它将在大约 1024x768 处呈现,因此我调用了 xdpyinfo 来获取显示器的分辨率并将其告知 ffmpeg。

但是当我使用该命令时,它显示相同的裁剪区域,只是拉伸以适应我给 ffmpeg 的分辨率。

我希望能够在不裁剪或拉伸的情况下记录整个虚拟帧缓冲区。有办法吗?

我今天早上刚从源代码编译了ffmpeg,运行 v2.8.git

-i之后的参数控制输出,而不是输入。

要设置源分辨率,请在 -i 之前使用 -video_sizexdpyinfo 输出 。对于帧率使用 -framerate.

x11grab 输入的格式为 [hostname]:display_number.screen_number[+x_offset,y_offset]

ffmpeg -video_size `DISPLAY=:5 xdpyinfo | grep 'dimensions:'|awk '{print }'` -framerate 30 -f x11grab -i :5.0+0,0 output.mpg

查看文档和指南:https://trac.ffmpeg.org/wiki/Capture/Desktop