Chinaunix首页 | 论坛 | 博客
  • 博客访问: 474155
  • 博文数量: 95
  • 博客积分: 1773
  • 博客等级: 上尉
  • 技术积分: 1641
  • 用 户 组: 普通用户
  • 注册时间: 2007-08-17 23:28
文章分类
文章存档

2018年(2)

2017年(10)

2016年(7)

2015年(48)

2014年(2)

2013年(2)

2012年(2)

2011年(7)

2010年(7)

2009年(3)

2008年(1)

2007年(4)

分类: WINDOWS

2013-11-26 23:42:00

近日处理一个大的mp4视频,要批量切分成多个文件好使用,采用的ffmpeg切割,本来是一个很简单的任务,结果被ffmpeg特殊剪辑参数处理特性给坑了,耽搁好大一段时间才搞定,遂写本文以记之。

ffmpeg剪辑切分相关的参数查手册主要有三个

  • -ss  入点时间量
  • -t  持续时间量
  • -to  出点时间量

手册上介绍其中各个时间量参数都接受秒或者HH:MM:SS.X的格式,此外-t  -to 互斥,如果同时出现,采用-t的。

所以很快想到用下面的格式进行文件切割

ffmpeg -ss  -t  -i  -vcodec copy -acodec copy  

其中startTime采用HH:MM:SS.X格式,dusTime采用秒量。

结果在从一个大的mp4分割出多个小的mp4片段时老是有问题,表现为出点时间(持续时间)不正确,基本上持续时间会变成+。遍查不得其解?!

遂改为

ffmpeg -ss  -to  -i  -vcodec copy -acodec copy  

这次更厉害,报参数错误!

又改为

ffmpeg -ss  -i  -to  -vcodec copy -acodec copy  

这下不报错了,但还是与前面一样的出点时间不正确,现在的出点时间相当于+

再改成

ffmpeg -ss  -i  -t  -vcodec copy -acodec copy  

这下终于对了!该死的参数处理特性啊。

需要注意的是因为前面的持续时间表现为+,所以如果startTime为0,就发现不了问题,我开始就是因为测试命令行功能时用了而没有发现问题,结果批量处理才发现错误了!!!

虽然暂时解决了问题,我猜ffmpeg还是有命令行参数处理bug(我现在姑且认为是参数处理特性)。

测试环境: win7-64bit
ffmpeg版本:http://ffmpeg.zeranoe.com/builds/下载的ffmpeg-20131126-git-a9a3afe-win64-static,没有在Linux环境下测试,不过估计还是有问题,因为windows版本应该影响不了命令行参数处理模式。(补充,在linux下测试了,有同样的问题。ffmpeg version N-58485-ga12b4bd,built on Nov 27 2013 05:33:38 with gcc 4.6 (Debian 4.6.3-1) )(再补充:在网上搜到http://superuser.com/questions/138331/using-ffmpeg-to-cut-up-video 一文对此进行了解释。)

阅读(2830) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

CU博客助理2013-12-11 11:11:01

嘉宾点评:
虽然很基础,但是属于楼主的笔记,鼓励原创,可以考虑多举一些例子来说明。(感谢您参与“原创博文评选”获奖结果即将公布)