学习路线指引(点击解锁) | 知识定位 | 人群定位 |
---|---|---|
Python实战微信订餐小程序 | 进阶级 | 本课程是python flask+微信小程序的完美结合,从项目搭建到腾讯云部署上线,打造一个全栈订餐系统。 |
Python量化交易实战 | 入门级 | 手把手带你打造一个易扩展、更安全、效率更高的量化交易系统 |
最近部门内部在做技术分享交流,需要将内容录制成视频存档。很自然的想到了去网上找一些录屏的软件,试过了几款诸如
屏幕录像大师
Captura
之类的录屏软件,要么操作太繁琐,要么压缩率太低不支持H265编码。于是想到了音视频处理的神器ffmpeg
!于是查了一些资料,踩了若干坑之后,总结出了本文。现在分享给大家!
Windows builds from gyan.dev
:ffmpeg-git-full.7z
,即可下载:同意
和下一步
直到完成即可。我把它放在了D:\opt\ffmpeg\
。然后记住这个路径D:\opt\ffmpeg\bin
,后面的录屏命令用的到。
D:\opt\ffmpeg\bin
添加到系统环境变量。目的是不用记住上一步的这个路径D:\opt\ffmpeg\bin
,就可以用ffmpeg。具体方法请自行百度。至此,ffmpeg就安装完了。
按下Windows
+R
键,输入cmd
,回车,打开命令提示符窗口:
依次输入以下命令
| | # 跳转至ffmpeg程序所在路径,设置了ffmpeg环境变量的可以略过 |
| | d: |
| | cd /opt/ffmpeg/bin/ |
| | # 上面的盘符`d:`和路径`/opt/ffmpeg/bin/` 要根据你ffmpeg的安装路径灵活修改! |
ffmpeg -list_devices true -f dshow -i dummy
,查看可用设备的清单(每台电脑的结果都不太一样,但是相似,可以根据我下面的结果甄别自己电脑的设备):电脑画面该选哪个呢?有两种方案:
Screen Capturer Recorder
然后选择上面的设备清单中的screen-capture-recorder
(见上图;安装好后再重新执行查看设备的命令才会出现)。gdigrab
。麦克风阵列 (Realtek(R) Audio)
。输入ffmpeg -encoders |findstr "hevc 265"
,查看可用的编码器。我的电脑支持这些:
该选择哪一个呢?
libx265
是通用的,选这个最保守,但是它在不做优化的情况下是靠cpu运算。简单理解,一旦开启录屏,你的电脑cpu使用率会飙升,甚至造成电脑卡顿。尝试一下,如果没有造成卡顿,就可以继续用这个编码器了。hevc_nvenc
编码器。hevc_amf
,如果是Intel的,就选hevc_qsv
。 或者干脆挨个尝试一下,反正又不多。hevc_nvenc
。通过上面两步,我记住了我的音频输入设备是麦克风阵列 (Realtek(R) Audio)
,编码器是hevc_nvenc
。下面在命令提示符窗口输入我的录屏命令
| | ffmpeg -f dshow -i audio="麦克风阵列 (Realtek(R) Audio)" -f gdigrab -i desktop -c:v hevc\_nvenc -r 8 -b 0.6M -minrate 0.4M -maxrate 2M -bufsize 4M -y D:\Personal\Desktop\录屏%date:~0,4%%date:~5,2%%date:~8,2%%time:~0,2%%time:~3,2%%time:~6,2%.mp4 |
按下回车,录屏就开始了!结束录屏的话,选中录屏的命令提示符窗口,按下
Q
键就可以了。
其中-f dshow -i audio="麦克风阵列 (Realtek(R) Audio)"
是指定采集的音频设备,你可以将麦克风阵列 (Realtek(R) Audio)
换成你想要采集的音频输入设备。
其中-f gdigrab -i desktop
是指定采集的视频设备,含义为采集电脑屏幕画面,此项无需修改。(还记得上面说过,录制电脑画面有两种方案吗,这是第二种。)
其中-c:v hevc_nvenc
是指定视频编码器,你可以将hevc_nvenc
换成适合你的编码器。如果实在不知道该选哪个,就用libx265
,如果用这个电脑录屏会卡,就用libx264
。还卡?就放弃吧。
可以通过这个判断自己的编码器选择是否合适
-r 8
是指定视频的帧率。(帧率是什么,可自行百度。)简单说,这个值越高,视频就会越流畅,但是录屏后的视频文件越大(其他参数不变的情况下);反之,视频就会越跳跃,极端情况下会变成ppt的效果,但是视频文件的体积会越小。对于录屏来说,建议设置在5–30之间,通过多次尝试,找到自己满意的数值。-b 0.6M -minrate 0.4M -maxrate 2M -bufsize 4M
是设置视频的比特率,就是每秒会产生多大的体积。0.6M就是每秒会占600kbp,简单说就是一秒的视频体积是600➗8也就是不到100K。-b
后面跟的是基准比特率,-minrate
是最小比特率 -maxrate
是最大比特率。比特率不能过低,虽然会降低文件体积,但是过低会导致画面的清晰度惨不忍睹!过高也没有意义,因为画面的效果还收其他参数的影响,比如分辨率、帧率等等。推荐的最小值是-b 0.6M -minrate 0.4M -maxrate 2M -bufsize 4M
,最大值是-b 2M -minrate 1M -maxrate 4M -bufsize 8M
D:\Personal\Desktop\录屏%date:~0,4%%date:~5,2%%date:~8,2%%time:~0,2%%time:~3,2%%time:~6,2%.mp4
是录屏文件保存位置和名称。可根据自己的需要修改。-r
,码率-b
,分辨率等参数,可以在多次尝试中找到文件体积和录制效果间的一个权衡。这里给出一个参考:通常H265编码下,1080p的视频大小应该在300M到1.5G之间,我按照上手参数录制的视频在400M左右。
| | D: |
| | /opt/ffmpeg/bin/ffmpeg.exe -f dshow -i audio="麦克风阵列 (Realtek(R) Audio)" -f gdigrab -i desktop -c:v hevc\_nvenc -r 8 -b 0.6M -minrate 0.4M -maxrate 2M -bufsize 4M -y D:\Personal\Desktop\录屏%date:~0,4%%date:~5,2%%date:~8,2%%time:~0,2%%time:~3,2%%time:~6,2%.mp4 |
注意:保存后的bat文件编码得是windows默认的GBK,如果是UTF-8会导致执行失败!
ffmpeg能做的事情远不止这些,它还能加水印,多路混采(像是同事录制电脑和话筒的声音,同事录制桌面和摄像头等等),感兴趣的同学可以自省挖掘和研究。
最后,如有交代不清的,或者错误之处,欢迎交流指正!