FFmpeg入门实战教程:从安装到常用命令30例(含转码/压缩/切片/合并) ​每个做视频的人,迟早要撞上FFmpeg。VLC用它、YouTube用它、OBS用它、所有视频处理软件底层都用了它。但FFmpeg是命令行工具,没界面、参数多、文档晦涩,劝退了不少人。今天就用一篇实战教程,带你从零上手FFmpeg,30个常用命令直接复制粘贴就能用。

FFmpeg是什么 ​FFmpeg是2000年由Fabrice Bellard创建的开源音视频处理套件,今天是 事实上的音视频处理标准。它包含三个核心工具:

ffmpeg:编码、转码、处理音视频ffprobe:查看媒体文件元数据ffplay:简易播放器能做的事几乎涵盖所有音视频场景:格式转换、视频压缩、HLS切片、视频合并、提取音频、添加字幕、视频截图、滤镜处理、流媒体推拉流、录屏、视频转GIF……

无数软件基于FFmpeg构建:VLC、OBS、HandBrake、Premiere底层调用FFmpeg、Chrome的媒体解码、YouTube的服务器转码、本站的所有视频工具——全都是FFmpeg。

FFmpeg的安装 ​Windows ​访问 ffmpeg.org/download.html下载Windows builds(推荐gyan.dev版本)解压到 C:\ffmpeg把 C:\ffmpeg\bin 加入PATH环境变量打开新的命令行窗口,运行 ffmpeg -versionmacOS ​bash# 推荐用Homebrew安装

brew install ffmpeg

# 验证

ffmpeg -versionLinux ​bash# Ubuntu / Debian

sudo apt update && sudo apt install ffmpeg

# CentOS / RHEL(需要先装EPEL和RPM Fusion)

sudo yum install ffmpeg

# 验证

ffmpeg -version检查编码器支持 ​bash# 查看所有可用编码器

ffmpeg -encoders

# 检查是否支持H.264

ffmpeg -encoders | grep 264

# 检查是否支持H.265

ffmpeg -encoders | grep 265如果默认安装的FFmpeg缺少某些编码器(如libfdk_aac),需要自己编译或换发行版。

核心概念:容器、编码、流 ​学FFmpeg必须先搞清楚三个概念:

容器(Container):装数据的"箱子",决定文件扩展名。MP4、MKV、WebM、AVI、TS、MOV都是容器。流(Stream):箱子里装的内容。一个视频文件通常包含视频流、音频流、字幕流。编码(Codec):流的压缩方式。H.264、H.265、VP9是视频编码;AAC、MP3、Opus是音频编码。关键点: 容器决定兼容性(什么播放器能打开),编码决定解码能力(播放器能不能解码)。同一个MP4容器可以装H.264也可以装H.265,浏览器能不能播取决于编码而非容器。

如果你想深入了解编码差异,可以看本站 H.264 vs H.265 vs AV1视频编码对比。

FFmpeg命令结构 ​所有FFmpeg命令都遵循这个结构:

bashffmpeg [全局选项] [输入选项] -i 输入文件 [输出选项] 输出文件位置很重要:

全局选项在最前面输入选项在 -i 之前输出选项在输入文件之后、输出文件之前例:

bashffmpeg -y -ss 00:00:10 -i input.mp4 -t 5 -c:v libx264 -crf 23 output.mp4

# ↑ ↑______________↑ ↑________________________↑

# 全局 输入选项 输出选项-y:全局,覆盖输出文件-ss 00:00:10:输入选项,从第10秒开始读-i input.mp4:输入文件-t 5:输出选项,只输出5秒-c:v libx264 -crf 23:输出选项,H.264编码CRF 23output.mp4:输出文件30个常用命令实战 ​一、格式转换(10例) ​bash# 1. MP4转WebM

ffmpeg -i input.mp4 -c:v libvpx-vp9 -c:a libopus output.webm

# 2. WebM转MP4

ffmpeg -i input.webm -c:v libx264 -crf 23 -c:a aac output.mp4

# 3. MKV转MP4(流复制,无损且快)

ffmpeg -i input.mkv -c copy output.mp4

# 4. MOV转MP4

