用FFmpeg剪视频
✂️ 视频剪辑创作要点
剪视频是视频创作中最基础也是最关键的环节,需要注意以下要点:
- 时间点选择:精准选择片段的起始和结束时间至关重要。抓住视频中的关键情节(如精彩进球、搞笑瞬间、情感高潮),避免拖沓的无信息片段。建议先粗剪再精剪,逐步缩小范围。
- 音量一致性:不同片段的原始音量可能差异很大。剪辑时要确保各片段的响度平稳,避免观众在观看时频繁调节音量。可使用
loudnorm或volume滤镜统一音量。 - 转场效果:片段之间的过渡方式直接影响观看体验。硬切(直接跳转)节奏感强但容易突兀,交叉淡化(xfade)柔和自然,淡入淡出适合段落切换。选择合适的转场效果能让视频更加流畅专业。
- 剪辑节奏:根据内容类型调整剪辑密度。快节奏(如游戏精彩集锦)可用短片段高频切换;慢节奏(如教程、Vlog)应保留完整信息,减少跳跃感。节奏控制是对观众注意力的管理艺术。
📖 FFmpeg视频裁剪参数详解
FFmpeg裁剪视频主要依赖三个时间参数:
-ss(start time):指定起始时间,即从视频的哪一秒开始裁剪。时间格式为HH:MM:SS.mmm(时:分:秒.毫秒),例如00:59:59.500表示从59分59秒500毫秒处开始。-t(duration):指定裁剪时长,即从起始点开始向后截取多长时间。例如-t 10表示截取10秒长的片段。-to(end time):指定结束时间,即裁剪到哪个时间点为止。例如-to 01:00:00表示截取到1小时整。注意-t和-to互斥,同时使用时后指定的生效。
🎯 -ss 的位置决定跳转方式:
-ss放在-i之前(推荐):实现精确跳转(precise seek)。FFmpeg 先根据时间戳快速定位到关键帧(I帧)附近,再通过解码找到精确的起始帧。这种方式速度快、定位准。-ss放在-i之后:实现解码跳转(decoding seek)。FFmpeg 从视频开头解码,一直解到指定时间点才输出。这种方式速度慢(需要从头解码),但起始帧最精确,适合需要完全精确到某一帧的场景。
⚡ -c copy 流复制: 使用 -c copy 参数时,FFmpeg 不对视频和音频进行重新编码,而是直接将原始数据包从输入复制到输出。这意味着裁剪速度极快(几乎实时完成),且画质无损。但由于不重新编码,裁剪点只能落在关键帧(I帧)上,可能导致起始时间有几帧的偏差。如果需要帧精确裁剪,应去掉 -c copy 让 FFmpeg 重新编码。
⏱ 时间格式: FFmpeg 支持多种时间格式,最常用的是 HH:MM:SS.mmm(小时:分钟:秒.毫秒)。也支持纯秒数,例如 -ss 3599.5 等价于 -ss 00:59:59.500。
广告
{{v.name}}
指定开始时间(00:59:59)和视频时长(1s),剪视频,代码如下
$ ffmpeg -ss 00:59:59 -i input.mp4 -c copy -t 1 output.mp4
指定开始时间(00:00:00)和结束时间(00:59:59),剪视频,代码如下
某些视频网站会限制上传视频的时长。如果网站限制视频时长为1小时,那么用此命令非常方便。此命令不需要重新编码,速度极快。
$ ffmpeg -ss 00:00:00 -to 00:59:59 -i input.mp4 -c copy output.mp4