目录

一. 精确截取视频

1.1 根据原视频,截取产生1个包含很多关键帧的视频step1_output_larger.mkv

1.2 根据step1_output_larger.mkv微调原截取开始时间和持续时间

1.3 根据step1_output.mkv和微调后的开始时间和持续时间产生step2_output.mkv

1.4 其他的处理

1.5 截取的一个示例


网上有很多ffmpeg对视频进行精确剪切的讨论,因为关键帧的问题,导致剪切时间不太精确,本文对视频的精确截取进行了探索,有两个目标:

1. 能精确截取视频。

2. 能保证剪切处声音不会突然截断。

以下的命令均在Ubuntu环境下实现,windows下的ffmpeg不太友好,播放mkv经常出现无法加载字幕的情况。

一. 精确截取视频

仅以1个例子说明,步骤如下:

1.1 根据原视频,截取产生1个包含很多关键帧的视频step1_output_larger.mkv

ffmpeg -y -ss 01:25:24.64 -t 9.8 -intra -accurate_seek -i *.mkv  -ss 0 -t 9.8 -g 2 -keyint_min 2 step1_output_larger.mkv

这一步是根据*.mkv产生1个带有很多关键帧的step1_output_larger.mkv,假定截取开始时间为01:25:24.64,持续时间t=9.8s,这个larger是指产生一个比你预期长度要大一点的mkv,这样做的目的是解决上面所述的第2个目标:保证剪切处声音不会突然截断,后面有叙述。

根据实际测试,说明几点:

1)-intra不可以去掉,似乎ffmpeg文档中说-intra可以用-g 1替代,但实际运行会有差异,没有详细研究。

2)accurate_seek用在-i之前。

3)-g 2 -keyint_min 2用来限定2个关键帧的间隔帧数为2,这个2可以根据具体情况自由选取。

4)*.mkv后的-ss 0 -t 9.8如果去掉,会导致*.mkv在重新进行编码时会花费大量的时间,我有点心疼我的电脑...,所以就加上了,加上后效果很明显,编码很快,和闪电侠一样快。

5)*.mkv之后不要再加-codec copy了,否则-g 2 -keyint_min 2就没用了。

如果想了解产生的step1_output_larger.mkv的关键帧数量、音视频长度、视频帧率、音频采样率等信息可以使用ffprobe,有需要的可以研究下。

1.2 根据step1_output_larger.mkv微调原截取开始时间和持续时间

ffmpeg -y -ss timestamp_begin_new -t duration_new -intra -accurate_seek -i step1_output_larger.mkv -codec copy -avoid_negative_ts make_zero step1_output.mkv

说明几点:

1)timestamp_begin_new和duration_new都是微调后的值,确保在timestamp_begin_new时刻的声音不会突然截断,在timestamp_begin_new+duration_new时刻声音也不会突然截断,可以先获取step1_output_larger.mkv的音频数据,wav或mp3格式的均可,然后需对音频进行采样,模拟转成数字后,处理上就容易多了,此时的处理类似于在数组中查找第1个0或最后1个0的索引,转化为时间后,再计算该时间相对于原时间的时间偏差,这个偏差+原时间戳开始时间就是timestamp_begin_new。

1.3 根据step1_output.mkv和微调后的开始时间和持续时间产生step2_output.mkv

ffmpeg -y -intra -accurate_seek -ss 0 -t duration_new -i step1_output.mkv  -codec copy -avoid_negative_ts make_zero step2_output.mkv

说明几点:

1)此时的ss从0开始,持续时间t改成duration_new。

2)直接使用-codec copy就可以了,无需重新编码了。

1.4 其他的处理

主要是指:

声音和视频的渐入fade_in和渐出fade_out,详细可研究ffmpeg文档;

将mkv转成mp4,同时将mkv的字幕烧写到mp4中,详细可研究ffmpeg文档。

1.5 截取的一个示例

我将MP4转成gif了,可以看到渐出的效果。

