关键词:FFmpeg,seek,ss,t,to,搜索,定位

介绍

如果你想要从输入文件中切割一部分,需要用到ss选项。

快速定位

需要将ss放在输入文件的前面(即-i的前面)

ffmpeg-ss 00:03:00 -i Underworld.Awakening.avi -frames:v 1 elesos1.jpg

上面的命令会将大约3分钟处的画面生成一帧, 这种基于关键帧的搜索会非常快,但缺点是只能定位到关键帧,而不一定是指定的时间00:03:00,因此不太精确。

[编辑]精确定位

需要将ss放在输入文件的后面(即-i的后面)

ffmpeg-i Underworld.Awakening.avi -ss 00:03:00 -frames:v 1 elesos2.jpg

上面的命令会精确地定位到3分钟,并将该处的画面生成一帧图像。

注意上面2张图片左下角的时间,第一张为"00:02:05:05" ,第2张为 "00:02:05:06".

输入文件会一帧一帧地进行解码直到到达ss所指定的位置,因此会非常慢。而且随着指定时间越长,需要等待的时间也会越长。

[编辑]快速并且精确定位

需要在输入文件前后同时指定ss参数

ffmpeg-ss 00:02:30-i Underworld.Awakening.avi -ss 00:00:30 -frames:v 1 elesos3.jpg

这种方法综合了上面2种方法的优点。

首先快速定位到3分钟之前的某个时间点,然后从该时间点开始一帧一帧地慢慢解码到3分钟。

FFmpeg会首先快速定位到00:02:30附近的关键帧处,然后开始慢慢往后搜索30秒。结果与“精确定位”相同(左下角也是00:02:05:06),但是速度更快。

对于上面2个ss时间点(00:02:30和00:00:30)的设置依赖于关键帧的间隔(即GOP的大小),

X264默认GOP大小为250(即如果输入帧率为25fps,则每10秒一个关键帧)。

切割片断

如果想要从中间切割一段视频,可以将ss和t参数联合使用,其中t参数指定时长,例如“-ss 60 -t 10”将切割一段从60秒到70秒的片断;

或者使用to选项指定结束时间点,如“ -ss 60 -to 70”也一样切割一段从60秒到70秒的片断;选项t和to不能同时使用,如果你同时指定,默认会使用参数t。

[编辑]注意

如果你仅仅在输入文件之前(-i之前)指定了ss选项,那么时间戳会被重置为0,此时选项t和选项to产生的效果一样。

ffmpeg-ss 00:01:00 -i video.mp4 -to 00:02:00 -c copy cut.mp4 ffmpeg-i video.mp4 -ss 00:01:00 -to 00:02:00 -c copy cut.mp4

上面例子中,第一个命令会得到从00:01:00 到 00:03:00的片断,而第二个命令会真正得到从00:01:00 到 00:02:00的片断。

如果你切割的时候使用了流拷贝stream copy (-c copy),并且想用 concat demuxer来合并你切割出来的片断,你需要指定`-avoid_negative_ts 1`:

ffmpeg-ss 00:03:00 -i video.mp4 -t60-c copy -avoid_negative_ts 1 cut.mp4

[编辑]时间格式

你可以使用[HH:MM:SS]格式或者以秒为单位,如00:02:30 或者 150。如果你使用了小数,如02:30.05,小数点后面的05表示1秒*5%,即50毫秒(注:1秒=1000毫秒ms =106微秒µs)而不是帧数,如02:30.5表示2分钟,30秒,500毫秒(即半秒)。

[编辑]附

如果将-c:v copy与-ss同时使用,生成的文件可能不能播放,或者出现音视频不同步的问题,因为FFmpeg是强制基于关键帧进行切割的。

[编辑]艺搜参考

http://trac.ffmpeg.org/wiki/Seeking%20with%20FFmpeg

