当前位置:首页 > 开发 > FFmpeg > 正文内容

FFmpeg 按时间裁剪视频命令详解

FFmpeg2周前 (08-13)

使用 ffmpeg.exe 按时间裁剪视频,主要有两种方法:通过“起始时间+持续时间”,或通过“起始时间+结束时间”

核心命令格式

方法一:按起始时间和持续时间 (-t)

ffmpeg -i input.mp4 -ss [起始时间] -t [持续时间] -c copy output.mp4
  • -ss [起始时间]:从哪里开始剪。

  • -t [持续时间]:要剪多长。

  • 例如:从第1分钟开始,截取30秒。

    ffmpeg -i input.mp4 -ss 00:01:00 -t 00:00:30 -c copy output.mp4

方法二:按起始时间和结束时间 (-to)

ffmpeg -i input.mp4 -ss [起始时间] -to [结束时间] -c copy output.mp4
  • -to [结束时间]:到哪里停止。

  • 例如:截取从1分钟到2分30秒的片段。

    ffmpeg -i input.mp4 -ss 00:01:00 -to 00:02:30 -c copy output.mp4

注意: -t-to 不要同时使用,如果同时使用,-to 可能会被忽略。

时间格式

时间可以用两种方式表示:

  • 秒数:直接写数字,如 -ss 60 表示从第60秒开始。

  • 时:分:秒:格式为 HH:MM:SS,如 -ss 00:01:00

关键参数 -c copy 的取舍

命令中的 -c copy 参数很关键,它决定了裁剪的速度和精度。

特点-c copy (快速模式)不带 -c copy (重新编码模式)
速度极快,几乎瞬间完成较慢,需要重新编码
质量无损,与原视频一致有轻微质量损失
精度不精确,开始时间可能会“吸附”到前一个关键帧精确,可以精确到你指定的那一帧

快速定位技巧: 如果想兼顾速度和精度,可以结合两种用法:先用 -ss 快速跳到目标时间附近(放在 -i 前),再用 -ss 精确定位到准确时间点(放在 -i 后)。

ffmpeg -ss 00:00:58 -i input.mp4 -ss 2 -t 30 -c:v libx264 -c:a aac output.mp4

其他常见裁剪场景

  • 仅保留前N秒:省略 -ss,直接使用 -t

    ffmpeg -i input.mp4 -t 60 -c copy output.mp4
  • 删除开头N秒:只使用 -ss

    ffmpeg -i input.mp4 -ss 10 -c copy output.mp4
  • 删除末尾N秒:需要先知道视频总时长。

    # 如果视频总长5分钟,想删除最后30秒
    ffmpeg -i input.mp4 -t 00:04:30 -c copy output.mp4
  • 裁剪视频末尾30秒:使用 -sseof 参数。

    ffmpeg -sseof -30 -i input.mp4 -c copy output.mp4

💎 总结与建议

  1. 追求速度、对起点精度要求不高:优先使用 -c copy,命令简单且无损。

  2. 要求精确裁剪到某一帧:去掉 -c copy,让 FFmpeg 重新编码。

  3. 注意参数位置:通常将 -ss 放在 -i 之前可以实现快速跳转,但为了精确,可以将其放在 -i 之后。


以上内容覆盖了 FFmpeg 按时间裁剪视频的常见用法,您可以根据实际需求选择最适合的方式。

转载请注明出处。

本文链接:http://pythonopen.com/?id=7961

返回列表

上一篇:FFmpeg 压缩视频时移除音频与加速

没有最新的文章了...

相关文章

FFmpeg获取视频某一帧的图像

方法一:按时间戳获取指定帧图像基本命令格式ffmpeg -i input_vid...

使用FFmpeg混流MP4和MP3

1. 裁剪为最短时长ffmpeg -i input_video.mp4 ...

FFmpeg [mp4 @ 0000013d42a009c0]

[mp4 @ 0000013d42a009c0] Could ...

FFmpeg 合并视频时抛弃音频

在使用FFmpeg合并视频并抛弃音频时,可根据输入文件的编码一致性选择以下两种方法:方法1:conc...

FFmpeg 图片合成视频,并添加音频

使用FFmpeg将图片合成视频并添加音频你可以使用以下 ffmpeg 命令行将图片序列合成视频并添加...

FFmpeg 图片合成视频

FFmpeg图片合成视频命令(15fps)ffmpeg -framerate 1...