osh*_*nen 15 mp4 aac 12.04 avconv
我有大约 70 个 mp4 文件,我想直接提取音频文件而无需进一步转码。所有 mp4 文件都有 aac 音频文件。
我知道我可以使用以下命令从 mp4 文件之一中提取音频文件:
avconv -i "INPUT FILE" -map 0:1 -c:a copy "OUTPUT FILE"
Run Code Online (Sandbox Code Playgroud)
我如何从所有 70 个 mp4 文件中提取所有音频文件,所以我最终得到 70 个 aac 文件?
And*_*son 21
您可以使用一个简单的 for 循环:
for i in *.mp4; do
avconv -i "${i}" -map 0:1 -c:a copy "${i%.mp4}.aac"
done
Run Code Online (Sandbox Code Playgroud)
或在一行上:
for i in *.mp4; do avconv -i "${i}" -map 0:1 -c:a copy "${i%.mp4}.aac"; done
Run Code Online (Sandbox Code Playgroud)
所做的是avconv为每个命名*.mp4的文件运行一次,例如文件名存储在${i}变量中的位置。
${i%.mp4}意味着${i}(即文件名).mp4从末尾剥离。
如果您将所有文件都放在一个目录中,那么肖的回答通常是最有用的;但如果有分散在不同目录下的 MP4 文件,您可以使用此find命令将它们全部转换。
find . -type f -name '*.mp4' -exec bash -c 'avconv -i "$0" -c:a copy "${0/%mp4/m4a}"' {} \;
Run Code Online (Sandbox Code Playgroud)
这在末尾使用了一种略有不同的 bash 字符串替换形式:“${0/%mp4/m4a}”告诉 bash 用 m4a 替换 mp4,但前提是 mp4 位于字符串的末尾。
| 归档时间: |
|
| 查看次数: |
20265 次 |
| 最近记录: |