FFmpeg 的常用命令

FFmpeg 的常用命令

裁剪视频

裁剪视频中的片段:

1
2
3
4
ffmpeg -ss [start] -i input.mp4 -t [duration] -c copy output.mp4
ffmpeg -ss [start] -i input.mp4 -to [end] -c copy -copyts output.mp4
ffmpeg -i input.mp4 -ss [start] -t [duration] output.mp4
ffmpeg -i input.mp4 -ss [start] -to [end] output.mp4

说明:

  1. 当 -ss 在 -i 之前时,-to 选项相当于 -t 选项,可以使用 -copyts 来保证 -to 原有的效果
  2. 当 -ss 在 -i 之前时,会在输入文件中进行定位,此时 -avoid_negative_ts 会生效,即会将视频时间扩展到关键帧,但是裁剪的时间不准确
  3. 当 -ss 在 -i 之后时,-avoid_negative_ts 不生效,可以实现精确裁剪,但是可能会产生部分空白视频,建议启用编码器

字幕

提取字幕:

1
ffmpeg -i input.mkv -map 0:s:0 sub.srt

关键帧

查看视频中关键帧信息:

1
2
3
4
# 查看关键帧的所有信息
ffprobe -loglevel error -skip_frame nokey -select_streams v:0 -show_frames input.mp4
# 查看关键帧的时间戳
ffprobe -loglevel error -skip_frame nokey -select_streams v:0 -show_entries frame=pkt_pts_time -of csv=print_section=0 input.mp4