使用 avconv 递归地将 mkv 转换为 mp4

使用 avconv 递归地将 mkv 转换为 mp4

我需要创建一个脚本,可以将起始目录及其下的所有子目录中的所有 .mkv 文件转换为 .mp4。

我已经能够使用以下方法一次转换一个文件:

avconv -i input.mkv -codec copy output.mp4

转换当前目录中的所有文件并不太难。但经过几个小时的搜索,我找不到以递归方式执行此操作的方法。

我知道我需要使用 find 命令,但是我对 Linux 还比较陌生,我完全不知道如何结合 find 和 avconv 来完成我的需要。

答案1

您需要在 Bash 中启用递归通配符:

shopt -s globstar

然后,一个简单的循环,替换输出文件名:

for f in **/*.mkv; do avconv -i "$f" -c copy "${f%.mkv}.mp4"; done

请注意,对于包含 MP4 容器无法处理的编解码器的视频,此操作可能会失败。MP4 比 MKV 限制更多,后者基本上可以包含所有编解码器。

相关内容