先说点题外话。如果对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. 汇编中的length(返回利用dup定义的数组中的元素个数,即重复操作符dup前的count值)
  2. dhtmlxtree api中文
  3. 腾讯下载视频转换MP4
  4. 【iOS XMPP】使用XMPPFramewok(五):好友列表
  5. 服务器虚拟化分为半,服务器虚拟化有哪些?
  6. java计算加速减速_java – 使用JOCL / OPENCL计算强度的加速总和
  7. JavaScript学习笔记:AJAX基础
  8. java项目中包的命名规范
  9. 【情感分析】基于Aspect的情感分析模型总结(PART IV)
  10. 数据库原理及应用教程 第四版|微课版答案 陈志泊主编
  11. SpringBoot 2.3.x gradle源码构建
  12. 禾川伺服驱动器X2E-750调试记录
  13. irlr7843引脚图_IRLR7843PBF中文资料
  14. 设置idea类注释模板
  15. java/php/net/python奖助学金评审管理系统设计
  16. 面试题:搜狐百度 看1 复杂一点的面试题 笔试题
  17. es文件浏览器smb服务器,ES文件浏览器怎么连接电脑SMB,可以参考这篇文章
  18. PyInstaller 的安装和使用(python生成exe文件)_联网安装
  19. *********ADO接口简介*********
  20. Win10设置系统补丁更新服务器,win10如何关闭自动更新补丁_win10关闭自动更新补丁的图文教程...

热门文章

  1. [推荐系统] 自己动手写一个推荐系统
  2. 视频水平翻转,制作视频像照镜子一样反方向
  3. 全链路跟踪之线程上下文Thread Local实战(完整源码)
  4. flink you can disable this check with the configuration ‘classloader.check-leaked-classloader‘
  5. Ubuntu小点汇总,更新中...
  6. Ceres求解直接法BA实现自动求导
  7. 吴洪声、戴志康广发英雄帖,邀你把酒话青春
  8. PuddingSwap布丁美食帝国原材料即将上线
  9. 中兴通讯天津研究所招聘实习生
  10. 家用电器-电磁炉加热原理及实现