批量合并视频文件集?

use*_*--- 2 video windows batch merge

我有 158 个文件夹,每个文件夹包含 5-15 个视频文件,每个文件长几分钟。我想将所有视频合并到每个文件夹一个视频中,然后删除其余的。

文件夹以某一年的日期命名,之间有间隔(01.1101.1201.1301.1401.18... 01.2802.01等),其中的文件命名如下:

ds_AAAAA_BB_CCC_480.mp4

第一个空白 ( AAAAA) 是该文件夹中所有文件都相同的数字。对于文件夹01.11,数字为03075,此后每个文件夹的数字加一。

第二个空白 ( BB) 是文件的顺序,从 01 到该文件夹​​中的文件数量。

第三个空格 ( CCC) 是一组三个字母,每个文件各不相同,可以忽略。

举几个例子,第一个文件夹 ( 01.11) 中的第一个文件是ds_03075_01_nws_480.mp4. 第四个文件夹 ( ) 中的最后一个(第 7 个)文件01.14ds_03078_07_zen_480.mp4.

理想情况下,我希望新文件位于单独的文件夹中(只是为了方便删除旧文件),并以 、 等格式命名01_11.mp401_12.mp4但任何命名约定都可以。

有人对如何解决这个问题有任何建议吗?

ben*_*erd 5

我最近一直在合并(连接)视频,我发现这个答案非常有用。首先,安装ffmpeg并确保它在您的路径上。

您必须为每个目录创建一个文件列表,其中包含以下格式的文本文件:

file `file1.mp4`
file `file2.mp4`
file `file3.mp4`
Run Code Online (Sandbox Code Playgroud)

然后你只需使用以下语法运行 ffmpeg:

ffmpeg -f concat -i filelist.txt -c copy merged.mp4
Run Code Online (Sandbox Code Playgroud)

我是为一些文件手动构建的,但对于 158 个文件夹,您需要一些自动化。我采取的方法可能是使用FORWindows 命令提示符中的命令。您可以使用以下方法生成文件列表:

for /r %f in (*.mp4) do echo file '%~nxf' >>%~dpf\concat.txt
Run Code Online (Sandbox Code Playgroud)

此递归 ( /r) 扫描当前文件夹和所有子文件夹中的 MP4 文件,并将名称和扩展名(即位)回显(打印)nx到每个子文件夹中的单独文件(该dp位获取驱动器号和路径)。该>>位使其将文件名附加到列表中,因此如果运行两次,您将得到一个重复的列表。concat.txt因此,在运行命令之前删除所有文件。

然后你想在每一个上运行 ffmpeg。你需要类似的东西:

for /d %f in (*) do cd %~ff & ffmpeg -f concat -i concat.txt -c copy ..\merged\%~nf.mp4
Run Code Online (Sandbox Code Playgroud)

对于每个目录 ( /d),更改为 ( cd),然后 ( &) 运行 ffmpeg,生成一个结果文件,该文件位于顶级文件夹的“merged”文件夹中,并以文件夹名称命名。

未经测试,因此使用风险自负。(尽管它不会在没有询问的情况下删除或覆盖任何内容。)