【原创】FFMPEG录屏入门指南
- 下载ffmpeg
点击 ffmpeg官网,选择windows,然后点击
Windows builds from gyan.dev:

也可以直接点击 https://www.gyan.dev/ffmpeg/builds/ ,在点击
ffmpeg-git-full.7z,即可下载:

下载到的文件格式为7z(一种压缩格式),用电脑安装的压缩工具解压即可。如果没有安装支持7z的压缩工具,可以点击https://www.7-zip.org/,下载:

下载完,双击打开,一路同意和下一步直到完成即可。解压后剪切至自己习惯放软件的文件夹下即可:

我把它放在了
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,查看可用设备的清单(每台电脑的请结果都不太一样,但是相似,可以根据我下面的结果甄别自己电脑的设备):

- 我这次录屏,需要录制电脑画面和麦克风的声音,于是用到了上面结果中的
麦克风阵列 (Realtek(R) Audio)设备,注意是这一部分,不包含引号:

电脑画面改选哪个呢?有两种方案:
- 安装
Screen Capturer Recorder然后选择上面的设备清单中的screen-capture-recorder(见上图;安装好后再执行查看设备的命令才会出现)。 - 直接使用ffmpeg内置的
gdigrab
第一种我操作失败了,所以我选用第二种。现在我需要记住的的是音频输入设备名称麦克风阵列 (Realtek(R) Audio)。
- 查看可用编码器
输入ffmpeg -encoders |findstr "hevc 265" ,查看可用的编码器。我的电脑支持这些:

该选择哪一个呢?
- 首先
libx265是通用的,选这个最保守,但是它再不做优化的情况下是靠cpu运算。简单理解,一旦开启录屏,你的电脑cpu使用率会飙升,甚至造成电脑卡顿。尝试一下,如果没有造成卡顿,就可以计需用这个编码器了。 - 如果电脑配置有限,或者有独立显卡的话,咱们可以挑一个独显支持的编码器。我的电脑是NVIDIA的独显,所以我选择与之对应的
hevc_nvenc编码器。
你该怎么找到适合的呢?首先知道自己的电脑有没有独显,独显是Intel的,还是NVIDIA的,还是AMD的,然后从关键词里面找对应的就行。拿我的清单举例:如果是AMD的,就选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
其中
-f dshow -i audio="麦克风阵列 (Realtek(R) Audio)"是指定采集的音频设备,你可以将麦克风阵列 (Realtek(R) Audio)换成你想要采集的音频输入设备。其中
-f gdigrab -i desktop是指定采集的视频设备,含义为采集电脑屏幕画面。其中
-c:v hevc_nvenc是指定视频编码器,你可以将hevc_nvenc换成适合你的编码器。如果实在不知道该选哪个,就用libx265,如果用这个电脑录屏会卡,就用libx264。还卡?就放弃吧。如果开始录屏后,cpu飙升,说明使用的cpu进行编码运算:

如果是GPU生生明显,cpu上升不明显,则说明编码器再用独显计算:

