使用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,也可以同时录制系统声音+麦克风
本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。
近期评论