X 使用 ffmpeg/avconv 录制 Xvfb 时出现请求失败错误:BadCursor(无效的 Cursor 参数)

X 使用 ffmpeg/avconv 录制 Xvfb 时出现请求失败错误:BadCursor(无效的 Cursor 参数)

我正在尝试Xvfb使用ffmpeg或录制视频输出avconv.我先Xvfb说:

$ Xvfb :29 -screen 0 1024x768x24

当我稍后尝试使用( 输出相同):29来记录显示时:avconvffmpeg

$ 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

我遇到了完全相同的问题。请按照以下步骤操作,应该对您有用。

  1. $ Xvfb:2-屏幕 0 1024x768x24&

  2. $导出显示=:2

  3. $ xeyes &
    注意:如果没有 X 应用程序(例如:xeyes)正在运行,您将收到 BadCusor 错误。

  4. $ avconv-f x11grab-s xga-r 25-b 2000k-i:29.0-y selenium.avi

相关内容