其中
-r 8是指定视频的帧率。帧率是什么,可自行百度。简单说,这个值越高,视频就会越流畅,但是录屏后的视频文件越大(其他参数不变的情况下);反之,视频就会越跳跃,极端情况下会变成ppt的效果,但是视频文件的体积会越小。对于录屏来说,建议设置在5--30之间,通过多次尝试,找到自己满意的数值。其中
-b 0.6M -minrate 0.4M -maxrate 2M -bufsize 4M是设置视频的比特率,就是每秒会产生多大的体积。0.6M就是每秒会占600kbp,简单说就是一秒的视频体积是6008也就是不到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是录屏文件保存位置和名称。可根据自己的需要修改。
- 调优
- ffmpeg关于音视频的参数非常多,本文仅仅是入门用,想是分辨率,音视频质量,音频编码,等等一系列参数并没有完全列出来。未指定的参数,ffmpeg会使用默认参数,如分辨率,会使用屏幕的分辨率。
- 对与帧率
-r,码率-b,分辨率等参数,可以再多次尝试中找到文件体积和录制效果间的一个权衡。这里给出一个参考:通常H265编码下,1080p的视频大小应该在300M到1.5G之间,我按照上手参数录制的视频在400M左右。
最后,如有交代不清的,或者错误之处,欢迎交流指正!
【原创】FFMPEG录屏入门指南的更多相关文章
- ffmpeg 录屏 screen capture recorder
ffmpeg在Linux下用X11grab进行屏幕录像,在Windows下用DirectShow滤镜 首先需要安装一个软件,screen capture recorder 编译好的下载地址是: htt ...
- Unity 利用FFmpeg实现录屏、直播推流、音频视频格式转换、剪裁等功能
目录 一.FFmpeg简介. 二.FFmpeg常用参数及命令. 三.FFmpeg在Unity 3D中的使用. 1.FFmpeg 录屏. 2.FFmpeg 推流. 3.FFmpeg 其他功能简述. 一. ...
- 【原创】推流录屏软件OBS使用教程--录屏
之前有录屏需要,写了一篇关于ffmpeg录屏的文章,反响还不错,但是直接用ffmpeg门槛有些高,今天写一篇图形界面的录屏推流工具OBS的使用教程.这次先写OBS的录屏教程 下载安装 点击 OBS官网 ...
- Fundebug录屏插件更新至0.6.0
摘要: 录屏插件的性能进一步优化,传输的数据体积大幅度减少. 录屏功能介绍 Fundebug提供专业的异常监控服务,当线上应用出现 BUG 的时候,我们可以第一时间报警,帮助开发者及时发现 BUG,提 ...
- 澄清Fundebug录屏技术的几点误会
1. "视频"并非真的视频.也不是通过连续播放大量截图来实现 首先请大家观看这个视频: 视频中,当鼠标点击"场景重现",会立即播放一段"视频" ...
- Fundebug录屏插件更新至0.5.0,新增domain参数
摘要: 通过配置domain来保证"视频"的正确录制 录屏功能介绍 Fundebug提供专业的异常监控服务,当线上应用出现 BUG 的时候,我们可以第一时间报警,帮助开发者及时发现 ...
- Fundebug录屏插件更新至0.4.0,修复BUG,优化性能
摘要: 录屏功能更加强大,欢迎免费试用! 关于Fundebug录屏功能 Fundebug是专业的程序BUG监控服务,当线上应用出现BUG的时候,我们可以第一时间报警,帮助开发者及时发现BUG,提高De ...
- javaCV入门指南:调用FFmpeg原生API和JavaCV是如何封装了FFmpeg的音视频操作?
通过"javaCV入门指南:序章 "大家知道了处理音视频流媒体的前置基本知识,基本知识包含了像素格式.编解码格式.封装格式.网络协议以及一些音视频专业名词,专业名词不会赘述,自行搜 ...
- Easyui + asp.net mvc + sqlite 开发教程(录屏)适合入门
Easyui + asp.net mvc + sqlite 开发教程(录屏)适合入门 第一节: 前言(技术简介) EasyUI 是一套 js的前端框架 利用它可以快速的开发出好看的 前端系统 web ...
随机推荐
- Unity3D学习笔记4——创建Mesh高级接口
目录 1. 概述 2. 详论 3. 其他 4. 参考 1. 概述 在文章Unity3D学习笔记2--绘制一个带纹理的面中使用代码的方式创建了一个Mesh,不过这套接口在Unity中被称为简单接口.与其 ...
- 《吐血整理》保姆级系列教程-玩转Fiddler抓包教程(5)-Fiddler监控面板详解
1.简介 按照从上往下,从左往右的计划,今天就轮到介绍和分享Fiddler的监控面板了.监控面板主要是一些辅助标签工具栏.有了这些就会让你的会话请求和响应时刻处监控中毫无隐私可言.监控面板是fiddl ...
- 基于 Rainbond 部署 DolphinScheduler 高可用集群
本文描述通过 Rainbond 云原生应用管理平台 一键部署高可用的 DolphinScheduler 集群,这种方式适合给不太了解 Kubernetes.容器化等复杂技术的用户使用,降低了在 Kub ...
- 05 MySQL_主键约束
主键约束 主键: 用于表示数据唯一性的字段称为主键: 约束:就是对表字段添加限制条件 主键约束:保证主键字段的值唯一且非空: - 格式 : create table t1(id int primary ...
- Command 'ifconfig' not found, but can be installed with: sudo apt install net-tools解决方法
VMware下安装的Ubuntu 当使用ifconfig命令查看网卡配置信息的时候出错 尝试了很多方法都解决不了,直到输入了下面的内容: 然后自己就更新了很多东西 之后重新输入ifconfig命令就能 ...
- 虚拟机上安装Linux系统
1,打开VMware,文件--新建虚拟机 2,选择自定义 3,选择VMware版本,下一步 4,选择稍后安装操作系统,下一步 5,选择Linux,版本我这里用的是centos7 6, 设置虚拟名称,设 ...
- js for和while两种99乘法表
<script type="text/javascript"> for(var i=1; i<=9; i++) { for(var j=1; j<=i;j+ ...
- linux 安装 apache+mysql+php
http://www.cnblogs.com/lufangtao/archive/2012/12/30/2839679.html
- [spring]spring详细总结
spring 1.spring简介 Spring框架是一个开源的应用程序框架,是针对bean的生命周期进行管理的轻量级容器. Spring解决了开发者在J2EE开发中遇到的许多常见的问题,提供了功能强 ...
- CodeTON Round 2 (Div. 1 + Div. 2, Rated, Prizes!) A-E
比赛链接 A 题解 知识点:思维,模拟. 发现 \(b\) 串第一个字符是 \(1\) 则只能使用 max , \(0\) 则只能使用 min ,随后只需要模拟到 \(a\) 串剩余 \(m\) 个字 ...