单个示例

单个示例

我有一堆内容各异的 .mkv 文件,所以我不知道它们的音频、字幕、章节和附件内容。共同点:它们都有一个视频轨道。

我想批量替换视频轨道仅有的用重新编码的版本,保持文件的其余部分(包括音频、字幕、章节和附件)完好无损。最简单的方法是什么?之前的问题总是对文件的其他内容做出假设,因此并不适用 - 此外,需要批处理模式。

如果其中一种更适合这项工作,那么可以使用 x264、ffmpeg 或 avconv。

答案1

单个示例

用于ffmpeg重新编码视频流并流复制其他一切:

ffmpeg -i original.mkv -map 0 -c copy -c:v libx264 output.mkv
  • 查看各种编码指南了解您想要的任何格式的信息。

  • 来自第一个输入的所有流(标记为0且在本例中为唯一输入)都映射为-map 0。否则默认流选择每种类型仅映射一个流。例如,如果您的输入有多个音频流,则使用-map 0将映射所有流,而不是仅映射一个。


猛击for 循环

对当前目录中的所有 MKV 文件执行与上述相同的操作,并将其输出到名为的目录中outputdir

mkdir outputdir
for i in *.mkv; do ffmpeg -i "$i" -map 0 -c copy -c:v libx264 outputdir/"${i%.mkv}.mkv"; done
  • 奇怪的"${i%.mkv}.mkv"是使用参数扩展。对于您来说,您可以简单地使用"$i",但如果您的输入容器格式与输出容器格式不同,则它很有用。例如,如果没有参数扩展,并且您的输入是 MKV 而输出是 MP4,那么输出最终将被命名为output.mkv.mp4

相关内容