使用 ffmpeg x11grab 设备从 xvfb 录制屏幕时出现黑屏

使用 ffmpeg x11grab 设备从 xvfb 录制屏幕时出现黑屏

我正在尝试通过 Firefox 录制视频,xvfb-run但视频文件中除了黑屏外始终没有任何输出。

这是我所做的:

启动 Firefox,打开 google.com:

$ xvfb-run firefox https://google.com

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

屏幕截图可以通过命令很好地完成:

$ xwd -root -silent -display :99.0 | xwdtopnm |pnmtojpeg > screen.jpg

开始使用ffmpeg录制视频:

$ ffmpeg -f x11grab -i :99.0 out.mpg

当我播放视频文件时out.mpg,屏幕一直处于黑屏状态。

我是否遗漏了什么参数?

更新

我仅通过以下命令就使视频正常工作而不是黑屏:

$ ffmpeg -y -r 30 -g 300 -f x11grab -s 1024x768 -i :99 -vcodec qtrle out.mov

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

$ xvfb-run -s "-screen 0 1224x768x16" -a firefox http://google.com

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

答案1

我碰巧遇到了同样的问题,并发现:您必须指定深度(在本例中为 16),这样 ffmpeg 才不会产生黑屏。

例如

Xvnc -geometry 1024x768 -depth 16 :10  <<---WORKS
Xvnc -geometry 1024x768 :10            <<---does NOT work, produce black screen.

答案2

我遇到了类似的问题(黑色视频,而屏幕截图显示帧缓冲区),使用以下行:

$ ffmpeg -f x11grab -i :99.0 out.mp4

在找不到任何解决方案后,我(出于绝望)将扩展名/编码器更改为“webm”。
突然它就起作用了,我得到了包含实际内容的视频:

$ ffmpeg -f x11grab -i :99.0 out.webm

所以不知道这里发生了什么(编码器坏了?),但对于录制后留下黑色视频的人来说,也许值得尝试一下。

编辑/PS:原来我的问题是 VLC,它无法在硬件中解码 x264,最终导致视频变黑。“mplayer”或任何其他播放器都运行良好。所以问题不在于录制本身。哎呀。

答案3

我也遇到了同样的问题。似乎与官方 Ubuntu 软件包中提供的 ffmpeg 版本有关(在我的情况下,确切地说是 Kubuntu 15.04)。

我下载了 ffmpeg 源代码,并在文档我设法让某件事运转起来。

构建过程需要长的时间!默认情况下,许多功能(包括 x11grab)被禁用。我最终得到以下结果:

./configure \
    --prefix=/home/exhuma/.local \
    --enable-x11grab \
    --enable-gpl \
    --enable-libx264 \
    --enable-libmp3lame \
    --enable-nonfree

我现在有两个视频声音。

答案4

在 ubuntu 22 上遇到了这个问题。必须在登录屏幕上启用 xorg 来修复它:

在此处输入图片描述

相关内容