使用ffmpeg录制屏幕

闲着没事折腾下这个,百度到的其他结果只能录制屏幕+系统声音,我这里折腾出了系统声音+麦克风的混音。

这里的ffmpeg不是指ffmpeg库,而是命令行工具,可以从http://ffmpeg.zeranoe.com/builds/下载到。

ffmpeg本身并不具有屏录功能,但它可以采集其他设备的输入,这里就需要用到另一个开源软件Screen Capturer Recorder,这个东西把屏幕虚拟为一个DirectShow设备。虽然它的安装包挺大,其实真正有用的就里面的4个dll,也可以自己手动注册这几个dll。

安装完成后就可以开始了。


只录制屏幕:

ffmpeg -f dshow -i video="screen-capture-recorder" -pix_fmt yuv420p out.mp4

只录制系统声音:

ffmpeg -f dshow -i audio="virtual-audio-capturer" out.mp3

同时录制屏幕+系统声音:

ffmpeg -f dshow -i audio="virtual-audio-capturer":video="screen-capture-recorder" -pix_fmt yuv420p out.mp4

同时录制屏幕+系统声音+麦克风(参数较长,为便于阅读增加了换行):

ffmpeg -f dshow -i audio="麦克风 (Realtek High Definition Audio)"
-f dshow -i audio="virtual-audio-capturer"
-filter_complex amix=inputs=2:duration=first:dropout_transition=0
-f dshow -i video="screen-capture-recorder" -pix_fmt yuv420p
out.mp4

 

说明:

  • -f dshow表示从DirectShow设备中获取输入内容
  • -pix_fmt用来设置像素格式
  • -filter_complex amix…设置混音,把前面的麦克风和系统声音合并到一个音频流
  • 参数必须按顺序传递,不能改变顺序,先传入所有输入文件,再设置过滤器,最后传入输出文件名
  • ffmpeg默认录制30帧的H264视频+AAC音频,一般CPU都可以实时完成H264压缩,在我的电脑上,CPU占用率大概为30%
  • 最新版ffmpeg已经可以使用H265压缩,但这个编码器对CPU要求较高,我的E3 CPU满载只能跑16帧,达不到实时编码的要求,丢帧严重。但是后期转码为H265还是很合适的,据我测试,H264视频转码为同样质量的H265,体积只有原来的三分之一,效果明显。

发现的问题:

  • 不知道怎么回事,系统声音和麦克风并不同步,麦克风会延迟大概1秒,对于演示视频来说没啥影响,对于游戏、唱歌等就不行了

题外话:

  • 用ffmpeg屏录只是一个尝试,它确实可以,如果只录制屏幕+系统声音、不考虑麦克风的话,效果很棒
  • 虽然命令行参数比较长,但这不是问题,写个批处理或者创建个快捷方式就是了,小白也可以一键开启录制
  • 如果需要录制游戏解说,还是用其他专业屏录软件吧
  • 显卡驱动自带的屏录软件也是很好用的,比如N卡的ShadowPlay,自带显卡加速,使用显卡来进行H264编码,录制时几乎不占CPU,也可以同时录制系统声音+麦克风

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

扫码去手机上看