当前位置: 首页 > news >正文

FFmpeg 入门:命令行的 20 个常用场景

FFmpeg 入门:命令行的 20 个常用场景

做音视频开发绕不开的工具就是 FFmpeg。不管你是做 IPC 摄像头、直播、视频剪辑还是售货柜视觉识别,FFmpeg 都是工具箱里的瑞士军刀。这篇从安装到常用命令,一次性把最常用的 20 个场景讲清楚,新手看完就能上手干活。

大家好,我是黒漂技术佬。

之前写 IPC 摄像头、RTSP 拉流、流媒体服务的时候,很多人问我:视频帧怎么抽出来给 YOLO 识别?RTSP 流怎么存成文件?摄像头录像怎么转成 MP4?这些问题的答案,基本都指向同一个工具——FFmpeg

这是「FFmpeg 音视频处理实战」系列第一篇,先从最基础的命令行讲起,20 个场景覆盖 80% 的日常需求。


一、FFmpeg 是什么?

简单说,FFmpeg 是一套音视频处理的开源工具集,包含:

  • ffmpeg:命令行工具,用来转码、剪辑、推流
  • ffplay:简易播放器,用来快速播放音视频
  • ffprobe:媒体信息分析工具,查看视频编码、分辨率、码率等
  • 开发库:libavcodec、libavformat、libavfilter 等,供程序调用(后面 SDK 开发篇会讲)

为什么叫 FFmpeg?Fast Forward Moving Picture Experts Group——翻译过来就是「快进的运动图像专家组」。诞生于 2000 年,至今 20 多年,是音视频领域的事实标准。

💡 一句话:只要和音视频沾边的事,FFmpeg 基本都能干。


二、安装

Windows

去官网下载编译好的版本:ffmpeg.org/download.html

或者更简单,用 winget:

winget install ffmpeg

安装完验证:

ffmpeg-version

Linux (Ubuntu/Debian)

sudoaptupdatesudoaptinstallffmpeg

macOS

brewinstallffmpeg

⚠️踩坑提醒:很多系统自带的 FFmpeg 版本很老,编码器不全(比如没有 libx264)。建议从官网下载完整版,或者自己编译带全功能的版本。后面讲硬件加速的时候会详细说。


三、命令基本格式

FFmpeg 命令长这样:

ffmpeg[输入参数]-i输入文件[输出参数]输出文件

核心逻辑:左边输入,右边输出,中间是滤镜和编码参数

举个最简单的例子——把 MP4 转成 AVI:

ffmpeg-iinput.mp4 output.avi

就这么一行。FFmpeg 会自动根据文件后缀选择编码器,非常智能。


四、20 个常用场景

我按用途分成 6 类,日常工作 80% 的需求都在里面。

第一类:查看信息

1. 查看媒体文件信息
ffprobe input.mp4

或者更简洁的 JSON 格式:

ffprobe-vquiet-print_formatjson-show_format-show_streamsinput.mp4

能看到:时长、分辨率、编码格式、码率、帧率、音频采样率、声道数……所有元数据。

做 IPC 摄像头开发的时候,我经常用 ffprobe 先看 RTSP 流的编码参数,确认是 H.264 还是 H.265、分辨率多少,省得后面踩坑。


第二类:格式转换

2. MP4 转 AVI / MKV / MOV
ffmpeg-iinput.mp4 output.avi ffmpeg-iinput.mp4 output.mkv ffmpeg-iinput.mp4 output.mov

改后缀就行,FFmpeg 自动选封装格式。

3. 视频转 GIF
ffmpeg-iinput.mp4 output.gif

但默认生成的 GIF 质量很差,推荐加参数:

ffmpeg-iinput.mp4-vf"fps=10,scale=480:-1"-loop0output.gif
  • fps=10:每秒 10 帧
  • scale=480:-1:宽度 480,高度等比例缩放
  • -loop 0:无限循环
4. 提取音频(MP4 转 MP3)
ffmpeg-iinput.mp4-vn-acodeclibmp3lame-q:a2output.mp3
  • -vn:video no,去掉视频流
  • -q:a 2:MP3 质量,0 最好,9 最差,2 是性价比最高的
5. 音频格式互转(WAV、AAC、FLAC)
ffmpeg-iinput.wav output.aac ffmpeg-iinput.mp3 output.flac

第三类:视频处理

6. 压缩视频(减小文件体积)
ffmpeg-iinput.mp4-vcodeclibx264-crf28output.mp4
  • -crf 28:Constant Rate Factor,质量恒定模式。数值越大体积越小、质量越差。常用范围 18-28,23 是默认值。
  • 一般我压短视频发微信,用 crf 28,体积能减一半,肉眼基本看不出差别。
7. 修改分辨率
ffmpeg-iinput.mp4-vfscale=1280:720 output.mp4

等比例缩放,高度自动算:

