2012-07-25 152 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