47 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
			
		
		
	
	
			47 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
#!/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") |