吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1684|回复: 8
收起左侧

[Python 原创] 批量调整MP3音频的音量并且保存MP3元数据

[复制链接]
nhjjgjjg 发表于 2025-8-18 10:29
[Python] 纯文本查看 复制代码
import os

from mutagen.id3 import APIC, ID3
from mutagen.mp3 import MP3
from pydub import AudioSegment

input_dir = "E:\Music" # 输入文件夹路径
output_dir = "E:\Music_new" # 输出文件夹路径
target_lufs = -16  # 目标响度值

# 创建输出目录
os.makedirs(output_dir, exist_ok=True)

for file in os.listdir(input_dir):
    if file.lower().endswith(".mp3"):
        input_path = os.path.join(input_dir, file)
        output_path = os.path.join(output_dir, file)

        try:
            # 读取原始元数据
            audio = MP3(input_path, ID3=ID3)
            id3_data = ID3(input_path)

            # 获取所有元数据标签
            tags = {}
            for frame in id3_data.values():
                if frame.FrameID in ["TIT2", "TPE1", "TALB", "TCON", "TRCK", "TDRC"]:
                    tags[frame.FrameID] = str(frame)
                elif frame.FrameID == "APIC":
                    tags["APIC"] = frame

            # 处理音频
            sound = AudioSegment.from_mp3(input_path)
            gain = target_lufs - sound.dBFS
            normalized = sound.apply_gain(gain)

            # 导出音频(临时文件)
            temp_output = output_path + ".temp.mp3"
            normalized.export(temp_output, format="mp3", bitrate="192k")

            # 将元数据复制到新文件
            new_audio = MP3(temp_output, ID3=ID3)
            new_audio.delete()  # 删除可能存在的空标签

            # 添加原始ID3标签
            for frame_id, value in tags.items():
                if frame_id == "APIC" and isinstance(value, APIC):
                    # 添加封面图片
                    new_audio.tags.add(value)
                elif frame_id in ["TIT2", "TPE1", "TALB", "TCON", "TRCK", "TDRC"]:
                    # 添加文本标签
                    frame_class = globals()[frame_id]
                    new_audio.tags.add(frame_class(encoding=3, text=value))

            # 保存元数据
            new_audio.save()

            # 重命名文件(移除临时后缀)
            os.rename(temp_output, output_path)
            print(f"成功处理: {file}")

        except Exception as e:
            print(f"处理 {file} 时出错: {str(e)}")
            # 如果出错,删除临时文件
            if os.path.exists(temp_output):
                os.remove(temp_output)



因为下载的本地音乐用foobar2000播放时音量不同,通过AI生成了可以调整音量的代码
需要安装以下依赖
[Plain Text] 纯文本查看 复制代码
dependencies = [
    "audioop-lts>=0.2.2",
    "ffmpeg-python>=0.2.0",
    "mutagen>=1.47.0",
    "pydub>=0.25.1",
]

免费评分

参与人数 2吾爱币 +6 热心值 +2 收起 理由
hrh123 + 5 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
amouer + 1 + 1 我很赞同!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

李佑辰 发表于 2025-8-18 16:02
可以 可以要是有打包好的exe就更好了。
rjyq168 发表于 2025-8-18 13:24
 楼主| nhjjgjjg 发表于 2025-8-18 13:46
rjyq168 发表于 2025-8-18 13:24
请问代码怎么用?

首先要安装python,并且安装依赖,创建.py文件,把代码复制进去运行,我是用的uv创建项目
Stamatis 发表于 2025-8-18 15:43
有打包好的吗?楼主。。。。exe文件的。
fq7944 发表于 2025-8-28 15:27
依赖全部安装好了~但是还是运行不起来啊?请问这个怎么用啊楼主??
 楼主| nhjjgjjg 发表于 2025-8-28 18:41
fq7944 发表于 2025-8-28 15:27
依赖全部安装好了~但是还是运行不起来啊?请问这个怎么用啊楼主??

输入文件夹路径和输出文件夹路径要改成你自己的
fq7944 发表于 2025-8-29 08:57
nhjjgjjg 发表于 2025-8-28 18:41
输入文件夹路径和输出文件夹路径要改成你自己的

我已经在E盘新建了Music文件夹和Music_new文件夹了啊
徐州鑫匠 发表于 2025-9-4 10:27
刚 百度了一下  可以用  mp3gain  这个软件来批量调整音量大小
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - 52pojie.cn ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2026-4-17 06:35

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表