# encoding=utf8 #-*-coding:utf-8 -*- #pip install natsort import wave import os import time import natsort # infiles = ["你好_1.mp3", "不好_1.mp3"] # outfile = "out_put.mp3" # # data= [] # for infile in infiles: # w = wave.open(infile, 'rb') # data.append( [w.getparams(), w.readframes(w.getnframes())] ) # w.close() # # output = wave.open(outfile, 'wb') # output.setparams(data[0][0]) # output.writeframes(data[0][1]) # output.writeframes(data[1][1]) # output.close() def hebing(output_path,yinpin_houzui="mp3"): allMp3Files = [] # 开始合并之前,先重命名文件夹下的文件,一般是做去除空格处理 # reName(orginalFilePath) # 合并多个mp3的函数 for parent, dirnames, filenames in os.walk(output_path): for filename in filenames: print(filename) # 对文件进行重命名 oldFilePath = os.path.join(parent, filename) wenjain_houzu = os.path.splitext(filename)[-1] #获取文件后缀 print(wenjain_houzu) if yinpin_houzui.lower() in wenjain_houzu.lower(): allMp3Files.append(oldFilePath) # 重命名文件夹下的内容,一般是做去除空格处理 print(allMp3Files) # 因为要用管道命令 ffmpeg -i "concat:{}" -codec copy output.mp3,所以要将列表分割为以|分隔的字符串 # 实现排序 # pattern_number_sort = '_?(\d*?).mp3' sortedfileList = natsort.natsorted(allMp3Files) # 文件名排序 print(sortedfileList) infiles = sortedfileList today_time = time.strftime("%Y-%m-%d", time.localtime(time.time())) wenjiajia = output_path.split("\\")[-1] outfile = "%s\\%s_hebing_%s.mp3" % (output_path,wenjiajia,today_time) print(outfile) data = [] for infile in infiles: w = wave.open(infile, 'rb') data.append([w.getparams(), w.readframes(w.getnframes())]) w.close() print("data:") # print(data) print(len(data)) # print(data[0][0]) # print(data[1][1]) output = wave.open(outfile, 'wb') output.setparams(data[0][0]) for i in range(0,len(data)): #合并各个音频 output.writeframes(data[i][1]) output.close() if __name__ == '__main__': genmulu = r"D:\PycharmProjects\xiaoxiaomu\小工具" wenjianjia_list = [ '1-第二部分_第一章', '2-第一部分-第一章', '3-第一部分-第二和三章', '4-第一部分-第四章', '5-第一部分_第五章', '6-第一部分_第六章', '7-第一部分_第七章', ] zhangjie_list = [] for one in wenjianjia_list: zhangjie_list.append("%s\\%s"%(genmulu,one)) print(zhangjie_list) for one_out_path in zhangjie_list: output_path = one_out_path # 输出目录 hebing(output_path)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
2020-03-09 shell36判断8000端口是否被占用并杀死占用端口进程
2020-03-09 shell35变量内容替换
2020-03-09 shell34索引与切片
2020-03-09 shell33变量删除
2020-03-09 shell32小数运算
2020-03-09 shell31while语句
2020-03-09 shell30计算内存百分比脚本