开发者

python如何将aac转为mp3,保持原有目录结构

开发者 https://www.devze.com 2024-11-08 09:16 出处:网络 作者: nongcunqq
目录将aac转为mp3,保持原有目录结构需要提前安装FFmpeg使用脚本总结将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)。

      0

      精彩评论

      暂无评论...
      验证码 换一张
      取 消

      关注公众号