首页 > 其他分享 >FFmpeg屏幕录制(转)

FFmpeg屏幕录制(转)

时间:2024-01-25 09:23:27浏览次数:28  
标签:dshow gdigrab FFmpeg Windows 录制 录屏 屏幕 ffmpeg

一、FFmpeg简介

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

二、Windows下安装配置FFmpeg

1、下载

1)进入下载页面 https://ffmpeg.org/download.html 下载Windows可执行文件到本地。

2、解压安装

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

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、命令详解

官方全文档地址:https://ffmpeg.org/ffmpeg.html#Stream-specifiers-1    全英文,唉……

附一个录屏教学视频,挺好的(能找的到就不错了):https://www.zhihu.com/zvideo/1240037588020662272

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

</article>

标签:dshow,gdigrab,FFmpeg,Windows,录制,录屏,屏幕,ffmpeg
From: https://www.cnblogs.com/lrzy/p/17986309

相关文章

  • ffmpeg-打开文件-avio_open_dir-avio_read_dir
    vio_open_diravio_read_dirCode#includevoiddir_function(void){ AVIOContext*ctx=NULL; //目录操作上下文 AVIODirEntry*entry=NULL; //目录项 av_log_set_level(AV_LOG_DEBUG); //设置日志等级 intret=avio_open_dir(&ctx,"./A",NULL); if(r......
  • SAP dialog使用选择屏幕+容器展现 步骤+源码
    系统自带的选择都是单选的,但是需求不一定是单选的,那么需要和选择屏幕一样的范围选择要怎么做呢,以下是一个样例,通过查询物料号来展现物料表的数据。9000屏幕创建屏幕设置屏幕类型布局编辑构建一个子屏幕subscreen用于防止选择屏幕,构建一个客制化容器contain用于存放......
  • Microsoft 365 新功能速递:Microsoft Teams(Premium版本)Watermark支持录制播放
    51CTO博客链接:https://blog.51cto.com/u_13637423Microsoft将在2024年2月份推出TeamsMeeting录制的视频应用水印功能,在会议录制播放过程中,电子邮件ID将显示为水印。会议结束后,用户可以在网络和移动平台上访问录制的内容,观看带有水印的录制。说明:水印功能需要TeamsPremium许可证。......
  • ssr屏幕空间射线追踪
    本轮作业中,我们需要在一个光源为方向光,材质为漫反射(Diffuse)的场景中,完成屏幕空间下的全局光照效果(两次反射)。为了在作业框架中实现上述效果,基于我们需要的信息不同我们会分三阶段着色,每个阶段都有相对应的任务。第一次着色负责计算ShadowMap所需的深度值并保存到贴......
  • 详解ffmpeg avcodec_encode_video2 函数报错
    详解ffmpegavcodec_encode_video2函数报错在使用FFmpeg进行视频编码时,开发者经常会使用avcodec_encode_video2函数来进行编码操作。然而,有时候会遇到该函数报错的情况,本文将详细解析这个问题及其可能的解决方法。问题描述当调用avcodec_encode_video2函数时,可能会出现以下错误信......
  • UI测试脚本录制器已上线,RunnerGo :UI自动化测试平台
    想快速配置可视化UI自动化测试脚本?RunnerGo近期上线脚本录制器,根据你的测试操作直接生成UI自动化测试脚本,下面是使用方法Step1:下载录制器点击RunnerGo上方插件按钮下载录制器Step2:录制器使用将插件文件拖入浏览器扩展程序点击打开录制器,在浏览器中进行操作时录制器会将操作录制为......
  • UI测试脚本录制器已上线,RunnerGo :UI自动化测试平台
    想快速配置可视化UI自动化测试脚本?RunnerGo近期上线脚本录制器,根据你的测试操作直接生成UI自动化测试脚本,下面是使用方法Step1:下载录制器点击RunnerGo上方插件按钮下载录制器 Step2:录制器使用将插件文件拖入浏览器扩展程序 点击打开录制器,在浏览器中进行操作时录制器......
  • 快速录制UI测试脚本,RunnerGo新上脚本录制器
    想快速配置可视化UI自动化测试脚本?RunnerGo近期上线脚本录制器,根据你的测试操作直接生成UI自动化测试脚本,下面是使用方法Step1:下载录制器点击RunnerGo上方插件按钮下载录制器Step2:录制器使用将插件文件拖入浏览器扩展程序点击打开录制器,在浏览器中进行操作时录制器会将操作录制为......
  • 快速录制UI测试脚本,RunnerGo新上脚本录制器
    想快速配置可视化UI自动化测试脚本?RunnerGo近期上线脚本录制器,根据你的测试操作直接生成UI自动化测试脚本,下面是使用方法Step1:下载录制器点击RunnerGo上方插件按钮下载录制器 Step2:录制器使用将插件文件拖入浏览器扩展程序 点击打开录制器,在浏览器中进行操作时录制器......
  • 全面解析华企盾DSC屏幕浮水印功能
    在当今信息化时代,企业的核心数据信息面临着巨大的安全挑战。近年来,数据泄露事件频发,严重损害了企业的经济利益和商业信誉。为了有效防范数据泄露风险,许多企业选择部署数据安全防护系统。其中,华企盾DSC数据防泄密系统凭借其多方面的数据安全防护功能,在业内备受青睐。客户痛点:某公......