ffmpeg无法捕获屏幕上运行的视频

ffmpeg无法捕获屏幕上运行的视频,ffmpeg,Ffmpeg,我正在尝试将幻灯片演示捕获为视频。我正在使用以下命令捕获我的屏幕 ffmpeg \ -f x11grab -s 1024x768 -r 25 -i $DISPLAY \ -f alsa -i pulse \ -vcodec libx264 -preset ultrafast -vb 1000k \ -acodec libmp3lame -ab 128k \ test.avi 这是可行的,屏幕上的应用程序窗口是可见的,声音记录在test.avi中,但问题是:屏幕上显

我正在尝试将幻灯片演示捕获为视频。我正在使用以下命令捕获我的屏幕

ffmpeg \
   -f x11grab -s 1024x768 -r 25 -i $DISPLAY \
   -f alsa -i pulse \
   -vcodec libx264 -preset ultrafast -vb 1000k \
   -acodec libmp3lame -ab 128k \
   test.avi
这是可行的,屏幕上的应用程序窗口是可见的,声音记录在test.avi中,但问题是:屏幕上显示的任何视频,例如在浏览器窗口中运行的youtube视频,以及由mplayer播放的视频,在播放捕获的视频test.avi时仅显示为空框,例如绿色框

我正在Ubuntu 12.04.5 LTS上使用ffmpeg版本0.8.16-4:0.8.16-0ubuntu0.12.04.1,nvidia-331驱动程序的效果与旧版nvidia-304相同


如果有任何建议,我将不胜感激,非常感谢

禁用视频播放器的视频加速。目前,视频被视频硬件覆盖,而不是使用软件绘制,因此无法通过简单的截图来捕获。

我无意中发现了问题的解决方案,尽管我不明白。这似乎取决于您使用的窗口管理器。我要么使用Gnome Classic,要么在登录框中选择Gnome Classic无效果

捕获屏幕上运行的视频失败,在录制过程中会看到一个空白框,但它可以正常工作,不会对另一个框下的播放器或ffmpeg进行任何更改

这解决了我的问题,但我想知道窗口管理器如何影响捕获问题。我了解到Gnome Classic no effects使用Metacity,而Gnome Classic在德语中使用Compiz see

我认为njahnke是对的,这与硬件加速有关,谢谢你的回答,但是与窗口管理器的关系还不清楚

也许对于遇到同样问题的人来说,知道这一点很有用

[编辑]我刚刚从我引用和翻译的一位同事那里学到了以下内容:[与窗口管理器的关系]是显而易见的。在Gnome Classic no effects中,所谓的合成被关闭,即单个窗口直接绘制到缓冲区中,缓冲区完全由图形卡管理和可视化,从而防止窗口管理器访问窗口内容。通过合成,窗口被绘制到缓冲区中,软件可以在缓冲区中添加效果,然后才传输到帧缓冲区。然后,图形卡只显示最终的帧缓冲区,而不是单个窗口。因此,ffmpeg也可以访问该帧缓冲区