news 2026/7/14 13:12:50

FFmpeg 录屏与录音:从基础命令到自定义场景实战

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
FFmpeg 录屏与录音:从基础命令到自定义场景实战

1. FFmpeg 录屏与录音基础入门

第一次接触 FFmpeg 录屏时,我也被那一长串命令行参数吓到了。但实际用下来发现,只要掌握几个核心参数,就能解决 80% 的日常录制需求。FFmpeg 最厉害的地方在于,它不仅能录制屏幕,还能同时捕捉系统声音和麦克风,而且完全免费开源。

先说说 Windows 下的基础录制命令。要录制整个桌面,只需要打开命令提示符输入:

ffmpeg -f gdigrab -framerate 30 -i desktop output.mp4

这个命令里每个参数都很关键:

  • -f gdigrab告诉 FFmpeg 使用 Windows 的 GDI 截屏功能
  • -framerate 30设置每秒 30 帧的流畅度
  • -i desktop表示录制整个桌面
  • 最后的output.mp4是输出文件名

我在实际使用中发现,如果只是录制教程视频,把帧率降到 15-20 帧反而更合适。因为教学视频不需要太高的流畅度,降低帧率能显著减小文件体积。有一次我录制 2 小时的编程教程,30 帧的视频要 3GB,改成 15 帧后只有 1.2GB,画质几乎看不出区别。

Linux 用户需要用稍微不同的命令:

ffmpeg -f x11grab -s 1920x1080 -r 30 -i :0.0 output.mp4

这里x11grab是 Linux 的屏幕捕获模块,:0.0表示主显示屏的第一个屏幕。如果外接了多个显示器,可以通过调整这个参数来选择录制哪个屏幕。

录音就更简单了。在 Windows 上录制系统声音:

ffmpeg -f dshow -i audio="Stereo Mix" output.wav

这个命令我经常用来录制在线会议。有次客户需要会议录音,但会议软件自带的录音功能出问题了,我就用这个命令成功录下了整个会议。注意"Stereo Mix"这个名称可能因声卡不同而变化,如果报错可以先用下面这个命令查看设备列表:

ffmpeg -list_devices true -f dshow -i dummy

2. 高级录制技巧:区域选择与画中画

很多教程只教全屏录制,但实际工作中我们经常只需要录制屏幕的某个区域。比如演示软件操作时,可能只想录制软件窗口而不是整个桌面。FFmpeg 在这方面特别灵活,我来分享几个实用技巧。

录制特定窗口的秘诀是使用窗口标题。比如要录制 Chrome 浏览器:

ffmpeg -f gdigrab -framerate 30 -i title="Chrome" output.mp4

但这里有个坑:窗口标题必须完全匹配,包括大小写。我建议先用alt+tab确认窗口的完整标题。如果窗口标题会变化(比如浏览器标签页),这个方法就不太稳定。

更可靠的方法是直接指定坐标和尺寸。比如要录制屏幕左上角 400x400 像素的区域:

ffmpeg -f gdigrab -framerate 30 -offset_x 0 -offset_y 0 -video_size 400x400 -i desktop output.mp4

这个功能在做产品演示时特别有用。有一次我需要录制电商后台的数据看板,但看板只占屏幕的一小部分,用全屏录制会让观众看不清细节。通过精确设置-offset_x-offset_y-video_size参数,我成功只录制了看板区域,生成的视频非常清晰。

画中画效果是教学视频的利器。下面这个命令同时录制屏幕和摄像头,并把摄像头画面叠加在右下角:

ffmpeg -f gdigrab -framerate 30 -i desktop -f dshow -video_size 320x240 -i video="USB Camera" -filter_complex "overlay=W-w-10:H-h-10" output.mp4

参数解析:

  • -video_size 320x240设置摄像头画面大小
  • overlay=W-w-10:H-h-10是画中画的关键,表示距离右边和底部各 10 像素
  • WH表示主视频的宽高,wh是叠加视频的宽高

我在录制编程教程时就用这个方案,主画面显示代码编辑器,右下角显示我的头像,观众既能看清代码又能看到我的表情,互动感很强。

3. 音频混合与质量优化

单独录制屏幕或声音很简单,但要把它们高质量地混合在一起就需要些技巧了。先说最基本的同步录制命令:

ffmpeg -f gdigrab -framerate 30 -i desktop -f dshow -i audio="Stereo Mix" -c:v libx264 -preset fast -c:a aac output.mp4

这里新增的参数很关键:

  • -c:v libx264使用 H.264 编码视频,兼容性好
  • -preset fast在编码速度和质量间取得平衡
  • -c:a aac使用 AAC 编码音频,是 MP4 的标准音频格式

但这样录制有个问题:如果系统声音和麦克风都要录制怎么办?FFmpeg 的解决方案是用amix滤镜:

