我正在尝试使用 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 命令放在批处理文件中,如何进行转义。
多谢。