# 合并一个mp4和一个mp3 # -c copy:视频和音频都不重新编码,直接拷贝 ffmpeg -i input.mp4 -i input.mp3 -c copy -map 0:v:0 -map 1:a:0 output.mp4
# 更省空间/更稳质(CPU 软件编码:libx265 + CRF) ffmpeg -i input.mov \ -c:v libx265 -preset medium -crf 28 -pix_fmt yuv420p \ -c:a aac -b:a 128k \ -movflags +faststart -tag:v hvc1 \ output.mp4 # 更快(Mac 硬件编码:hevc_videotoolbox,恒定质量) ffmpeg -i input.mov \ -c:v hevc_videotoolbox -q:v 65 -pix_fmt yuv420p \ -c:a aac -b:a 128k \ -movflags +faststart -tag:v hvc1 \ output.mp4 # 适合用于重新编码 OpenCV 的输出 # -an:确保无音轨 # -crf:越大越小(常用 18~28;23 是很常用的平衡点) # -preset:越慢越小(medium/slow 都行) ffmpeg -y -i output_tmp.mp4 -an -c:v libx264 -crf 23 -preset medium output.mp4
# 提取第一条字幕(编号为0) ffmpeg -i video.mkv -map 0:s:0 subtitle.srt
# 直接流拷贝(Stream Copy) # 它不经过重新编码,速度极快且质量无损 # -vn: 禁用视频录制(Video None) # -c:a copy: 直接复制音频流,不重新编码 ffmpeg -i input.mp4 -vn -c:a copy output.m4a # -q:a 2: 设置质量级别(VBR)。范围 0-9,2 是高质量(约 190kbps),0 是最高质量 # 如果你想要固定比特率(如 320kbps),可以使用 -b:a 320k ffmpeg -i input.mp4 -vn -q:a 2 output.mp3 # 如果视频里有多个音轨(比如中文、英文、解说),你可以指定提取哪一个 # -map 0:a:1: 提取第二个音轨(索引从 0 开始) ffmpeg -i input.mp4 -map 0:a:1 -vn output.mp3
# 最简单:左上角整段贴图 ffmpeg -i input.mp4 -loop 1 -i image.png \ -filter_complex "overlay=10:10" \ -c:v libx264 -crf 20 -preset faster -c:a copy -shortest output.mp4 # -loop 1:把单张图片当作无限帧源。 # overlay=10:10:图片距左上角各 10 像素。 # -shortest:按最短输入结束(这里会跟随视频长度结束)。 # -c:a copy:音频直拷不重编码。
ffmpeg -i input.mp4 -vf "crop=1720:980:100:100" -c:a copy output.mp4
# 先缩放到覆盖 1920x1080,再居中裁剪(最常用,确保不留黑边) ffmpeg -i input.mp4 -vf "scale=1920:1080:force_original_aspect_ratio=increase,crop=1920:1080" -c:a copy output.mp4 # 等价写法(用 crop 的 x/y 显式居中) ffmpeg -i input.mp4 -vf "scale=1920:1080:force_original_aspect_ratio=increase,crop=1920:1080:(in_w-1920)/2:(in_h-1080)/2" -c:a copy output.mp4
视频串流的文件格式问题
将位于文件末尾的 moov 原子移动到文件开头。这个操作叫 “Qt-faststart”
# -c copy: 直接复制视频流和音频流,不进行重新编码(画质不变,速度极快) ffmpeg -i input_video.mp4 -c copy -movflags +faststart output_video.mp4