先说点题外话。如果对ffmpeg的各种参数感兴趣的话,可以用“ffmpeg -h”命令行查询。如下:(具体就不截了)

ffmpeg -h 查看基本参数设置

ffmpeg -h long 查看更多的参数设置

ffmpeg -h full 查看全部的参数设置(包括全部容器格式和编解码器明确的设置参数,非常长)(好像在这个cmd窗口都看不完,推荐https://www.iteye.com/blog/keren-1773536)

ffmpeg -h type=name 查看全部的解码器、编码器、解封装器、封装器、滤镜、比特流滤镜参数设置

一、-ss、-t与-to参数的介绍

“-ss”,time offset,起始时间。我们通过“-ss”参数来设定要从媒体文件的哪个时间点开始进行操作,而在这个时间点之前的部分就默认舍弃不作输出了。

例如,想要从视频的2秒开始做什么处理,我们输入“-ss 2”。如果想要很精确的时间也可以,比如“-ss 1:23.456”,表示设定从1分23秒456毫秒开始。

“-t”,duration,持续时间。通过“-t”参数来设定我们对音视频等媒体文件的编辑处理要持续多长时间。最后看命令行具体内容来看是否输出这段时间所记载的部分。

与“-ss”一样的道理,“-t 4”表示需要持续4秒进行处理所输入的文件,“-t 0:14.678”表示持续14秒678毫秒处理所输入的文件。至于这个“处理”是什么编辑操作等,就要看其它具体的参数设置了,“-t”只是像提供一个“记录时间”的秒表而已。

“-to”,stop,截止时间。通过“-to”参数来设定对媒体文件的编辑处理到什么时间点结束。需要这个用法的话,“-to”一定要写在“-i”前面!!否则就和“-t“一样是描述持续时间的了。

“-to”与“-t”类似,用法也是诸如“-to 5”、“-to 2:18.963”,表示到5秒、2分18秒963毫秒截止。我们也可以用“-ss”与“-to”来剪辑,这样是设定好起点和终点,“-to”的时间点减去“-ss”的就是最后输出文件的时长。

因此,本文中我们运用的就是“-ss”、“-t”或“-to”来进行简单剪辑。“-ss”与“-t”这样是设定好起点和持续时间,“-t”所记录的时间就是最后输出文件的时长。“-ss”与“-to”是设定好起点与终点,而不用想持续时间是多长。

二、简单剪辑音视频及字幕

(这里以视频为例,音频、字幕文件同理的)现在有个很明显的问题:我怎么知道想剪的,比如精确到多少毫秒的时间点数据?

up推荐用potplayer播放器查看(官网下载http://potplayer.daum.net/?lang=zh_CN)(资源下载http://www.potplayercn.com),当然一些播放器也都能做到查看当前播放的精确时间点。

up就以potplayer为例,任意打开一个视频,按键盘的“D”键定位到当前播放的上一帧,“F”键定位当前的下一帧(对音频好像只有“D”键有用,不过感觉也行了)。左上角便有精确的当前时间点数据。

剪辑的命令行如下:

ffmpeg -ss 0:14.000 -i .\in.mp3 -c copy .\out.mp3

ffmpeg -i .\in.flv -ss 1:23.456 -t 15 -c copy .\out.mp4

(从起点开始保留15秒,顺便转码)

ffmpeg -ss 2 -to 0:16.123 -i .\in.ass -c copy .\out.ass

(设定剪辑的起点与终点,保留中间14秒123毫秒)

上述要注意两点:如果只有“-ss”设定的起点,那么意思是ffmpeg将剪去从最开头0:00到起点0:14这14秒,相当于剪去开头,留下的进行最后输出(就是前面说的默认舍弃的解释)。

如果没有“-c copy”也能剪,相当于让ffmpeg以它自己默认方式重新编码输出,这固然费力不讨好了。当然如果是想转码的话,也可以自行设定想要的编码格式,剪辑和转码一起做。就只是剪辑的话,up建议大家加上“-c copy”。如下图:

这表示从13秒开始,持续42秒,也就是到原本视频的55秒截止,保留中间这段,其它不要。像这样把“-t”写在“-i”前面也是可以的。红圈的speed表示运行速度,一般像这种几百的数就是1秒左右就完成剪辑和输出了(就是“高效转码”以及记得“-c copy”的道理)。

up建议将“-ss”、“-t”、“-to”放在“-i”的前面,如“ffmpeg -ss 12 -to 27 -i ……”。这涉及到ffmpeg命令行工作原理理解的问题。将这些“剪辑参数”放在输入文件前面的话意思是让ffmpeg先对输入文件进行“时间定位”,再去做接下来的其它事(这样剪辑省时但可能不够精确)。“剪辑参数”放在“-i”后面也可以,相当于让ffmpeg做完其它事后,最后对输出文件进行“时间定位”之后输出(这样剪辑比较费时但也许更精确)。

所以说,ffmpeg剪辑也不是没有缺点。例如可能会出现开头一点音画缺失、剪辑是时间点还是不够准确的情况。这样的话up建议将想剪的片段的起点往前5秒,终点往后5秒左右,这样无论对平时观看或者作素材用也影响不大。(另可参考https://blog.csdn.net/matrix_laboratory/article/details/53157383)

三、视频画面截图、导出帧图片

有时看影视剧,想把某些过瘾的画面存下来另作它用,或者有些需要“暂停成功”的画面,自己很难去截到,我们就可以用ffmpeg来存图,或者对已有图片进一步地裁剪。

很简单,视频画面截图或者导出帧图片的命令行如下:

ffmpeg -ss 19 -to 21 -i .\in.mp4 .\%03d.png

表示导出从视频的第19秒到21秒,这2秒内的所有帧图片。

这里解释两点。“帧”是“帧率”的意思,单位是“帧/每秒”,每秒多少帧就是说每秒播放了多少张图片(不懂可以自行去搜一搜“帧”)。“%03d”的意思是让电脑自己以3位数字从小到大依次命名输出的文件,例如001.png、002.png……

还有其它各种形式面对各种需求的视频截图命令行,这个感兴趣自己探究吧,up就以后再说啦。(up觉得这条已经很普适很够用了)如下图:

从视频第13秒开始,导出之后3秒的所有帧图片,一共75张

ffmpeg 详解裁剪素材 -ss、-t、-to 参数相关推荐

  1. tomcat7修改内存 win_详解Windows下调整Tomcat启动参数的实现方法

    Windows下调整Tomcat启动参数 Tomcat默认可以使用的内存为128MB,对于访问数比较多.比较吃内存的应用来说,这是不够的.我们可以通过调整Java虚拟机的启动参数来增加Tomcat可使 ...

  2. 详解CUDA核函数及运行时参数

    详解CUDA核函数及运行时参数 核函数是GPU每个thread上运行的程序.必须通过__gloabl__函数类型限定符定义.形式如下: __global__ void kernel(param lis ...

  3. python什么是可变参数_详解Python的三种可变参数

    可变参数 可变参数应该最简单,在C/C++和Java等语言中都有,就是用*号来表示,例如 def testArg(*arg) 你可以传入任意多个元素(包括0)到参数中,在函数内部会自动认为是一个元组或 ...

  4. python中什么是可变参数_详解Python的三种可变参数

    详解Python的三种可变参数 可变参数 可变参数应该最简单,在C/C++和Java等语言中都有,就是用*号来表示,例如 def testArg(*arg) 你可以传入任意多个元素(包括0)到参数中, ...

  5. 详解XMLHTTP中setRequestHeader方法和参数

    详解XMLHTTP中setRequestHeader方法和参数 setRequestHeader("Content-type", "application/x-www-f ...

  6. [总结]FFMPEG命令行工具之ffmpeg详解

    目录 0 前言 1 语法 Synopsis 2 描述 Description 3 详细描述 Detailed description 3.1 滤镜 Filtering 3.1.1 简单滤镜图 Simp ...

  7. JavaGUI 简易贪吃蛇代码详解+图片素材

    简易贪吃蛇 运行截图 图片素材 代码详解 package com.du.snake; import javax.swing.*; import java.awt.*; import java.awt. ...

  8. 深入详解JVM内存模型与JVM参数详细配置

    本系列会持续更新. JVM基本是BAT面试必考的内容,今天我们先从JVM内存模型开启详解整个JVM系列,希望看完整个系列后,可以轻松通过BAT关于JVM的考核. BAT必考JVM系列专题 1.JVM内 ...

  9. 直通BAT必考题系列:深入详解JVM内存模型与JVM参数详细配置

    JVM基本是BAT面试必考的内容,今天我们先从JVM内存模型开启详解整个JVM系列,希望看完整个系列后,可以轻松通过BAT关于JVM的考核. BAT必考JVM系列专题 1.JVM内存模型 2.JVM垃 ...

最新文章

  1. java模拟一个军队作战_战区级联合作战仿真推演系统
  2. 【翻译】使用Ext JS设计响应式应用程序
  3. python遗传算法计算实例_遗传算法python简单例子(详解)
  4. Mysql数据库——数据类型和约束
  5. 围成一圈的排列组合问题_行测技巧:巧解环形排列组合
  6. 宣传思想社工计算机考试内容,社工考试主要考什么?
  7. 微信小程序微商城(七):动态API实现商品分类
  8. GPRS/UMTS分组域漫游(转)
  9. matlab画正态分布图简单算法
  10. Java 大文件分片上传
  11. 小游戏:红色警戒争霸战!
  12. 如何在Systemd中使用Shell脚本创建和运行新的服务
  13. mysql explain关键字解析
  14. 多线程在单核cpu与多核cpu下如何工作
  15. 南卫理公会大学 计算机排名,2019-2020南卫理公会大学世界排名多少【QS最新第701-750名】...
  16. templete_SPFA()
  17. 关于 PM2 Daemon 进程,内存爆涨的问题分析及解决
  18. 基于asp.net网上报名系统的设计与实现
  19. 仿InfoPath的Business Form 设计器
  20. 【一 zedboard】PS端实现打印hello world

热门文章

  1. 怎么设置linux系统字体颜色,如何修改linux系统字体颜色
  2. 五个有用的微信公众号运营技巧!
  3. 医疗大数据应用面临哪些挑战
  4. 什么?CSS内联样式的使用
  5. RS2022/云检测:考虑域偏移问题的卫星图像半监督云检测Semi-Supervised Cloud Detection in Satellite Images by Considering the
  6. 低调做人,你会一次比一次稳健;高调做事,你会一次比一次优秀!(偷来的自己留着学习)
  7. 清除系统LJ.bat 使电脑急速如飞
  8. 哇哦,灵光乍现——srp中commandbuffer设置SetViewProjectionMatrices方法注意点,终于对了
  9. Python: CIR过程蒙特卡洛模拟
  10. 1153 - 三个整数