ffmpeg-iinput.mp4-vfscale=1280:-1 output.mp4
8. 裁剪视频画面
ffmpeg-iinput.mp4-vf"crop=宽:高:起始x:起始y"output.mp4

比如从 1920×1080 的视频里裁出中间 1080×1080 的正方形:

ffmpeg-iinput.mp4-vf"crop=1080:1080:420:0"output.mp4

售货柜项目里,摄像头拍的是整个柜子,但我只关心货架那一块,就用 crop 裁掉多余区域,YOLO 识别速度能快不少。

9. 旋转视频
# 顺时针 90 度ffmpeg-iinput.mp4-vf"transpose=1"output.mp4# 逆时针 90 度ffmpeg-iinput.mp4-vf"transpose=2"output.mp4# 旋转 180 度ffmpeg-iinput.mp4-vf"transpose=2,transpose=2"output.mp4
10. 加水印

文字水印:

ffmpeg-iinput.mp4-vf"drawtext=text='黒漂技术佬':x=10:y=10:fontsize=24:fontcolor=white"output.mp4

图片水印:

ffmpeg-iinput.mp4-ilogo.png-filter_complex"overlay=10:10"output.mp4

右下角水印:

ffmpeg-iinput.mp4-ilogo.png-filter_complex"overlay=W-w-10:H-h-10"output.mp4

WH是视频宽高,wh是水印图片宽高。


第四类:音频处理

11. 提取单声道 / 调整声道
# 立体声转单声道ffmpeg-iinput.mp3-ac1output_mono.mp3# 单声道转立体声ffmpeg-iinput_mono.mp3-ac2output_stereo.mp3
12. 调整音量
# 音量加倍ffmpeg-iinput.mp3-af"volume=2"output.mp3# 音量减半ffmpeg-iinput.mp3-af"volume=0.5"output.mp3
13. 音频降噪
ffmpeg-iinput.mp3-af"afftdn=nf=-20"output.mp3

afftdn是音频频域降噪滤波器,nf=-20是降噪强度,数值越小降噪越强。


第五类:截取与拼接

14. 截取片段(剪视频)

从第 30 秒开始,剪 10 秒钟:

ffmpeg-iinput.mp4-ss00:00:30-t10output.mp4
  • -ss:开始时间,格式可以是秒数时:分:秒
  • -t:持续时长(秒)

或者用-to指定结束时间:

ffmpeg-iinput.mp4-ss00:00:30-to00:00:40 output.mp4

⚠️踩坑提醒-ss放在-i前面是输入级 seek(快但不准),放在-i后面是输出级 seek(准但慢)。追求精确剪辑放后面,追求速度放前面。

15. 拼接多个视频

先建一个文件列表filelist.txt

file '001.mp4' file '002.mp4' file '003.mp4'

然后:

ffmpeg-fconcat-ifilelist.txt-ccopy output.mp4

-c copy是直接复制流,不重新编码,速度极快。前提是所有视频的编码参数必须一致。


第六类:抽帧与截图

16. 截一张图(指定时间点)

第 10 秒截一张:

ffmpeg-iinput.mp4-ss10-vframes1screenshot.jpg
17. 按间隔抽帧(每秒一张)
ffmpeg-iinput.mp4-vffps=1frames/%04d.jpg
  • fps=1:每秒 1 帧
  • %04d.jpg:输出文件名,4 位数字序号(0001.jpg、0002.jpg……)

每 10 秒抽一张:

ffmpeg-iinput.mp4-vffps=1/10 frames/%04d.jpg

这个命令我在做售货柜 YOLO 数据集的时候天天用——从 IPC 录像里抽几千张图出来标注,比手动截图效率高十倍。

18. 生成缩略图(每隔一段时间一张拼图)
ffmpeg-iinput.mp4-vf"fps=1/30,scale=320:-1,tile=4x5"thumbnail.jpg

每 30 秒抽一张,缩到宽 320,拼成 4×5 的网格图,一张图预览整个视频。


第七类:直播推流拉流

19. RTSP 流转 RTMP 推流
ffmpeg-irtsp://摄像头地址-ccopy-fflv rtmp://推流地址/live/流名

IPC 摄像头是 RTSP,直播平台要 RTMP,用 FFmpeg 一转就通了。

20. RTSP 流存成文件(边录边存)
ffmpeg-irtsp://摄像头地址-ccopy-segment_time3600-fsegment output_%03d.mp4
  • -segment_time 3600:每 3600 秒(1 小时)切一个文件
  • 自动分片,适合摄像头 24 小时录像

五、常用参数速查表

参数作用
-i指定输入文件
-c copy直接复制流,不重新编码(速度快)
-vcodec libx264视频用 H.264 编码
-acodec aac音频用 AAC 编码
-crf 23H.264 质量参数(18-28 常用)
-b:v 2M视频码率 2Mbps
-b:a 128k音频码率 128kbps
-vf视频滤镜(缩放、裁剪、水印等)
-af音频滤镜(音量、降噪等)
-ss开始时间
-t持续时长
-r 30帧率 30fps
-s 1920x1080分辨率
-vn去掉视频流
-an去掉音频流
-y覆盖输出文件不询问