ffmpeg -i input.mov -c:v libx264 -crf 23 -c:a aac output.mp4

# 5. AVI转MP4

ffmpeg -i input.avi -c:v libx264 -crf 23 -c:a aac output.mp4

# 6. MP4转GIF(基础版,画质差)

ffmpeg -i input.mp4 output.gif

# 7. MP4转GIF(高质量两阶段)

ffmpeg -i input.mp4 -vf "fps=15,scale=540:-1:flags=lanczos,palettegen" palette.png

ffmpeg -i input.mp4 -i palette.png -filter_complex "fps=15,scale=540:-1:flags=lanczos[x];[x][1:v]paletteuse" output.gif

# 8. 提取音频为MP3

ffmpeg -i input.mp4 -vn -c:a libmp3lame -b:a 192k output.mp3

# 9. 提取音频为AAC

ffmpeg -i input.mp4 -vn -c:a aac -b:a 192k output.m4a

# 10. 音频格式互转(FLAC转MP3)

ffmpeg -i input.flac -c:a libmp3lame -b:a 320k output.mp3更多格式转换场景可以看本站 WebM转MP4指南 和 音频格式转换指南。

二、视频压缩(5例) ​bash# 11. 基础压缩(CRF 23)

ffmpeg -i input.mp4 -c:v libx264 -crf 23 -c:a aac output.mp4

# 12. 高压缩(CRF 28,体积减60%)

ffmpeg -i input.mp4 -c:v libx264 -crf 28 -preset slow -c:a aac -b:a 96k output.mp4

# 13. H.265编码(同画质体积减半)

ffmpeg -i input.mp4 -c:v libx265 -crf 28 -c:a aac output.mp4

# 14. 限制最大码率(流媒体场景)

ffmpeg -i input.mp4 -c:v libx264 -crf 23 -maxrate 2M -bufsize 4M -c:a aac output.mp4

# 15. 微信小视频(720p + 2Mbps)

ffmpeg -i input.mp4 -c:v libx264 -crf 28 -maxrate 2M -bufsize 4M -s 1280x720 -r 30 -c:a aac -b:a 96k output.mp4详细压缩原理可以看本站 视频压缩完整指南。

三、HLS切片(3例) ​bash# 16. 基础HLS切片

ffmpeg -i input.mp4 -codec copy -hls_time 6 -hls_playlist_type vod -hls_segment_filename "seg_%03d.ts" playlist.m3u8

# 17. 重新编码切片

ffmpeg -i input.mp4 -c:v libx264 -crf 23 -c:a aac -hls_time 6 -hls_playlist_type vod -hls_segment_filename "seg_%03d.ts" playlist.m3u8

# 18. 直播切片(保持最近6个分片)

ffmpeg -re -i input.mp4 -codec copy -hls_time 4 -hls_list_size 6 -hls_flags delete_segments -hls_segment_filename "live_%03d.ts" live.m3u8HLS切片详细教程见本站 MP4转M3U8教程。

四、视频合并(3例) ​bash# 19. TS合并(无损流复制)

ffmpeg -f concat -safe 0 -i filelist.txt -c copy output.mp4

# 20. 不同格式视频合并(需重新编码)

ffmpeg -f concat -safe 0 -i filelist.txt -c:v libx264 -crf 23 -c:a aac output.mp4

# 21. 拼接两个MP4(简单方式,仅限同编码同参数)

ffmpeg -i "concat:input1.mp4|input2.mp4" -c copy output.mp4TS合并详细教程见本站 TS文件合并教程。

五、剪辑与截图(4例) ​bash# 22. 截取视频片段(从1分钟开始截取30秒)

ffmpeg -ss 00:01:00 -t 00:00:30 -i input.mp4 -c copy output.mp4

# 23. 截取视频片段(更精确,重新编码)

ffmpeg -ss 00:01:00 -i input.mp4 -t 00:00:30 -c:v libx264 -crf 23 -c:a aac output.mp4

# 24. 截取单帧为图片(第5秒)

ffmpeg -ss 00:00:05 -i input.mp4 -frames:v 1 output.png

# 25. 每秒截一张图

