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

    1. 导言
    ffmepg剪切视频,很方便,但是也有很大缺陷: 
    (1)剪切时间点不精确 
    (2)有时剪切的视频开头有黑屏
    造成这些问题的原因是ffmpeg无法seek到非关键帧上。 
    一下本文通过一些参数配置尽可能地减轻以上问题
    2. 基本剪切方法
    ffmpeg -i test.mp4 -ss 10 -t 15 -codec copy cut.mp4
    1
    参数分析:
    -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
    1
    对输入文件执行seek操作,会seek到-ss设置的时间点前面的关键帧上。 
    时间不精确,但是不会出现黑屏
    (2)accurate_seek 
    剪切时间更加精确
    ffmpeg -ss 10 -t 15 -accurate_seek -i test.mp4 -codec copy cut.mp4
    1
    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
    1
    4. 参考文献
    [1] http://trac.ffmpeg.org/wiki/Seeking
    --------------------- 
    作者:微岩 
    来源:CSDN 
    原文:https://blog.csdn.net/matrix_laboratory/article/details/53157383 
    版权声明:本文为博主原创文章,转载请附上博文链接!
  • 相关阅读:
    找出占用磁盘空间最大的前10个文件或文件夹
    把inline函数的定义放在头文件中
    判断是大端字节序还是小端字节序
    在source insight 中添加系统字体
    C++ inline 函数
    标准I/O函数库的三类缓冲
    内存分配失败错误处理
    P1765 手机
    P1321 单词覆盖还原
    P1308 [NOIP2011 普及组] 统计单词数
  • 原文地址:https://www.cnblogs.com/hmms/p/10614082.html
Copyright © 2011-2022 走看看