zoukankan      html  css  js  c++  java
  • ffmpeg视频精准剪切

    1、导言

    参考 微岩 博客 FFmpeg视频精准剪切

    ffmepg剪切视频,很方便,但是也有很大缺陷:

    • (1) 剪切时间点不精确
    • (2)有时剪切的视频开头有黑屏

    造成这些问题的原因是ffmpeg无法seek到非关键帧上。
    以下本文通过一些参数配置尽可能地减轻以上问题

    2、基本剪切方法

    ffmpeg -i test.mp4 -ss 10 -t 15 -codec copy cut.mp4

    参数分析:

    -i : source
    -ss:start time
    -t :duration
    -c :video,audio codec

    时间格式:

    • x秒
    • HOURS:MM:SS.MICROSECONDS

    可以设置输出视频的编码格式

    -vcodec xxx
    -acodec xxx

    把-ss, -t参数放在-i参数之后,是对输出文件执行的seek操作
    输入文件会逐帧解码,直到-ss设置的时间点为止,这么操作会很慢,虽然时间点是准确的,但是很容易出现黑屏问题。

    3、参数优化

    (1)将-ss, -t 参数放在-i参数之前

    ffmpeg -ss 10 -t 15 -i test.mp4 -codec copy cut.mp4

    对输入文件执行seek操作,会seek到-ss设置的时间点前面的关键帧上。
    时间不精确,但是不会出现黑屏

    (2)accurate_seek
    剪切时间更加精确

    ffmpeg -ss 10 -t 15 -accurate_seek -i test.mp4 -codec copy cut.mp4

    PS:accurate_seek必须放在-i参数之前

    (3)avoid_negative_ts
    如果编码格式采用的copy 最好加上 -avoid_negative_ts 1参数

    ffmpeg -ss 10 -t 15 -accurate_seek -i test.mp4 -codec copy -avoid_negative_ts 1 cut.mp4

    4、最终方案

    D:Program Filesffmpeginffmpeg.exe -y -i D:/VideoRec/222.mp4 -ss 1:51 -to 2:16 -c:a copy -vcodec libx264 -keyint_min 2 -g 1  -y D:VideoRec20210209165300.mp4
    ffmpeg -y -i 源文件 -ss 开始时间点 -to 结束时间点 -c:a copy -vcodec libx264 -keyint_min 2 -g 1  -y 生成的文件 
    

    5、参考文献

    [1] http://trac.ffmpeg.org/wiki/Seeking

  • 相关阅读:
    顺时针打印矩阵
    topK问题
    9. Palindrome Number(回文数)
    Spinner用法详解
    翻转字符串
    清雨的自助餐(斐波那契数列的应用)
    2. Add Two Numbers(链表尾插法)
    assign和weak的区别
    14-最长公共前缀
    12 13-int与罗马数字转换
  • 原文地址:https://www.cnblogs.com/kikyoqiang/p/14395163.html
Copyright © 2011-2022 走看看