ffmpeg -i input.mp4 -vf fps=1 frame_%04d.png六、滤镜与字幕(3例) ​bash# 26. 缩放视频到720p

ffmpeg -i input.mp4 -vf "scale=1280:720" -c:v libx264 -crf 23 -c:a aac output.mp4

# 27. 加水印(图片放右上角)

ffmpeg -i input.mp4 -i watermark.png -filter_complex "overlay=W-w-10:10" -c:a copy output.mp4

# 28. 烧录字幕

ffmpeg -i input.mp4 -vf "subtitles=subs.srt" -c:v libx264 -crf 23 -c:a aac output.mp4七、推流与录屏(2例) ​bash# 29. RTMP推流到B站/斗鱼

ffmpeg -re -i input.mp4 -c copy -f flv "rtmp://live-push.example.com/live/streamkey"

# 30. Linux录屏(x11grab)

ffmpeg -f x11grab -framerate 30 -video_size 1920x1080 -i :0.0 -c:v libx264 -crf 23 output.mp4推流详细教程可以看本站 直播推流完整指南。

常用参数速查 ​视频参数 ​参数含义常用值-c:v视频编码器libx264、libx265、libvpx-vp9-crf质量(H.264/H.265)18(视觉无损)、23(平衡)、28(高压缩)-preset编码速度ultrafast → veryslow,越慢压缩率越高-b:v视频码率2M、5M等-maxrate最大码率配合 -bufsize 使用-s分辨率1280x720、1920x1080-r帧率24、30、60-vf视频滤镜scale=...、fps=...、transpose=...音频参数 ​参数含义常用值-c:a音频编码器aac、libmp3lame、libopus、copy-b:a音频码率128k、192k、320k-ar采样率44100、48000-ac声道数1(mono)、2(stereo)时间参数 ​参数含义示例-ss开始时间00:01:30 或 90-t持续时长00:00:30 或 30-to结束时间00:02:00其他常用 ​参数含义-i输入文件-c copy流复制,不重新编码(无损且快)-vn丢弃视频-an丢弃音频-y覆盖输出文件不询问-n不覆盖已存在文件-metadata添加元数据常见问题速查 ​问题原因解决Unknown encoder 'libx264'编译时没启用重装完整版FFmpeg转换后无声音音频编码不兼容加 -c:a aac文件巨大CRF太低或preset太快CRF调到23+,preset用medium或slow转换很慢preset太慢或用了AV1preset改medium或fast报错"Non-monotonous DTS"时间戳错误加 -fflags +genpts跨域播放失败MP4的moov atom在末尾加 -movflags +faststart截取后开头黑屏-ss在-i后不准确把-ss移到-i前面FFmpeg.wasm:浏览器里的FFmpeg ​本站所有视频工具都基于 FFmpeg.wasm——把FFmpeg的C代码编译成WebAssembly,让浏览器直接执行。优势:

无需安装,打开网页就能用文件不上传服务器,隐私零风险性能接近原生(慢30%-50%)缺点是受浏览器内存限制,超大文件(>2GB)容易崩,复杂滤镜性能不如原生。日常使用完全够用,专业生产建议装原生FFmpeg。

总结 ​FFmpeg是音视频处理的瑞士军刀,命令行没界面但参数固定、可批量、可自动化。记住命令结构 ffmpeg [输入选项] -i 输入 [输出选项] 输出,30个常用命令覆盖80%场景。

不想装软件就用本站的浏览器工具(底层也是FFmpeg),专业场景装原生FFmpeg更稳。

快速回顾:

命令结构:ffmpeg [输入选项] -i 输入 [输出选项] 输出万能转码:ffmpeg -i input.mp4 -c:v libx264 -crf 23 -c:a aac output.mp4流复制无损:-c copy 不重新编码查看元数据:ffprobe input.mp4浏览器版:本站所有视频工具底层都是FFmpeg.wasm参考资料 ​FFmpeg 官方文档FFmpeg WikiFFmpeg 编码器列表FFmpeg.wasm GitHub

Copyright © 2088 VR世界杯_世界杯举办 - weiqer.com All Rights Reserved.
友情链接