使用ffmpeg截取视频片段

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

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

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

截取某一时间段视频

优先使用

shell 复制代码
ffmpeg -i ./input.mp4 -c:v libx264 -crf 18 -ss 00:00:10 -to 00:00:15 ./cut_out.mp4

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

shell 复制代码
ffmpeg -i ./input.mp4 -c:v copy -c:a copy -ss 00:00:10 -to 00:00:15 ./cut_out.mp4

字段说明

复制代码
-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  不进行重新编码,直接拷贝原视频中的视频片段,保存为截取视频

除非对保持原始视频码流有强烈需求,否则不推荐使用-c:v copy 进行视频截取

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

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

使用-c:v libx264 的方式截取视频,其实是对指定的原始视频片段进行重新编码。通过指定-crf 18来保证编码视频的画面质量与原视频近似相同。

这种方式的优点是:截取视频的时间长度与指定时刻完全相同,且视频能正常播放

缺点是:视频画面与原始视频会存在轻微细小差异(毕竟重新编码了┓( ´∀` )┏)

如果对原视频画面没有特别强烈的需求,建议采用这种方式进行截取。

截取特定长度的视频

优先使用

shell 复制代码
ffmpeg -i ./input.mp4 -c:v libx264 -crf 18 -ss 00:00:10 -t 15 ./cut_out.mp4

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

shell 复制代码
ffmpeg -i ./input.mp4 -c:v copy -c:a copy -ss 00:00:10 -t 15 ./cut_out.mp4

str = "5134f58d-bde8-455b-bd5d-34bfbc99c349"

字段说明

复制代码
-t 15  指定截取视频的秒数
其它字段与上方描述一致
相关推荐
AF_INET63 小时前
RV1126B开发板学习篇(二)v4l2+mpp编码
c语言·经验分享·音视频·视频编解码·嵌入式软件·rv1126b
reembarkation5 小时前
vue3中使用howler播放音频列表
前端·vue.js·音视频
BryanGG9 小时前
【说明书】索尼A7C视频拍摄PP值配置
音视频·规格说明书
带娃的IT创业者10 小时前
音乐播放器开发:QtMultimedia 音频引擎与播放列表管理
音视频·pyside6·qtmultimedia·音乐播放·qmediaplayer·播放列表·audio ducking
优选资源分享14 小时前
小白转文字 v1.2.8.0 | 安卓离线免费音视频转写工具
android·音视频
不才小强14 小时前
Qt开发实战:屏幕录制项目中学习到的知识与遇到的难题
qt·音视频
要开心吖ZSH14 小时前
MP4 转 WAV 音频转码方案详解(ProcessBuilder + FFmpeg)
java·ffmpeg·音视频
deepdata_cn15 小时前
移动端高并发视频合成
音视频·视频合成
要开心吖ZSH16 小时前
MP4 转 WAV 音频转码方案详解(互联网医院病历AI实战-JAVE2方案)
java·ffmpeg