关键词: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制作视频序列

    前言 本文介绍了利用FFmpeg进行视频测试序列制作的方法.所谓测试序列就是将若干个不同场景的视频片段,按照不同的分辨率.码率.编码方法等进行处理,然后拼接成一条长视频,供测试者打分.一般包括以下几个 ...

  2. Ubuntu使用ffmpeg切割视频

    Ubuntu使用ffmpeg切割视频 1.安装FFmpeg1.安装依赖 当前环境 ubuntu16sudo apt-get update sudo apt-get -y install autocon ...

  3. 为什么ffmpeg 切割视频后体积会变小

    一.背景 使用手机录制了1080 * 1920的视频,体积大小是345 MB, 时长为3分50s. 直接copy到 mac 上使用ffmpeg (重新编码) 切除最后5 s ,得到一个3分 45秒的视 ...

  4. 利用FFmpeg进行视频文件进行分割

    利用FFMPEG命令进行文件分割 ffmpeg -ss 00:00:00 -i input.mp4 -c copy -t 60 output.mp4 -ss 表示视频分割的起始时间,-t 表示分割时长 ...

  5. python+ffmpeg切割视频

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

  6. 利用FFMPEG进行视频分割

    转载地址:http://blog.csdn.net/bikeytang/article/details/51491139 利用FFMPEG命令进行文件分割 ffmpeg -ss 00:00:00 -i ...

  7. 利用ffmpeg对视频文件进行分析几例

    1.将视频文件转换为jpg图片文件序列: ffmpeg -i /home/czl/WorkSpace/ffmpeg/H264_REC.raw -r 1 -q:v 2 -f image2 pic-%03 ...

  8. Mac OS中利用ffmpeg为视频添加字幕

    Mac系统下,利用ffmpeg加字幕 字幕类型 硬字幕,类似视频水印,作为视频的一部分内嵌了. 软字幕,封装字幕,也是内嵌到视频里,不过只是作为渲染,而且需要播放器支持才行. 外挂字幕,就是外部字幕文 ...

  9. ffmpeg切割视频

    使用ffmpeg分割视频时,指定开始.结束时间.使用以下命令 ffmpeg -ss [start] -i [input] -to [end] -c copy [output] -ss :起始时间 -i ...

最新文章

  1. OC动态创建的问题变量数组.有数组,在阵列13要素,第一个数据包阵列,每3元素为一组,分成若干组,这些数据包的统一管理。最后,一个数组.(要动态地创建一个数组).两种方法...
  2. 插入排序之——二分(折半)插入排序(c/c++)
  3. linux标准c和c编译器6,linux内核中GNU C和标准C的区别
  4. italic与oblique的区别
  5. 跟我一起写 Makefile(七)
  6. Node搭建静态资源服务器时后缀名与响应头映射关系的Json文件
  7. 微信小程序点击按钮实现手机振动功能
  8. zabbix服务器搭建
  9. 关乎Python lambda你也看得懂
  10. 我什么时候应该使用访客设计模式? [关闭]
  11. 百度竞价点击器_同等预算,百度竞价托管如何让您的点击量高于您同行?
  12. 最早设计计算机的目的是进行科学计算,其主要计算的问题面向,北京师范大学计算机试题1答案...
  13. f分布表完整图a=0.01_SQL数据库完整性
  14. android手机微信收藏功能实现,微信小程序实现收藏功能
  15. 【7】OPencv骨架细化算法
  16. Android P 怎样屏蔽HOME键和RECENT键
  17. 微信公众号与小程序对接文档
  18. 物联网挑战赛【从零到一】
  19. 忍得住清贫 耐得住寂寞 禁得起诱惑
  20. 极光推送在Android端的集成

热门文章

  1. eclipse如何卸载adt插件
  2. 这样就算会了PHP么?-10
  3. SQL SERVER 2000写存储过程出现列名无效的解决方法
  4. OpenCV 【十六】RNG随机数发生器putText绘制文字
  5. IDEA常用和实用配置以及各种必要插件
  6. 内容协商 (Content Negotiation)
  7. Visual Studio 2005 IDE 技巧和窍门
  8. WEB 打印的相关技术分析
  9. 【Ubuntu】制作usb启动盘安装ubuntu18.04时报错:“failed to load ldlinux.c32”
  10. 【Qt】enum和QString的相互