批处理:合并 mkv 文件的特定部分

批处理:合并 mkv 文件的特定部分

我有几个 MKV 文件的文件夹。每个文件夹包含带有英文音轨和良好视频质量的系列剧集,同一集带有波斯语配音音轨(也是英文),但视频轨道质量很差。我想使用批处理文件从同一目录中的“series S01E01 eng.mkv”等文件中获取视频和英文音轨,从“series S01E01 Far.mkv”中获取波斯语音轨,并将波斯语音轨设置为默认音轨,并创建“series S01E01 DUB.mkv”,然后创建下一集直至结束。

不幸的是,我找不到一个程序或批处理文件来为所有剧集完成这项工作,手动处理超过 houndred 文件需要几个小时。我该怎么办?任何可以执行此操作或批处理的程序都会非常有帮助。谢谢

答案1

您可以使用 ffmpeg 通过几个步骤完成此操作。

  1. 用于ffmpeg -i filename.mkv列出文件信息
  2. 从输出中,您将看到列出的包含的流,记下您想要的流的编号,我们希望所需的流在所有文件中的编号相同,请检查几个。否则,编写该过程的脚本将不会简单。
  3. 假设你需要提取流 0 和流 2,其中 0 是视频,2 是所需音频,然后ffmpeg -i filename.mkv -c copy -map 0:0 filename.mp4&ffmpeg -i filename.mkv -c copy -map 0:2 filename.m4a
  4. 然后您可以将这些分离的流写入新文件ffmpeg -i filename.mp4 -i filename.m4a -c:v copy -c:a copy filename.new.mkv
  5. 将所有想要的视频和音频文件复制到一个新目录,然后只要它们的名称相同(扩展名不同),您就可以将它们合并回您想要的文件中。

显然您想自动执行此操作,在 Windows 的批处理文件中,您可以使用 %% 作为替换,这应该是合并,从命令行仅使用一个 % 进行替换。

for %%a in ("*.mp4") do ffmpeg -i "%%~na.mp4" -i "%%~na.m4a" -c:v copy -c:a copy "%%~na.new.mkv"

如果你确定每个文件中的流都是相同的,那么你可以使用类似的替换来编写单独的视频和音频文件。注意:如果你想用该行编写批处理文件,则只有一个 % 使用 %%

for %a in ("*.mkv") do ffmpeg -i "%~na.mkv" -map 0:2 -c copy "%~na.m4a"&for %a in ("*.mkv") do ffmpeg -i "%~na.mkv" -map 0:0 -c copy "%~na.mp4"

相关内容