如何在 Windows 上使用 ffmpeg 从视频中提取多个非常规片段?

如何在 Windows 上使用 ffmpeg 从视频中提取多个非常规片段?

我正在尝试使用 ffmpeg 从视频中提取一些片段(并可选择将它们组合起来)......但进展并不顺利。

与我在这里、在 ffmpeg 文档中以及其他地方找到的各种示例相比,我不想定期提取片段。

从多个来源收集一些信息后,我认为我可以做类似的事情:-

ffmpeg -f concat -i seg.txt -c copy out_%03d.mp4

但由于一些问题,这似乎不起作用......

  • 'out_%03d.mp4' 没有扩展为 out_001.mp4、out_002.mp4 等;并且
  • 输入文件规范被标记为“有问题”时存在各种问题;请参阅“seg.txt”文件底部的条目...

seg.txt的内容:

#file 'e:\tmp\video\kr.mp4' ... 
file 'KR.mp4'

inpoint  75.0
outpoint 92.0

inpoint  275.0
outpoint 300.0

inpoint  1049.0
outpoint 1082.0

# [eof]

# errors:
#[concat @ 05a6a5c0] Unsafe file name 'E:\tmp\video\kr.mp4'
#seg.txt: Operation not permitted
#seg.txt: Invalid data found when processing input

除了这样做之外,我当然可以做类似的事情:

ffmpeg -i kr.mp4 ^
   -c:v libx264 -pix_fmt yuv420p -r 25 -y ^
   -preset ultrafast -crf 38 ^
      -ss   75.0 -to   92.0 out_001.mp4 ^
      -ss  275.0 -to  300.0 out_002.mp4 ^
      -ss 1049.0 -to 1082.0 out_003.mp4

...但是我需要对每个片段使用的实际命令包括过滤子句,包括字体文件/大小等,以及其他开关...并且包括视频文件/片段的时间路径,以及我可能需要从一个视频中提取 50 多个片段的情况,我达到了命令行 8,192 个字符的限制。

我正在尝试在 Windows 8 32 位上完成所有这些操作,目前在 Windows 的 cmd.exe 下使用 ffmpeg 版本 n6.0-22-g549430e14d-20230529。我无法使用较新的 ffmpeg 版本,因为我没有找到任何较新的 32 位版本。

我将非常感激任何关于如何正确调用 ffmpeg 来做我想做的事情的指示...如何正确指定路径输入文件名..和输出文件的文件掩码...以及如果将 ffmpeg 命令放在批处理文件中,如何进行转义。

多谢。

相关内容