#!/usr/bin/python # coding=utf-8 #音频文件压缩 from pydub import AudioSegment import os, sys total = 0 def compress(path): global total if path.find(" ") != -1: print("文件名包含空格, 请处理: " + path) return arr = os.path.splitext(path) format = arr[1].replace(".", "") size_kb_pre = os.path.getsize(path)/1024 audio = None changed = False if format == "ogg": audio = AudioSegment.from_ogg(path) elif format == "mp3": audio = AudioSegment.from_mp3(path) if audio: if audio.channels >= 2: audio = audio.set_channels(1) changed = True if audio.frame_rate > 32000: audio = audio.set_frame_rate(32000) changed = True if changed: audio.export(path, format=format,tags={'artist': 'AppLeU0', 'album': path}) size_kb_later = os.path.getsize(path)/1024 total = total + (size_kb_pre - size_kb_later) print("压缩: " + str(size_kb_pre) + "KB -> " + str(size_kb_later) + "KB 总计: " + str(size_kb_pre - size_kb_later) + "KB") if __name__ == '__main__': for root , dirs, files in os.walk(sys.argv[1]): for name in files: if name.endswith('.mp3') or name.endswith('.ogg'): compress(os.path.join(root, name)) print(f"压缩完成, 总计节省: {total}KB")