有人在 ffmpeg 中使用了“-segment_times”开关吗?

有人在 ffmpeg 中使用了“-segment_times”开关吗?

在搜索 U&L 时,我注意到有相当多的问题询问如何编写ffmpeg命令行生成的脚本,如下所示:

ffmpeg -i video.mp4 -ss 00:00:00 -t 00:10:00 -c copy 01.mp4
ffmpeg -i video.mp4 -ss 00:10:00 -t 00:10:00 -c copy 02.mp4
ffmpeg -i video.mp4 -ss 00:20:00 -t 00:10:00 -c copy 03.mp4

在研究这个问题的解决方案时,我在问题跟踪器中偶然发现了这张票ffmpeg,标题为:将输入视频分割成多个输出视频块

这张票重点介绍了一个补丁,它使您最终能够提供时间点列表,使用单个命令行将视频切割成更小的部分,如下所示:

$ ffmpeg -i input.avi -f segment -segment_times 10,20,40,50,90,120,180 \
      -vcodec copy output02%d.avi

该补丁似乎已在此版本的代码存储库中发布:

commit 2058b52cf8a4eea9bf046f72b98e89fe9b36d3e3
Author: Stefano Sabatini <[email protected]>
Date:   Sat Jan 28 22:36:38 2012 +0100

    lavf/segment: add -segment_times option

    Address trac ticket #1504.

我下载了这个静态构建的版本ffmpegffmpeg.static.64bit.2013-10-05.tar.gz来自ffmpeg 站点,但它显然不包括该开关。

$ ./ffmpeg --help |& grep segment
$

有谁能让这个新开关正常工作吗?

答案1

是不是因为失踪了-map选项,它将输入流指定为输出文件的源。我正在使用 ffmpeg 2.6.1 并且能够使用以下命令分割视频-segment_times

ffmpeg -i foo.mp4 -segment_times 10,20,30,40 -c copy -map 0 -f segment  %03d.mp4

如果您需要更精细的分割,您可以使用 OpenCV 读取原始视频并将所需的帧写入新的分割。检查这些:“使用 OpenCV 创建视频”“根据多个起始和结束帧索引将视频分割为多个块”

相关内容