我希望将大型AVI视频分成两个较小的连续视频 . 我正在使用ffmpeg .
一种方法是运行两次ffmpeg:
ffmpeg -i input.avi -vcodec copy -acodec copy -ss 00:00:00 -t 00:30:00 output1.avi
ffmpeg -i input.avi -vcodec copy -acodec copy -ss 00:30:00 -t 00:30:00 output2.avi
但是根据ffmpeg的联机帮助页,我可以使用 one 行从一个输入文件中创建多个输出文件:
ffmpeg -i input.avi -vcodec copy -acodec copy -ss 00:00:00 -t 00:30:00 output1.avi \
-vcodec copy -acodec copy -ss 00:30:00 -t 00:30:00 output2.avi
我的问题是,后一种方法是否节省了计算时间和内存?
10 回答
ffmpeg wiki链接回此页面,参考“如何有效地分割视频” . 我不相信这个页面回答了这个问题,所以我做了@AlcubierreDrive建议......
哪个输出......
经过几次运行和一些数学运算后,我测试了SD和HD文件 .
SD file = 1.35GB DVB传输流
HD file = 3.14GB DVB传输流
结论
如果您正在处理HD,单个命令会更好,它同意手册在输入文件后使用-ss进行“慢速搜索”的注释 . SD文件的差异可以忽略不计 .
两个命令版本应该更快,在输入文件之前添加另一个-ss,用于'快速搜索',然后是更准确的慢搜索 .
这是一个有用的脚本,它可以帮助您自动拆分:A script for splitting videos using ffmpeg
http://ffmpeg.org/trac/ffmpeg/wiki/Seeking%20with%20FFmpeg也可能对您有用 . 此外,ffmpeg还有一个可能有效的段复用器 .
无论如何,我的猜测是将它们组合成一个命令可以节省时间 .
根据我的经验,不要使用ffmpeg进行拆分/连接 . MP4Box比ffmpeg更快更轻 . 请尝试 . 例如,如果要将1400mb MP4文件拆分为两个部分700mb,则可以使用以下cmdl:
MP4Box -splits 716800 input.mp4
例如,用于连接两个可以使用的文件:或者,如果您需要按时间拆分,请使用
-splitx StartTime:EndTime
:MP4Box -add input.mp4 -splitx 0:15 -new split.mp4
您提供的这两个示例之间没有太大区别 . 第一个示例以2个步骤顺序切割视频,而第二个示例同时执行(使用线程) . 没有特别的加速将是显而易见的 . 你可以阅读更多关于creating multiple outputs with FFmpeg的信息
此外,您可以使用的(最近的FFmpeg)是stream segmenter muxer,它可以:
这是一个简单的Windows bat文件,用于将传入的文件拆分为50个部分 . 每个部分的长度为1分钟 . 抱歉这样的哑剧本 . 我希望有一个愚蠢的Windows脚本,而不是根本没有它 . 也许它对某人有帮助 . (基于此站点的“bat file for loop” . )
没有测试,但看起来很有希望:
Basic stream segmenter
显然,将AVI分成相同大小的段,这意味着这些块不会降低质量或增加内存,或者必须重新计算 .
它还使用编解码器副本 - 这是否意味着它可以处理非常大的流?因为这是我的问题,我想打破我的avi所以我可以使用过滤器摆脱扭曲 . 但整个avi运行了几个小时 .
这是分割视频的完美方式 . 我以前做过,而且对我来说效果很好 .
ffmpeg -i C:\xampp\htdocs\videoCutting\movie.mp4 -ss 00:00:00 -t 00:00:05 -async 1 C:\xampp\htdocs\videoCutting\SampleVideoNew.mp4
(适用于cmd) .shell_exec('ffmpeg -i C:\xampp\htdocs\videoCutting\movie.mp4 -ss 00:00:00 -t 00:00:05 -async 1 C:\xampp\htdocs\videoCutting\SampleVideoNew.mp4')
(对于php) .请遵循这一点,我相信它会完美运作 .
一种简单的方法是使用publitio url-based api的修剪选项 .
上传视频后,只需在网址(so_2,eo_2)中设置起始偏移量和结束偏移量,如下所示:
这将立即创建从第2秒和2秒开始的新视频 . 无论如何,你都可以通过这种方式分割视频 .
事实证明,后一种情况下的文件大小将与时间片成比例相等 .