使用python将多个mp3或者wma合并成一个mp3
环境:win10,python.3.8.10
任务:将一个文件夹内的多个mp3或者wma合并成一个mp3。
来源:最近想听评书,从网上下载了些,但是是001.mp3,002.mp3,003.mp3。我买了一个收音机,放tf卡的,需要把这些mp3拷贝到卡上,然后放到收音机收听。
问题是,播放的时候,它不按001,002,003这样的顺序,于是,我想到先在电脑上,把分别的mp3,按照顺序先合并成一个mp3,然后拷贝到卡上。
下载的评书中,还有不少是wma格式的,同样是上面问题。因为收音机只能播放mp3,所以需要多一步转化成mp3的步骤。
准备工作:
(1)电脑中需要有ffmpeg,并设置好环境变量。
(2)需要安装pydub库,pip38 install pydub
直接上代码(感谢gpt):
一、多个mp3合并成一个mp3
from pydub import AudioSegment#pip38 install pydub
#同时,你还需要确保 ffmpeg 已安装。可以通过以下命令安装 ffmpeg(适用于 CentOS),sudo yum install ffmpeg
#windows系统安装ffmpeg,安装完毕后,在cmd中直接输入ffmpeg查看是否成功
import os
def merge_mp3_files(input_folder, output_file):
# 获取文件夹中所有 mp3 文件
mp3_files = [f for f in os.listdir(input_folder) if f.endswith('.mp3')]
mp3_files.sort() # 按名称排序,以确保按顺序合并
# 初始化一个空的音频段
combined = AudioSegment.empty()
# 依次加载和合并 mp3 文件
for mp3_file in mp3_files:
mp3_path = os.path.join(input_folder, mp3_file)
audio = AudioSegment.from_mp3(mp3_path)
combined += audio
# 导出合并后的音频文件
combined.export(output_file, format='mp3')
# 输入文件夹路径
input_folder = "D:/xx/千秋是非话寇准"
# 输出文件路径
output_file = "D:/xx/千秋是非话寇准/merged.mp3"
# 合并 mp3 文件
merge_mp3_files(input_folder, output_file)
二、多个wma合并成mp3
from pydub import AudioSegment
import os
import subprocess
def convert_wma_to_mp3(input_folder, output_folder):
# 获取文件夹中所有 wma 文件
wma_files = [f for f in os.listdir(input_folder) if f.endswith('.wma')]
# 遍历每个 wma 文件,并转换为 mp3 格式
for wma_file in wma_files:
wma_path = os.path.join(input_folder, wma_file)
mp3_file = os.path.splitext(wma_file)[0] + '.mp3' # 使用相同的文件名,但更改扩展名为 mp3
mp3_path = os.path.join(output_folder, mp3_file)
subprocess.run(['ffmpeg', '-i', wma_path, mp3_path])
def merge_mp3_files(input_folder, output_file):
# 获取文件夹中所有 mp3 文件
mp3_files = [f for f in os.listdir(input_folder) if f.endswith('.mp3')]
mp3_files.sort() # 按名称排序,以确保按顺序合并
# 初始化一个空的音频段
combined = AudioSegment.empty()
# 依次加载和合并 mp3 文件
for mp3_file in mp3_files:
mp3_path = os.path.join(input_folder, mp3_file)
audio = AudioSegment.from_mp3(mp3_path)
combined += audio
# 导出合并后的音频文件
combined.export(output_file, format='mp3')
# 输入文件夹路径(包含 WMA 格式的音频文件)
input_folder = "D:/xx/田连元评书水浒传wma"
# 输出文件夹路径(用于存储转换后的 MP3 格式音频文件)
output_folder = "D:/xx/田连元评书水浒传mp3"
# 转换 WMA 文件为 MP3 格式
convert_wma_to_mp3(input_folder, output_folder)
# 输入 MP3 文件夹路径(包含转换后的 MP3 格式音频文件)
mp3_input_folder = output_folder
# 输出合并后的 MP3 文件路径
output_file = "D:/xx/田连元评书水浒传/merged.mp3"
# 合并 MP3 文件
merge_mp3_files(mp3_input_folder, output_file)
友情提示:
虽然上述代码可以将多个mp3或者wma合并,但是最好也不要一次合并太多,我一般20个合并成一个,贪多容易出错。