分类: WINDOWS
2013-11-26 23:42:00
近日处理一个大的mp4视频,要批量切分成多个文件好使用,采用的ffmpeg切割,本来是一个很简单的任务,结果被ffmpeg特殊剪辑参数处理特性给坑了,耽搁好大一段时间才搞定,遂写本文以记之。
ffmpeg剪辑切分相关的参数查手册主要有三个
手册上介绍其中各个时间量参数都接受秒或者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
这下终于对了!该死的参数处理特性啊。
需要注意的是因为前面的持续时间表现为
虽然暂时解决了问题,我猜ffmpeg还是有命令行参数处理bug(我现在姑且认为是参数处理特性)。
测试环境: win7-64bit
ffmpeg版本:下载的,没有在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 一文对此进行了解释。)