使用Python3+ffmpeg对视频进行精确截取的探索相关推荐

  1. 用FFmpeg从视频截取任意一帧图片的解决办法~

    From: http://www.cnblogs.com/yao/archive/2006/01/17/318772.html 在我的另一篇日志中,说到利用FFmpeg从视频截图的命令,那天在找从视频 ...

  2. FFmpeg 音视频截取

    1.简介 在日常处理视频文件时常常会用到视频片段的截取功能,FFmpeg支持该功能,拥有视频的起始时间定位以及截取视频长度的接口av_seek_frame. 2.流程 2.1 在使用FFmpeg AP ...

  3. 使用ffmpeg从视频中截取图像帧(最简单实用的视频抽帧,一句命令)

    Table of Contents 1.最佳方式 2.普通的命令:(画质差) 3. 视频旋转: 4. 批量视频抽帧: 参考:ffmpeg视频抽帧 1.最佳方式 第二种方法抽帧图片画质很差,这里提供更好 ...

  4. ffmpeg给视频添加时间水印

    ffmpeg给视频添加时间水印 通过 drawtext 滤镜模块给视频添加时间水印 给视频添加时间水印 用来做片源调试,非常方便的查找和定位处理的哪一帧视频片源: 1. 添加本地时间水印 ffmpeg ...

  5. python中使用ffmpeg进行视频指定时长截断(解决剪切后音视频不同步的问题)

    1. 获取视频时长 有两种方式获取视频总时长: python-ffmpeg( 获取的是视频总秒数 ) video_time = float(ffmpeg.probe(video)['format'][ ...

  6. Ffmpeg,mencoder视频格式转换

    一. Ffmpeg,mencoder视频格式转换 Mencoder 转 flv  mencoder -ffourcc FLV1 -lavfopts i_certify_that_my_video_st ...

  7. FFmpeg:视频转码、剪切、合并、播放速调整

    安装 去官网按提示安装即可,支持三大操作系统.唯一要吐槽的是,Ubuntu 14.04 等较新的版本,从默认软件列表里移除了 ffmpeg,转而支持 libav,可是 libav 又没弄好,很难用-- ...

  8. 利用FFmpeg制作视频序列

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

  9. php ffmpeg截图,PHP调用ffmpeg对视频截图并拼接脚本

    这篇文章主要介绍了PHP调用ffmpeg对视频截图并拼接脚本 PHP脚本调用ffmpeg对视频截图并拼接,供大家参考,具体内容如下 目前支持MKV,MPG,MP4等常见格式的视频,其他格式有待测试 1 ...

最新文章

  1. android intent短信,android – 通过Intent发送短信,并知道短信是否已被发送
  2. 【arduino】RFID门禁刷卡模块RFID-RC522
  3. window.open打开新窗口不改变原窗口_我P的图不高级,就很可耻吗?
  4. 俺是如何在3个月内写出博士论文的?
  5. 转载一篇阅读文章(还算不错吧)
  6. 观点 | 云原生时代来袭 下一代云数据库技术将走向何方?...
  7. react native loading动画_TypeScript for React (Native) 进阶
  8. ORA-20000: ORU-10027: buffer overflow, limit of 2000 bytes
  9. python123蟒蛇代码_[蟒蛇菜谱] Python封装shell命令
  10. 思科 Security Manager 12个0day PoC 被公开,多个严重 0day仍未修复
  11. 为什么python除法结果会有小数点0_22. 为什么 Python 中的整除是向下取整?
  12. 一些python书=待买
  13. 牛客小白月赛5求阶乘末尾有多少个0
  14. 工业基础类IFC—总体架构和空间结构
  15. 单应矩阵公式推导及计算
  16. matlab做聚类分析(简单的直接用clusterdata)
  17. 惠普计算机图标不在桌面,惠普笔记本电脑桌面图标显示图标不正常如何还原 惠普笔记本电脑桌面图标显示图标不正常还原的方法...
  18. 单总体分布卡方拟合优度检验
  19. VMware 虚拟化中:厚置备延迟置零、厚置备置零、Thin Provision三个的区别
  20. 在word中在方框里打钩

热门文章

  1. 微软Win10轻松转换MBR为GPT官方教程
  2. 2019年github上的18个热门项目
  3. 漏刻有时物联网传感器API接口对接说明文档
  4. IDC表示云计算占有率到2012年将翻一番
  5. 使用WebUploader解决安卓微信浏览器上传图片中遇到的bug
  6. 输入一个月份,输出这个月有多少天?
  7. 霍尔效应测磁场matlab实现代码
  8. 电脑小白win7wifi共享热点设置,包括无法启动承载网络组或资源出问题,共享出问题,设备出问题等的解决方案
  9. 谷歌浏览器插件——Ajax Interceptor,一个用于修改 ajax 请求响应的 chrome 扩展,可以修改ajax请求返回结果,在浏览器上直接mock数据
  10. 2018 公开课盘点企业篇:十家企业带你看 AI 的实际应用成果及人才招聘需求...