python如何将aac转为mp3,保持原有目录结构
目录
- 将aac转为mp3,保持原有目录结构
- 需要提前安装FFmpeg
- 使用脚本
- 总结
将aac转为mp3,保持原有目录结构
需要提前安装FFmpeg
import os impopythonrt subprocess import time from concurrent.futures import ThreadPoolExecutor, as_completed def convert_file(input_path, output_path): command = [ 'ffmpeg', '-y', # 自动覆盖现有文件 '-i', input_path, '-acodec', 'libmp3lame', '-b:a', '192k', output_path ] try: subprocess.run(command, check=True, stderr=subprocess.PIPE, timeout=300) # 5分钟超时 return f"Converted: {output_path}" except subprocess.CalledProcessError as e: return f"Error converting {input_path}: {e.stderr.decode()}" except subprocess.TimeoutExpired: return f"Timeout converting {input_path}" def convert_aac_to_mp3(input_dir, output_dir): start_time = time.time() total_files = 0 processed_files = 0 converted_files = 0 with ThreadPoolExecutor(max_workers=os.cpu_count()) as executor: futures = [] for root, _, files in os.walk(input_dir): for filename in files: if filename.lower().endswith('.aac'): total_files += 1 http://www.devze.com input_path = os.path.join(root, filename) rel_path = os.path.relpath(root, input_dir) output_filename = os.path.splitext(filename)[0] + '.mp3' output_path = os.path.join(output_dir, rel_papythonth, output_filename) os.makedirs(os.path.dirname(output_path), exist_ok=True) python futures.append(executor.submit(convert_file, input_path, output_path)) for future in as_completed(futures): result = future.result() print(result) processed_files += 1 if "Converted" in result: converted_files += 1 print(f"Progress: {processed_files}/{total_files} files processed") end_time = time.time() print(f"\nConversion completed.") print(f"Total files: {total_files}php") print(f"Converted files: {converted_files}") print(f"Failed conversions: {total_files - converted_files}") print(f"Total time: {end_time - start_time:.2f} seconds")
使用脚本
input_dir = input("请输入包含 AAC 文件的目录路径: ") output_dir = input("请输入 MP3 文件的输出目录路径: ") convert_aac_to_mp3(input_dir, output_dir)
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程客栈(www.devze.com)。
精彩评论