FFmpeg 命令
FFmpeg 常用命令速查,格式转换/裁剪拼接/音频/字幕/GIF/滤镜,一键复制
共 67 个脚本
MP4 转 MKV(容器转换)
直接更换封装容器而不重新编码(-c copy),速度极快且无损。适用于 H264/AAC 等通用编码在不同容器间转换。
MP4 转 WebM(VP9)
将 MP4 转为浏览器友好的 WebM,使用 VP9 视频编码与 Opus 音频编码,适合网页嵌入。
AVI 转 MP4(H264)
将老旧的 AVI 重新编码为通用 H264/AAC 的 MP4,提升兼容性与压缩率。libx264 是最常用的 H264 编码器。
MOV 转 MP4
将 iPhone/QuickTime 录制的 MOV 转为 MP4。如原编码已是 H264 可直接流复制,否则重新编码。
转码为 H265/HEVC(省空间)
用 H265 压缩,同等画质下体积约为 H264 的一半。CRF 28 视觉质量约等于 H264 的 CRF 23。
设置 H264 画质(CRF)
CRF(恒定质量)是控制 H264 画质的关键参数:18 视觉无损、23 默认、28 较低质量。preset 越慢压缩率越高。
VP9 编码(WebM 高质量)
VP9 用 CRF + -b:v 0 实现恒定质量模式,CRF 范围 0-63。适合开源友好的 WebM 输出。
硬件加速编码(NVENC)
使用 NVIDIA GPU 的 NVENC 硬件编码器(h264_nvenc / hevc_nvenc),显著加快转码速度。需要带 NVIDIA 显卡。
指定目标码率
通过 -b:v 与 -b:a 固定视频/音频码率,适合对体积有严格要求的场景。也可配合两遍编码(2-pass)更精准。
提取音频为 MP3
从视频中提取音频并转为 MP3。-vn 表示不处理视频,-b:a 控制音频码率(320k 为最高音质)。
提取音频为 AAC / WAV
提取无损 WAV(适合剪辑)或 AAC(高压缩比)。WAV 不压缩、体积大但兼容性极好。
视频转音频(去画面)
将视频文件转换为纯音频文件。最简单的用法:不指定音频编码器,由输出扩展名决定格式。
批量转换目录下所有视频
用 shell 循环遍历目录,将所有 .avi 转为 .mp4。注意此处 ${file%.*} 删除扩展名,已转义。
压缩视频体积
综合手段减小文件体积:降低分辨率、提高 CRF、用 H265。适合分享到受限平台。
按时间裁剪片段
从第 90 秒开始截取 30 秒。-ss 为起始时间,-t 为时长。放 -ss 在 -i 前使用快速 seek(更快但可能不准)。
无重新编码裁剪(关键帧对齐)
使用 -c copy 不重新编码,秒级完成且无损。但裁剪点可能落在非关键帧,导致开头几帧黑屏;放 -ss 在 -i 之前并加 -avoid_negative_ts 可缓解。
合并多个视频(concat demuxer)
推荐方式:用 concat demuxer 无损拼接。要求各视频编码、分辨率、帧率一致。先创建 list.txt。
拼接不同规格视频(concat filter)
当各视频分辨率/编码不一致时,用 concat filter 重新编码统一规格后再拼接。
去掉片头片尾
去掉开头 10 秒和结尾 5 秒。先用 ffprobe 获取总时长,再用 -ss 和 -to 截取中间部分。
分割为等长片段
用 -segment 或 -f segment 把长视频切分成多段,常用于 HLS 切片或分段上传。
提取指定音轨
从含多音轨的视频(如双语版)中提取指定音轨。-map 0:a:1 表示第 1 条音轨(从 0 开始计数)。
替换视频的音轨
用新的音频文件替换视频原有声音。视频流 -c:v copy 直接复制,音频从第二个输入取。
调整音量大小
用 -af volume 滤镜调整音量。volume=2.0 表示放大 2 倍,volume=0.5 表示减半;也可用分贝 volume=-5dB。
静音(去除声音)
去掉视频中的音频轨道,只保留画面。-an 表示不录制音频。
混音(合并两个音频)
将背景音乐与人声混合。amix 滤镜默认做平均,可用 weights 调整各输入权重;duration 决定输出长度。
音频降噪
用 afftdn 滤镜基于 FFT 降噪,适合去除恒定背景噪声(如风声、电流声);nr 为降噪强度(0-97)。
音频淡入淡出
用 afade 滤镜实现音频淡入(t=in)和淡出(t=out)。st 为起始秒数,d 为持续时间。
音频响度标准化(EBU R128)
用 loudnorm 按 EBU R128 标准统一响度(目标 -16 LUFS),适合播客、短视频批量统一音量。
改变采样率与声道
调整音频采样率(-ar)与声道数(-ac)。44100Hz/48000Hz 常见;-ac 2 立体声、-ac 1 单声道。
烧录硬字幕(subtitles 滤镜)
用 -vf subtitles 将字幕直接渲染到画面(硬字幕),无法关闭。需重新编码视频。中文字幕建议指定字体。
嵌入软字幕(可切换)
将字幕作为可选轨道嵌入(软字幕),播放时可切换开关。MKV 容器最灵活,MP4 对 ASS 支持有限。
提取字幕文件
从含字幕的视频中提取出独立的字幕文件。-map 0:s:0 选择第 1 条字幕流。
字幕格式转换(SRT ↔ ASS)
在 SRT 与 ASS 之间互转。ASS 转换由输出扩展名驱动。注意 SRT→ASS 会生成默认样式,可后续编辑。
去除字幕轨道
从视频中移除所有字幕轨道。-map 0:v 与 -map 0:a 只保留视频和音频,丢弃字幕。
视频转 GIF(基础)
最简单的视频转 GIF。fps 控制帧率,scale 控制尺寸(-1 表示按比例自适应)。
高质量 GIF(调色板优化)
GIF 最多 256 色,直接转易出现色带。先用 palettegen 生成最优调色板,再用 paletteuse 应用,画质显著提升。
控制 GIF 大小(帧率/尺寸/时长)
通过降低帧率、缩小尺寸、截短时长来控制 GIF 体积。dither 参数控制抖动算法,影响画质与大小。
GIF 循环与播放控制
-loop 0 表示无限循环(默认),-final_delay 设置最后一帧延迟。-dispose 控制帧间清理方式。
GIF 转视频(MP4)
把 GIF 转为 MP4 体积更小、加载更快(适合网页)。注意 GIF 帧率信息需手动指定。
单帧截图
截取指定时间点的画面为一帧图片。-ss 在 -i 前(快速 seek)。输出格式由扩展名决定。
定时批量截图(每 N 秒一张)
用 fps 滤镜按固定间隔截帧。fps=1 表示每秒一张,fps=1/60 表示每 60 秒一张。
生成缩略图网格
用 tile 滤镜将多帧拼成一张网格图,常用于预览整段视频。配合 fps 控制采样密度。
生成视频封面(缩略图)
生成单张封面图。常用方案:取视频中段画面(避开黑屏的片头片尾)。
调整分辨率
用 scale 滤镜缩放视频。固定宽度时高度用 -1(按比例)或 -2(保证偶数,部分编码器要求)。
画面裁剪(crop)
用 crop 滤镜裁剪画面区域。格式 crop=w:h:x:y,w/h 为输出尺寸,x/y 为左上角坐标。
添加图片水印(overlay)
用 overlay 滤镜把 logo 叠加到视频上。坐标支持 W-w-10(距右 10px)等表达式。
添加文字水印(drawtext)
用 drawtext 滤镜绘制文字水印。中文需指定支持中文的 FontName(如 PingFang SC)。
翻转与旋转画面
水平翻转 hflip、垂直翻转 vflip、旋转 transpose(0=顺时针90°,1=逆时针90°,2=180°,3=逆时针270°)。
调整播放速度
视频用 setpts(PTS 倍率,0.5=2倍速),音频用 atempo(0.5-2.0/次,超出需串联)。两倍速需同时处理音视频。
画面并排合并(左右/上下)
hstack 水平并排、vstack 垂直堆叠。要求各视频分辨率(对应方向)一致,否则先用 scale 统一。
视频淡入淡出
用 fade 滤镜实现画面淡入(t=in)与淡出(t=out)。st 为起始秒,d 为持续秒数。
色彩调整(亮度/对比度/饱和度)
eq 滤镜调整亮度 brightness、对比度 contrast、饱和度 saturation、伽马 gamma。范围:亮度 -1~1,其余有不同区间。
锐化与模糊
unsharp 锐化、boxblur/gblur 模糊。unsharp 格式 unsharp=lx:ly:la:cx:cy:ca,a 为 alpha。
Linux 屏幕录制(x11grab)
Linux 用 x11grab 抓取 X11 桌面。:0.0 表示第 0 显示器第 0 屏幕。需在 X11 环境(多数桌面发行版)。
Windows 屏幕录制(gdigrab)
Windows 用 gdigrab 抓取桌面。"desktop" 表示整个桌面,也可指定窗口标题。
macOS 屏幕录制(avfoundation)
macOS 用 avfoundation 抓取屏幕。先用 -list_devices 查看设备编号,再录制对应屏幕。
推流到 RTMP 服务器
把视频推送到 B站/YouTube/Twitch 等直播平台。需替换为你的推流地址和推流码。推荐用 libx264 + aac,兼容性最好。
摄像头录制
录制摄像头画面。macOS 用 avfoundation,Linux 用 video4linux2,Windows 用 dshow。先列出设备再录制。
录制系统/麦克风音频
录制音频输入。macOS 用 avfoundation,Linux 用 ALSA/PulseAudio。常配合录屏使用。
查看媒体基础信息
最简单的信息查看:直接用 ffmpeg -i(不指定输出会报错但会打印信息)或 ffprobe。
查看封装格式与时长
用 ffprobe -show_format 查看容器层面的信息:时长、比特率、标签等。
查看流(编码/分辨率)
用 -show_streams 查看每条流的详细信息:编码器、分辨率、帧率、像素格式等。可按类型筛选。
JSON 格式输出信息
用 -print_format json 输出结构化 JSON,方便脚本解析与批量处理。常用于自动化转码流程。
仅获取时长
提取单个字段(如时长),用于脚本。format=duration 输出秒数,配合 -of csv 精确提取。
仅获取分辨率
提取视频宽高,常用于自动化判断是否需要缩放。
查看编码格式
快速查看视频和音频使用的编码器,判断是否需要转码或是否兼容目标平台。
统计总帧数与帧率
统计总帧数。注意 -count_frames 会实际解码视频,速度较慢但准确;nb_read_frames 为精确值。