屏幕捕获

FFMPEG with x11grab

最近版本的FFMPEG包含一个屏幕捕获模块x11grab。这个方法可以获得很好的屏幕捕获结果,同时它也是一个最灵活的方法之一,允许多种音频输入和音视频输出格式。

Run FFMPEG with x11grab
使用ALSA输入的2路音频记录的命令如下:

ffmpeg -f alsa -ac 2 -ab 192k -i pulse -f x11grab -s 1024x768 -r 30 -i :0.0 -acodec pcm_s16le -vcodec libx264 -vpre lossless_ultrafast -threads 0 /home/user/capturedvideo.avi
这些选项的顺序很重要(因为有的选项会覆盖其他选项)。

-f alsa :alsa音频输入(还有一个可选的是oss);

-ac 2:2路音频记录(单声道用 -ac 1);

-ab 192k:192kb/s的音频,这对于你得需要来说可能太高了,一般值为128k;

-i pulse:音频输入使用Pulse Audio(假设你设置过了);

-i :0.0:捕获0.0屏幕,就是你的主屏幕;

-acodec pcm_s16le:用无损的16位音频编码来保存,这会产生一个大文件。如果你想的话你可以使用其他的音频格式(例如libmp3lame),或者当你处理/转换成最终期望格式的时候再进行二次编码。也可以查阅 FFMPEG x11grab documentation来获得其他选项。

你也可以使用除libx264之外的其他视频编解码器(即使没有与H.264/X264一致的视频质量)。在一个命令行终端里,输入ffmpeg -formats E来查看你得FFMPEG版本支持哪些视频编解码器。例如,要用XVID视频编码器和Mp3音频编码器创建一个.flv文件,用以下命令:

ffmpeg -f alsa -ac 2 -ab 128k -i pulse -f x11grab -s 1024x768 -r 30 -i :0.0 -acodec libmp3lame -vcodec mpeg4 -vtag xvid /home/user/capturedvideo.avi

然而,我发现使用H.264/X264编码捕获,然后再转换成(更小和更通用的)XVID格式,这样获得的质量会好很多。

         当然,这个命令可以用作一个目录项。当我们创建一个目录项,确保“Advanced -> Run in terminal”选项被勾选。(I don't know...)

         要想停止录制,在FFMPEG/X11运行的终端窗口输入“CTRL+C”(或者“q”)即可。

如果你已经安装了xwininfo(在ubuntu是默认安装的),你可以把

-s 1024x768
替换成

-s $(xwininfo -root | awk '/geometry/ {print $2}')
为了自动地捕获任意大小的屏幕。命令如下:

ffmpeg -f alsa -ac 2 -ab 192k -i pulse -f x11grab -s $(xwininfo -root | awk '/geometry/ {print $2}') -r 30 -i :0.0 -acodec pcm_s16le -vcodec libx264 -vpre lossless_ultrafast -threads 0 /home/user/capturedvideo.avi
       使用Pulse Audio的一个好处就是几个输入可以结合起来,允许麦克风输入和音乐输入,例如。相关的音量可以用Pulse Audio Volume Control来控制( sudo apt-get install pavucontrol)。

       如果你没有安装Pulse Audio,你可以从主音频输入卡捕获,把

-i pulse
替换成

-i hw:0,0
或者

-i /dev/dsp
指定一个区域相对于屏幕左上角的偏移量,可以录制指定区域或者应用程序窗口。当x偏移量为10,y偏移量为20时,使用选项:0.0+10,20。也要指定区域的大小,例如-s 320x240。一个完整的命令可能为:

ffmpeg -f alsa -ac 2 -ab 128k -i pulse -f x11grab -s 320x240 -r 30 -i :0.0+10,20 -acodec libmp3lame -vcodec mpeg4 -vtag xvid /home/user/capturedvideo.avi
在完成了屏幕捕获之后,你可以编辑并且转换成你期望的最终格式,使用FFMPEG,mencoder,或者一个单独的视频编辑器。一些转换方法的例子 here

这个程序的视频 here on YouTube


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值