diff --git a/app.py b/app.py new file mode 100644 index 0000000..0065a26 --- /dev/null +++ b/app.py @@ -0,0 +1,72 @@ +# -*- coding:utf-8 -*- +""" +拖单个音频倍速 + +""" +import os +import re +import subprocess +import sys + + +def get_files(path): + res = [] + r = os.listdir(path) # 列出文件夹下所有的目录与文件 + for i in r: + file_path = os.path.join(path, i) + if os.path.isfile(file_path) and file_path.endswith('mp3'): + if re.match(r'.*x[\d\.]+\.mp3$', file_path): + continue + res.append(file_path) + return res + + +def a_speed(input_file, speed, out_file): + try: + cmd = "ffmpeg.exe -y -i %s -filter_complex \"atempo=tempo=%s\" %s" % (input_file, speed, out_file) + res = subprocess.call(cmd, shell=True) + + if res != 0: + return False + return True + except Exception: + return False + + +def change_speed(file, x, error_info): + res = a_speed(file, x, re.sub(r'(\.mp3$)', f'_x{x}.mp3', file)) + if not res: + error_info.append(f'{file} to {x} error') + + +def handler_file(file): + error_info = [] + change_speed(file, '1.5', error_info) + change_speed(file, '3', error_info) + print('*' * 20) + for i in error_info: + print(i) + + +def handler_dir(root_dir): + files = get_files(root_dir) + error_info = [] + for file in files: + change_speed(file, '1.5', error_info) + change_speed(file, '3', error_info) + + print('*' * 20) + for i in error_info: + print(i) + + +def run(path): + if os.path.isfile(path): + handler_file(path) + else: + handler_dir(path) + + +if __name__ == "__main__": + path = sys.argv[1] + run(path) diff --git a/ffmpeg.exe b/ffmpeg.exe new file mode 100644 index 0000000..b0f97ea Binary files /dev/null and b/ffmpeg.exe differ