2012-07-25 155 views
6

我正在编写一个脚本来将AAC文件转换为MP3,因此我可以将它们刻录到MP3 CD上,因为iTunes不会在运行时进行转码。我修改了代码Write a simple python script to convert all .wav files in a specific folder to .mp3 using lame将AAC(.m4a)文件转换为目录中的.mp3

它目前转换目录中的第一个文件,然后停止。

我有一个粗略的Python知识,但不是子进程模块。浏览了文档,无法明白为什么它不会继续处理这些文件。

#!/usr/bin/env python 

import os 
import os.path 
import sys 
import subprocess 

OUTPUT_DIR = '/Users/matt/Desktop/mp3/' 

def main(): 
    path = os.getcwd() 
    filenames = [ 
     filename 
     for filename 
     in os.listdir(path) 
     if filename.endswith('.m4a') 
     ] 

    for filename in filenames: 
     subprocess.call([ 
      "ffmpeg", "-i", 
      os.path.join(path, filename), 
      "-acodec", "libmp3lame", "-ab", "256k", 
      os.path.join(OUTPUT_DIR, '%s.mp3' % filename[:-4]) 
      ]) 
     return 0 

if __name__ == '__main__': 
    status = main() 
    sys.exit(status) 
+0

我知道这是一个老问题,你可能已经做到了,但将AAC转换为MP3是一个糟糕的主意,因为你会两次质量下降(都是有损格式)。您应该重新从CD上翻录文件以确保您拥有最优质的MP3。 – Cromulent 2012-12-04 22:06:17

+0

@Cromulent知道!其背景是从我现有的iTunes AAC库中为我的汽车创建MP3 CD(iPhone附件> 180美元),而无需通过iTunes(将MP3文件自动添加到库)来创建。由于我不是通过高保真级别的设备播放音乐,而且我开始使用〜256k + AAC文件,所以损失是可以接受的。 – elithrar 2012-12-05 03:46:25

回答

8

你有一个return 0for循环内。看起来像一个错字。将它左移4个空格,使其与for对齐。

+0

太好了,谢谢。很高兴这只是一个错字;其中一件事你可以盯着和想念。 – elithrar 2012-07-25 12:55:38