我正在尝试Xvfb
使用ffmpeg
或录制视频输出avconv
.我先Xvfb
说:
$ Xvfb :29 -screen 0 1024x768x24
当我稍后尝试使用( 输出相同):29
来记录显示时:avconv
ffmpeg
$ avconv -f x11grab -s xga -r 25 -b 2000k -i :29.0 -y selenium.avi
我收到以下错误:
avconv version 0.8.4-4:0.8.4-0ubuntu0.12.04.1, Copyright (c) 2000-2012 the Libav developers
built on Nov 6 2012 16:51:33 with gcc 4.6.3
[x11grab @ 0x1915b80] device: :29.0 -> display: :29.0 x: 0 y: 0 width: 1024 height: 768
[x11grab @ 0x1915b80] shared memory extension found
X Error of failed request: BadCursor (invalid Cursor parameter)
Major opcode of failed request: 142 (XFIXES)
Minor opcode of failed request: 25 (XFixesGetCursorImageAndName)
Resource id in failed request: 0x200001
Serial number of failed request: 14
Current serial number in output stream: 14
avconv
适用于显示器:0
并创建正确的视频。我还可以:29
使用x11vnc
/连接到显示器vncviewer
。我注意到使用1024x768x8
(8 位而不是 24 位)avconv
不会失败,但输出视频完全是黑色的。
我是否遗漏了一些重要的选项或设置?我正在运行 Linux 3.2.0-36-generic (Ubuntu 12.04x64)。
答案1
这很可能是由 Isaac Dooley 在 FFmpeg 中通过提交修复的469a65b,修复错误#1738 x11grab 错误光标。您必须编译 ffmpeg,因为静态版本不包含 x11grab 支持。以下是适用于所有受支持的 Ubuntu 版本的易于遵循的编译指南:在 Ubuntu 上编译 FFmpeg。
由于 libav 忽略了大多数 FFmpeg 活动,因此 avconv 不包含此修复程序(以及许多其他修复程序)。
另请参阅如何在 Linux 上正确进行屏幕录制。
答案2
我遇到了完全相同的问题。请按照以下步骤操作,应该对您有用。
$ Xvfb:2-屏幕 0 1024x768x24&
$导出显示=:2
$ xeyes &
注意:如果没有 X 应用程序(例如:xeyes)正在运行,您将收到 BadCusor 错误。$ avconv-f x11grab-s xga-r 25-b 2000k-i:29.0-y selenium.avi