龙空技术网

FFmpeg屏幕录制

端庄优雅青山NAl 167

前言:

此时各位老铁们对“ffmpeg录制屏幕”大体比较关切,小伙伴们都需要学习一些“ffmpeg录制屏幕”的相关资讯。那么小编同时在网摘上汇集了一些有关“ffmpeg录制屏幕””的相关文章,希望各位老铁们能喜欢,咱们一起来了解一下吧!

一、FFmpeg简介

FFmpeg 是领先的多媒体框架,能够解码、编码、转码、混合、解密、流媒体、过滤和播放人类和机器创造的几乎所有东西。它支持最晦涩的古老格式,直到最尖端的格式。无论它们是由某个标准委员会、社区还是公司设计的。它还具有高度的便携性。FFmpeg 可以在 Linux、Mac OS X、Microsoft Windows、BSDs、Solaris 等各种构建环境、机器架构和配置下编译、运行,并通过测试基础设施 FATE。

它包含 libavcodec、libavutil、libavformat、libavfilter、libavdevice、libswscale 和 libswresample等程序集,可以被程序开发者调用使用。还有 ffmpeg、ffplay 和 ffprobe等可执行程序,可以被用户直接使用。

Github:

官网:FFmpeg

下载页面直达:Download FFmpeg

二、Windows下安装配置FFmpeg1、下载

1)进入下载页面 下载Windows可执行文件到本地。

2、解压安装

下载好后解压到你想安装的文件目录下,我的安装目录是D:\dev\app\ffmpeg-win64

相关学习资料推荐,点击下方链接免费报名,先码住不迷路~】

音视频免费学习地址:FFmpeg/WebRTC/RTMP/NDK/Android音视频流媒体高级开发

【免费分享】音视频学习资料包、大厂面试题、技术视频和学习路线图,资料包括(C/C++,Linux,FFmpeg webRTC rtmp hls rtsp ffplay srs 等等)有需要的可以点击788280672加群免费领取~

3、配置环境变量

配置FFmpeg环境变量,如下:

先进入bin目录获取路径:D:\dev\app\ffmpeg-win64\bin

打开系统开始菜单--右击计算机--点击属性--选中高级系统设置--选择高级--选择环境变量设置

在系统变量里选择path,选择编辑,将FFmpeg的bin目录的路径D:\dev\app\ffmpeg-win64\bin;加进去,记得加上分号(win7),点击“确定”保存,即配置完成。(win10直接新建即可。)

4、检验是否配置成功

使用命令行窗口检验是否安装成功

调用命令行(windows+R输入cmd)输入“ffmpeg –version”,如果出现如下说明配置成功。

接下来我们就可以在命令提示行中使用FFmpeg相关命令进行各种操作了。

三、屏幕录制1、试用

在命令行中输入如下命令:

ffmpeg -f gdigrab -i desktop -f mp4 d:/out.mp4

回车后,如下效果:

代表正在录屏,最后一行可以看实时状态。可以按q键终止录屏

终止录屏后,在 d 盘下就可以看到刚才录的 out.mp4视频文件了。

2、命令详解

官方全文档地址:ffmpeg Documentation 全英文,唉……

附一个录屏教学视频,挺好的(能找的到就不错了):15-ffmpeg常用 命令视频录制

Windows下ffmpeg采集设备的主要方式是dshow(directshow)、vfwcap、gdigrab,其中dshow可以用来抓取摄像头、采集卡、麦克风等,vfwcap主要用来采集摄像头类设备,gdigrab则是抓取Windows窗口程序。

在Windows平台下,ffmpeg 录制屏幕的方式大体上有2种,一种是基于gdigrab的录屏,一种是基于dshow的录屏。directrow的录屏方式详见简书文章FFMPEG windows录屏。网上有人说:dshow的渲染效率高,占用资源小,需要安装directx的驱动。而gdigrab的方式,则简单很多,缺点是占用资源大,帧率不高,但勉强能用。但是通过我自行测试发现,反而是gdigrab占用资源小一些。使用者自行选择吧。

网上搜了搜录屏命令的结构,就拿下面一行来举例说吧:

ffmpeg -f gdigrab -t 30 -framerate 15 -i desktop -f dshow -i audio="virtual-audio-capturer" -b:v 3M -pixel_format yuv420p -vcodec libx264 -s 1366x768 -y d:/test.flv

重要注释:

-f 指定采集数据方式,一般为dshow 或 gdigrab。gdigrab为系统自带,只能录屏幕,没声音;dshow需装directX,优点是可以指定多个输入,比如下载安装screen capture recorder后,可将其作为dshow模式下的视频输入,可将virtual-audio-capturer作为dshow模式下的音频输入,实现录屏的同时录音。

-i 指定输入,desktop表示gdigrab采集模式输入全部桌面。dshow模式下自己指定,如:-i video="screen-capture-recorder" -i audio="virtual-audio-capturer"

-t 表示录屏时间,缺省则没有录屏时间限制,会一直录,录到手动停止或强制关闭

-framerate 表示帧率。对屏幕录制来说,一般15帧就够了,太大的话会很占资源,cpu占用率、内存、存储空间占用等都会很高。

- s 表示分辨率

-b:v 表示码率,如:-b:v 3M。大一点清楚,但是占资源,自己权衡吧。

-pixel_format 表示像素格式,如yuv420p等,注意选择不同的像素格式会影响资源占用率和视频质量,自己研究吧。

-vcodec 表示编码方式。libx264表示软编码,编码器的库为x264。你可以选择其他的,不同的编码方式也会影响资源占用率和视频质量,自己研究吧。此外可以用硬件加速,硬编解码有3种常见的方式,例如:-vcodec h264_qsv,即使用集显加速;例如: -vcodec h264_nvenc,即使用N卡加速;例如: -vcodec h264_amf,即使用A卡加速。开启硬件加速的情况下可大大降低CPU的占用率

-y 表示覆盖同名文件

d:/test.flv为输出文件名,格式虽然mp4较为常见,但我建议用flv格式,因为如果中间有录制损坏,mp4整个就播放不了了,但flv能。

三、问题总结

捕获图像不清晰。

解决办法:

添加参数:-preset ultrafast

原文链接:FFmpeg屏幕录制_ffmpeg录屏_wonder-_-的博客-CSDN博客

标签: #ffmpeg录制屏幕