随笔 - 633,  文章 - 0,  评论 - 13,  阅读 - 48万
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
复制代码
# 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)
复制代码

 

posted on   大话人生  阅读(177)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 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计算内存百分比脚本
点击右上角即可分享
微信分享提示