【发布时间】:2011-08-04 19:57:23
【问题描述】:
我希望将一个大的 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 的手册页,我可以只使用 一个 行从一个输入文件生成多个输出文件:
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
我的问题是,后一种方法是否节省了计算时间和内存?
【问题讨论】:
-
当使用“-vcodec copy -acodec copy”时速度非常快:))
-
@Antony,你为什么不给两个版本都计时(看看内存监视器,比如
htop),然后告诉我们答案是什么? -
第一个示例按顺序执行,而第二个示例使用线程。两者都会做同样的事情,不会出现明显的加速。但为了简单起见,您可以使用 ffmpeg 流分段器复用器:ffmpeg.org/…
-
这个例子看起来大错特错! ffmpeg 文档说明了 -ss 选项:“当用作输入选项时(在 -i 之前),在此输入文件中查找位置。当用作输出选项时(在输出文件名之前),解码但丢弃输入,直到时间戳到达位置。”您在输出位置使用它,因此您的第二行浪费了解码和丢弃前 30 分钟的精力。
-
@LucianWischik 但在第二次拆分中使用
-ss作为输入选项可能不准确,因此您可能无法获得干净的拆分。 IMO OP 的例子更正确。
标签: ffmpeg