我正在尝试通过 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
我现在有两个视频和声音。