ffmpeg -f gdigrab -i desktop -f dshow -i audio="麦克风" -f dshow -i audio="Stereo Mix" -filter_complex "[1:a][2:a]amix=inputs=2" -c:v libx264 -preset fast -c:a aac output.mp4

这个命令做了三件事:

  1. 录制屏幕视频
  2. 同时录制麦克风和系统声音
  3. amix把两个音频流混合成一个

我在录制在线课程时就用这个方案,既能捕捉到我的讲解声音,也能录下演示软件的系统声音。不过要注意调整两个音源的音量平衡,否则可能会出现一个声音太大另一个太小的情况。

视频质量优化方面,最重要的参数是-crf(Constant Rate Factor)。这个值范围是 0-51,数值越小质量越高但文件越大。一般推荐:

ffmpeg -f gdigrab -i desktop -c:v libx264 -crf 23 -preset fast output.mp4

-crf 23是公认的甜点值,能在质量和文件大小间取得很好平衡。如果追求更高质量可以用 18,网络分享可以用 28。我做过测试,1080p 视频在-crf 23时,每分钟大约 10-20MB,画质已经非常好了。

4. 实战:远程教学录制方案

结合我制作在线课程的经验,分享一个完整的远程教学录制方案。这个方案需要实现:

  1. 录制讲师屏幕
  2. 叠加讲师摄像头画面
  3. 混合系统声音和麦克风
  4. 添加文字水印
  5. 输出高质量但文件较小的视频

完整命令如下:

ffmpeg -f gdigrab -framerate 30 -offset_x 100 -offset_y 100 -video_size 1280x720 -i desktop -f dshow -i audio="麦克风" -f dshow -i audio="Stereo Mix" -f dshow -video_size 320x180 -i video="Logitech Camera" -filter_complex "[1:a][2:a]amix=inputs=2[audio];[0:v][3:v]overlay=W-w-20:H-h-20[vid];[vid]drawtext=fontfile=arial.ttf:text='Course Demo':fontsize=24:fontcolor=white:x=20:y=20" -c:v libx264 -crf 22 -preset fast -c:a aac -b:a 128k output.mp4

这个命令看起来复杂,其实可以分解为几个部分:

  1. -f gdigrab部分录制屏幕的指定区域
  2. 两个-f dshow分别录制麦克风和系统声音
  3. 另一个-f dshow录制摄像头
  4. -filter_complex做了三件事:
    • amix混合两个音频源
    • overlay实现画中画
    • drawtext添加文字水印
  5. 最后设置视频和音频的编码参数

我在实际使用中会给这个命令创建成批处理文件,每次录制只需双击运行,结束时按q键停止。生成的视频可以直接上传到教学平台,不需要再做后期处理。

有个实用小技巧:如果录制过程中需要暂停,可以按Ctrl+C停止,然后再次运行命令时加上-append参数继续录制。不过要注意两次录制的参数必须完全一致,否则会出现兼容性问题。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/14 13:11:20

扩散模型原理与实战:从噪声生成高质量图像

1. 扩散模型:从噪声到艺术的魔法编织机当一张模糊的噪点图在几秒内蜕变为精致的数字艺术作品,这种看似魔法的转变背后,正是扩散模型在发挥作用。作为当前生成式AI领域最炙手可热的技术之一,扩散模型正在重新定义人类创造视觉内容的…

作者头像 李华
网站建设 2026/7/14 13:10:54

yada部署指南:将你的Clojure应用无缝部署到生产环境

yada部署指南:将你的Clojure应用无缝部署到生产环境 【免费下载链接】yada A powerful Clojure web library, full HTTP, full async - see https://juxt.pro/yada/index.html 项目地址: https://gitcode.com/gh_mirrors/ya/yada yada是一个功能强大的Clojur…

作者头像 李华
网站建设 2026/7/14 13:09:11

IL2CPP游戏翻译失效?XUnity.AutoTranslator插件完整修复指南

1. 项目概述:当游戏翻译插件“罢工”时如果你是一个喜欢玩各种独立游戏或视觉小说的玩家,那么“XUnity.AutoTranslator”这个名字对你来说可能再熟悉不过了。它是一个功能强大的实时文本钩取与翻译插件,能够将游戏内的文本实时翻译成你指定的…

作者头像 李华
网站建设 2026/7/14 13:09:10

SD-PPP Photoshop AI插件终极指南:5分钟实现AI绘图自由

SD-PPP Photoshop AI插件终极指南:5分钟实现AI绘图自由 【免费下载链接】sd-ppp A Photoshop AI plugin 项目地址: https://gitcode.com/gh_mirrors/sd/sd-ppp 还在为Photoshop中的创意瓶颈而烦恼吗?SD-PPP Photoshop AI插件将彻底改变你的设计工…

作者头像 李华