在 OS X 中将文件夹中的所有音乐文件转换为特定格式,并保留文件夹层次结构?

在 OS X 中将文件夹中的所有音乐文件转换为特定格式,并保留文件夹层次结构?

我的音乐收藏有点太大,我的汽车音响无法容纳。不过,其中大部分都是 256 kbit/s MP3。我现在的计划是将所有曲目转换为 192 kbit/s MP3。这样它们就都适合了。

我的图书馆是按文件夹组织的,我想保留这种层次结构。

如何将所有曲目转换为 192 kbit/s MP3 并将它们放在不同根目录中的同一文件夹层次结构中?

答案1

xAct 将批量编辑您的 MP3。只需在 Google 上搜索 osx batch mp3 conversion,您就能找到所有可以为您处理此问题的实用程序。

答案2

我自己用一个小的python脚本和lame解决了这个问题。这是python脚本:

import os
import sys
from os.path import join
from subprocess import call

class Converter:
    def convert(self, in_file_name, out_file_name):
        if os.path.isfile(out_file_name):
            return

        out_dir = os.path.dirname(out_file_name)
        if not os.path.isdir(out_dir):
            print '!!!!!!!!!!!!!'
            print 'creating ' + out_dir
            print '!!!!!!!!!!!!!'
            os.makedirs(out_dir)

        print 'now converting ' + in_file_name + ' to ' + out_file_name

        call(['lame', '-h', in_file_name, out_file_name])

    def _is_supported_audio_format(self, format):
        return format.lower() in ['mp3', 'aac']

    def copyAndConvertAll(self, in_root, out_root):
        originalRoot = None
        for root, dirs, files in os.walk(in_root):
            # to ensure we get the correct path, not just something relative
            if originalRoot == None:
                originalRoot = root

            for file in files:
                if self._is_supported_audio_format(file[-3:]):
                    targetFileName = join(out_root, join(root, file)[len(originalRoot):])
                    self.convert(join(root, file), targetFileName)


if __name__ == '__main__':
    converter = Converter()
    converter.copyAndConvertAll(sys.argv[1], sys.argv[2])

只需通过 python convert.py [源目录] [目标目录] 调用它,例如 python convert.py /Users/MyUser/Music /Users/MyUser/ConvertedMusic

相关内容