利用FFmpeg切割视频的更多相关文章

  1. 利用FFmpeg生成视频缩略图 2.1.6

    利用FFmpeg生成视频缩略图 1.下载FFmpeg文件包,解压包里的\bin\下的文件解压到 D:\ffmpeg\ 目录下. 下载地址 http://ffmpeg.zeranoe.com/build ...

  2. 利用FFmpeg生成视频的缩略视频 v8.3

    目前生成视频缩略图的工具大多数是生成静态的图片,为了解决这样的局限性,这 次春节期间搞了个利用 FFMpeg 能生成缩略动态视频的批处理. 把 Make_NxM_videos.bat LED_font ...

  3. python+ffmpeg切割视频

    什么是ffmpeg 1.1 简介 FFmpeg是一个开源免费跨平台的视频和音频流方案,属于自由软件,采用LGPL或GPL许可证(依据你选择的组件).它提供了录制.转换以及流化音视频的完整解决方案.它包 ...

  4. 基于C#利用ffmpeg提取视频帧

    利用ffmepg提取视频帧实际上是利用C#调用ffmepg命令行进行处理对应的视频,然后输出出视频帧 GetPicFromVideo("); static public string Get ...

  5. C# 利用ffmpeg 对视频转换系类操作 (1) 基本分析

    最近公司做一个项目,开发一个视频站点.项目需求中有很多视频转换的需求,如:格式转换(flv,Mp4),视频水印,视频截图,视频合成,获取视频的基本信息(时间戳,视频大小等).经过网络的收集资料以及自己 ...

  6. 利用ffmpeg进行视频软解播放

    前段时间,公司的一个项目需要一个rtsp的播放库,原本打算直接用vlc播放的,但我觉得vlc太庞大了,很多功能没必要,还不如用ffmpeg+d3d简单的实现一个库,因此就有了今天讲的这个东西.一个解码 ...

  7. 利用FFmpeg生成视频缩略图 2.3.1

    1.下载FFmpeg文件包,解压包里的\bin\下的文件解压到 D:\ffmpeg\ 目录下. 下载地址 http://ffmpeg.zeranoe.com/builds/win32/static/ ...

  8. 利用FFmpeg生成视频缩略图 2.1.8

    1.下载FFmpeg文件包,解压包里的\bin\下的文件解压到 D:\ffmpeg\ 目录下. 下载地址 http://ffmpeg.zeranoe.com/builds/win32/static/ ...

  9. ffmpeg切割视频

    using System.Diagnostics; public static void carveVideo() { var inputpath = @"d:\1.mp4"; v ...

随机推荐

  1. 记录一个在制作Swing程序的小怪事

    在制作一个Swing程序时,出现了奇怪的事情,程序在Eclipse里执行正常,但打包后再执行那些动态执行的控件就消失不见了.截图如下: 在Eclipse里正常执行的画面: 打包执行后出现的画面: 可以 ...

  2. Python中的关键字的用法

    Python有哪些关键字 -Python常用的关键字 and, del, from, not, while, as, elif, global, or, with, assert, else, if, ...

  3. 算法笔记_124:密码脱落(Java)

    一 问题描述 X星球的考古学家发现了一批古代留下来的密码.这些密码是由A.B.C.D 四种植物的种子串成的序列.仔细分析发现,这些密码串当初应该是前后对称的(也就是我们说的镜像串).由于年代久远,其中 ...

  4. 读-《c++设计新思维-泛型编程与设计模式之应用》经典记录(英文书名:《modern c++ design》)

    1.以设计为目标的程序库都必须帮助使用者完毕静止的设计.以实现使用者自己的constraints,而不是实现预先定义好的constraints. 2.Anything that can be done ...

  5. C#中怎样获取当前路径的几种方法

    String apppath = System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase; //获取整个文件路径名 a ...

  6. spring bean parent属性详解

    必要条件:1.子bean必须与父bean保持兼容,也就是说子bean中必须有父bean定义的所有属性. 2.父bean必须是抽象bean或者定义lazy-init=true也就是不让bean工厂实例化 ...

  7. setjmp与longjmp

    在C中有时我们会使用goto语句用于运行跳转,可是不能跨越函数 #include <stdio.h> void func2() { int num = 0; dst2: if (num & ...

  8. Mysql 中 HAVING 和 USING 的使用

    1. HAVING 在 SQL 中增加 HAVING 子句原因是,WHERE 关键字无法与合计函数一起使用. 实例:现表Orders(订单)有如下字段: Id,Date,Price ,Customer ...

  9. canvas学习笔记(下篇) -- canvas入门教程--保存状态/变形/旋转/缩放/矩阵变换/综合案例(星空/时钟/小球)

    [下篇] -- 建议学习时间4小时  课程共(上中下)三篇 此笔记是我初次接触canvas的时候的学习笔记,这次特意整理为博客供大家入门学习,几乎涵盖了canvas所有的基础知识,并且有众多练习案例, ...

  10. 360极速浏览器无法正确getHours

    开发了一个显示时间的功能. 功能是这样的,首先从数据库中读取时间,然后显示到前端页面上. 数据库中:2017-08-10 14:25:35.867 前端显示:2017-08-10T14:25:35.8 ...