![使用 avconv 递归地将 mkv 转换为 mp4](https://linux22.com/image/1428458/%E4%BD%BF%E7%94%A8%20avconv%20%E9%80%92%E5%BD%92%E5%9C%B0%E5%B0%86%20mkv%20%E8%BD%AC%E6%8D%A2%E4%B8%BA%20mp4.png)
我需要创建一个脚本,可以将起始目录及其下的所有子目录中的所有 .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 限制更多,后者基本上可以包含所有编解码器。