六、新手最容易踩的三个坑

坑 1:参数顺序很重要

FFmpeg 的参数是位置敏感的——放在-i前面的是输入参数,放在输出文件名前面的是输出参数。

# 正确:-ss 放在 -i 前面,输入级快速 seekffmpeg-ss10-iinput.mp4-t5output.mp4# 也对:-ss 放在后面,输出级精确 seekffmpeg-iinput.mp4-ss10-t5output.mp4

但滤镜参数必须放在对应输出的前面,乱放会报错。

坑 2:编码 vs 复制流

-c copy速度极快,但前提是你不需要改视频内容。一旦加了滤镜(缩放、裁剪、水印),就必须重新编码,不能用 copy。

坑 3:默认编码器可能不全

很多精简版 FFmpeg 没有 libx264、libfdk_aac 这些编码器,转出来的视频质量差或者直接报错。遇到「Unknown encoder ‘libx264’」,去下个完整版或者自己编译。


七、本篇小结

  • FFmpeg 是音视频领域的瑞士军刀,命令行就能搞定 80% 的日常需求
  • 基本格式:ffmpeg -i 输入 [参数] 输出
  • 最常用的就那十几个参数:-c copy-crf-vf-ss-t
  • 抽帧、转码、推流、裁剪——这些场景命令行直接搞定,不用写代码

下一篇讲视频转码详解:封装格式、编码器、码率控制、CRF 和 CBR 到底选哪个——把视频压缩这件事彻底讲明白。

我是黒漂技术佬,下篇见。

http://www.cnnetsun.cn/news/3211077.html

相关文章:

  • OpenCV 相机标定与3D可视化:8张棋盘格图像标定,内参误差低于0.5像素
  • 内存化在对账系统中的应用实践
  • YOLO实战第四篇:训练曲线全方位解读教程(看懂收敛、过拟合、精度好坏,告别盲目训练)
  • 数据分析师常用的数据分析方法有哪些?
  • 耶鲁大学与谷歌联手:让AI学会“自知之明“,不再自信地胡说八道
  • 破局 PCIe 4.0 交换瓶颈@ACP#IX8024 / ASM58024参数及应用对比
  • 深度解析 GitHub Copilot Modernization:老旧项目的“返老还童”术与换模避坑指南
  • 2026江苏GEO优化公司厂家分析:B2B行业经验评价维度——拒绝广告干扰
  • 揭秘Anime4K:实时动漫超分技术的革命性突破与深度解析
  • DVWA 靶场 10 大漏洞实战:从 Low 到 High 的 3 种安全级别攻防解析
  • Stable Diffusion 3 与 Midjourney V6 对比评测:5大商业场景出图质量与成本分析
  • QRazyBox终极指南:5分钟学会修复损坏二维码的免费神器
  • SM2258XT 开卡工具 Q1225A 版实战:3步定位闪存ID与B17A制程匹配
  • 腾讯混元3D+ComfyUI:单图生成高质量3D模型的低显存实战指南
  • QrazyBox:二维码修复终极指南 - 从损坏到解码的完整解决方案
  • Windows HEIC缩略图预览:3步解决iPhone照片在Windows中的显示难题
  • RPG Maker游戏解密工具三步操作指南:轻松提取加密资源
  • Seedance2.5本地AI生图视频部署:硬件要求与稳定性测试指南
  • 计算机网络·形考3综合自测精讲:传输层与应用层协议、网络安全与病毒、网络管理及Internet接入技术(含选择题与判断题答案与解析)
  • OpenCV 4.8.0 BGR 历史溯源:从硬件兼容到现代库的 3 种应对策略
  • 农田精细化管理必备:农田气象要素观测仪,一站式掌握田间环境数据
  • 可见光与红外相机标定:4 种单应性矩阵计算方案对比与精度分析
  • RISC-V架构探索:自定义指令扩展与硬件/软件协同设计——CSR、扩展指令集
  • PROPKA 3深度解析:蛋白质pKa预测的实战指南与算法原理
  • Chrome DevTools Elements 面板 3 大高级调试技巧:DOM断点、事件监听与样式覆盖
  • 3分钟快速转换B站缓存视频:m4s-converter完整使用指南
  • Linux 磁盘分区与文件系统排查:5 个命令定位未挂载分区与未知文件系统
  • BAT 脚本静默运行排错:mshta 方案失败与 VBS 脚本 0 参数详解
  • 三步轻松下载B站会员专属视频:构建个人离线视频库的完整指南
  • Linux Shell 脚本 7 大高频操作实战:从文件处理到用户管理,覆盖 90% 期末考点