FFmpeg技能使用说明
2026-03-29
新闻来源:网淘吧
围观:13
电脑广告
手机广告
输入定位(主要差异)
-ss在-i之前:快速定位,可能不准确——从最近的关键帧开始-ss在-i之后:帧级精确但速度慢——从起始位置解码- 两者结合:
-ss 00:30:00 -i input.mp4 -ss 00:00:05——先快速定位再精确裁剪 - 进行剪切时,添加
-avoid_negative_ts make_zero以修复时间戳问题
流选择
- 默认:第一个视频流 + 第一个音频流——可能非您所需
- 显式选择:
-map 0:v:0 -map 0:a:1——第一个视频流,第二个音频流 - 某类型的所有流:
-map 0:a——所有音频流 - 复制特定流:
-map 0 -c copy—所有流,无需重新编码 - 排除:
-map 0 -map -0:s—除字幕外的所有流
编码质量
- CRF(恒定码率因子):数值越低 = 质量越好,文件越大—H.264编码通常使用18-23
-preset:从ultrafast到veryslow—速度越慢 = 相同质量下文件越小- 目标码率二次编码:第一遍分析,第二遍编码
-crf和-b:v互斥—只能使用其中一个
容器与编解码器
- 容器(MP4、MKV、WebM):容纳流的封装格式
- 编解码器(H.264、VP9、AAC):流的压缩算法
- 并非所有编解码器都适合所有容器—H.264适用于MP4/MKV,不适用于WebM;VP9适用于WebM/MKV,不适用于MP4
- 将编解码器复制到新容器:
-c copy—快速,无质量损失
滤镜语法
- 简单:
-vf "scale=1280:720"—单一滤镜链 - 复杂:
-filter_complex "[0:v]scale=1280:720[scaled]"—命名输出用于路由 - 链式滤镜:
-vf "scale=1280:720,fps=30"—逗号分隔 - 滤镜顺序很重要—先缩放再裁剪与先裁剪再缩放的结果不同
常用滤镜
- 缩放:
scale=1280:720或scale=-1:720用于自动计算宽度以保持宽高比 - 裁剪:
crop=640:480:100:50—宽度:高度:x:y 从左上角开始 - 帧率:
fps=30—更改帧率 - 修剪:
trim=start=10:end=20,setpts=PTS-STARTPTS—setpts用于重置时间戳 - 叠加:
overlay=10:10—相对于左上角的位置
音频处理
- 采样率:
-ar 48000—视频标准 - 声道:
-ac 2—立体声 - 音频编解码器:
-c:a aac -b:a 192k—192kbps的AAC编码 - 标准化:
-filter:a loudnorm—EBU R128响度标准化 - 提取音频:
-vn -c:a copy output.m4a—无视频,复制音频
拼接
- 相同编解码器/参数:拼接解复用器—
-f concat -safe 0 -i list.txt -c copy - 不同格式:concat 过滤器——
-filter_complex "[0:v][0:a][1:v][1:a]concat=n=2:v=1:a=1" - list.txt 格式:
file 'video1.mp4'每行——转义特殊字符 - 不同分辨率:在 concat 过滤器之前缩放/填充以匹配
字幕
- 烧录(硬编码):
-vf "subtitles=subs.srt"——无法关闭 - 混流为流:
-c:s mov_text(MP4)或-c:s srt(MKV)——用户可切换 - 从输入:
-map 0:s——包含字幕流 - 提取:
-map 0:s:0 subs.srt——第一个字幕到文件
硬件加速
- 解码:
-hwaccel cuda或-hwaccel videotoolbox(macOS) - 编码:
-c:v h264_nvenc(NVIDIA),-c:v h264_videotoolbox(macOS) - 并非总是更快——存在设置开销;在长视频上才能体现出优势
- 质量可能不同——软件编码通常能产生更好的质量
常见错误
- 忘记
-c copy当不需要重新编码时——默认会重新编码,速度慢且有损 -ss放在-i之后处理长视频——会花费很长时间进行搜索定位- 剪辑后音频不同步——使用
-async 1或-af aresample=async=1 - 流复制时应用滤镜——滤镜需要重新编码;
-c copy+-vf= 错误 - 输出扩展名未设置编解码器——
output.mp4未指定-c:v将使用默认值,可能不是H.264
文章底部电脑广告
手机广告位-内容正文底部


微信扫一扫,打赏作者吧~