• 使用ffmpeg截取视频片段


    本文将介绍2种使用ffmpeg截取视频的方法

    1. 指定截取视频的 开始时间结束时间,进行视频截取
    2. 指定截取视频的 开始时间截取的秒数,进行视频截取

    两种截取方式的命令行如下

    截取某一时间段视频

    优先使用

    ffmpeg -i ./input.mp4 -c:v libx264 -crf 18 -ss 00:00:10 -to 00:00:15 ./cut_out.mp4
    
    • 1

    或下面这种(不推荐使用)

    ffmpeg -i ./input.mp4 -c:v copy -c:a copy -ss 00:00:10 -to 00:00:15 ./cut_out.mp4
    
    • 1

    字段说明

    -i ./input.mp4  指定输入视频路径
    -ss 00:00:10  指定截取视频的开始时间点
    -to 00:00:15  指定截取视频的结束时间点
    ./cut_out.mp4 指定截取视频保存路径与文件名
    -c:v libx264 -crf 18  指定使用H264标准 crf=18模式对原视频中的视频片段进行重新编码,从而得到截取视频
    -c:v copy -c:a copy  不进行重新编码,直接拷贝原视频中的视频片段,保存为截取视频
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    除非对保持原始视频码流有强烈需求,否则不推荐使用-c:v copy 进行视频截取
    原因:ffmpeg在使用-c:v copy对原视频码流进行直接截取时,并不是按照指定时间截取的,而是从指定时间附近的 I I I帧开始截取和终止(可查看右侧文章链接,了解IBP帧的含义: 什么是I帧、P帧和B帧?)。这样就会出现两个问题:

    1. 截取出来的视频片段时间长度与 指定的时间不同
    2. 截取的时间长度相同,但可能在使用部分播放器播放视频时,前几秒一直停顿在相同画面,等待播放了一段时间后,画面才恢复正常

    使用-c:v libx264 的方式截取视频,其实是对指定的原始视频片段进行重新编码。通过指定-crf 18来保证编码视频的画面质量与原视频近似相同。
    这种方式的优点是:截取视频的时间长度与指定时刻完全相同,且视频能正常播放
    缺点是:视频画面与原始视频会存在轻微细小差异(毕竟重新编码了┓( ´∀` )┏)
    如果对原视频画面没有特别强烈的需求,建议采用这种方式进行截取。

    截取特定长度的视频

    优先使用

    ffmpeg -i ./input.mp4 -c:v libx264 -crf 18 -ss 00:00:10 -t 15 ./cut_out.mp4
    
    • 1

    或下面这种(不推荐使用)

    ffmpeg -i ./input.mp4 -c:v copy -c:a copy -ss 00:00:10 -t 15 ./cut_out.mp4
    
    • 1

    字段说明

    -t 15  指定截取视频的秒数
    其它字段与上方描述一致
    
    • 1
    • 2
  • 相关阅读:
    机车外套哈哈我真的是因为
    深度学习常用概念
    【设计模式】Java 设计模式之享元模式(Flyweight)
    【八股总结】至今为止遇到的八股(上半)
    入门 对有序数组进行二分搜索 + 图解 (上篇)
    Springboot集成MyBatis实现查询表操作(二)
    GoLong的学习之路(二十)进阶,语法之反射(reflect包)
    第8章 虚拟现实技术的相关软件
    一种基于灰度映射以及直方图规定化的遥感图像对比度增强技术研究
    UEFI安全启动模式下安装Ubuntu的NVIDIA显卡驱动
  • 原文地址:https://blog.csdn.net/mooneve/article/details/132576731