65.9K
CodeProject 正在变化。 阅读更多。
Home

Python MP3 音量标准化和长度分割器

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.03/5 (5投票s)

2024年5月31日

CPOL

3分钟阅读

viewsIcon

15573

downloadIcon

295

一个基于 Tkinter 的脚本,可以调整 MP3 文件的音量,也可以将 MP3 分割成更短的片段。

引言

您是否曾经下载过 MP3,但发现它的音量不够大?我创建了一个实用程序,可以轻松地提高(或降低)MP3 的分贝级别。 使用 ffmpeg 的 -volume 命令可以调整 MP3 文件的音量。

我还包含了一个分割功能,可以将 MP3 分割成所需的长度。

Python 是我最喜欢的编程语言。 我几年前在社区大学学了它。 我喜欢用 Python 编程,因为它简单易懂,而且可以轻松地启动脚本。 我经常下载 YouTube 视频或 MP3 来听(包括播客和教程)。 我经常发现一些有用的片段,但音量太低了,让我不舒服。 所以,我决定创建这个实用程序来提高我电脑上的声音,并包含一个下拉框来选择想要增加的分贝数。

入门

首先,安装 ffmpeg(访问 ffmpeg 网站:https://ffmpeg.net.cn/download.html),并将 ffmpeg 目录添加到路径环境变量中,如下所示。

单击第一个浏览按钮以选择 MP3 的源目录,然后单击第二个浏览按钮以选择目标目录,如图所示。

输入选定的 dB 范围后,单击“标准化”,您的文件将出现在目标目录中,名称中添加了字符串 _n4(以区分它已被修改)。

按照相同的步骤分割文件:只需选择要分割的所需长度,选择 MP3,然后单击“分割”。 生成的文件将从一开始编号,按顺序排列。

此脚本使用两个 ffmpeg 命令:volume 和 segment。 以下是每个命令的示例(它们通常如何使用)。

增加音量(在此示例中,10 是分贝数)

ffmpeg -i input.mp3 filter:a volume= 10 output.mp3

按长度分割(在下面的示例中,300 是秒数)

ffmpeg -i input.mp3 -f segment -segment_time 300 -c copy output.mp3

这是它在代码中的实现方式

subprocess.call(['ffmpeg ', '-i', str(source_dir) + edit_dir_files[i], '-filter:a', 'volume=' + db_level + 'dB', str(dest_dir)+ edit_dir_files[i][:-4] + '_n4.mp3'])
subprocess.call(['ffmpeg ', '-i', str(source_dir) + edit_dir_files[i], '-f', 'segment', '-segment_time', str(seconds), '-c', 'copy', str(dest_dir) +  edit_dir_files[i][:-4] + '_%03d.mp3'])

要使用 ffmpeg 命令,会调用 subprocess 函数(它使用线程库“import threading”)。 subprocess 函数旨在将可执行路径作为输入,以及可选的命令行参数。 要将 ffmpeg 命令的参数输入到 subprocess 调用中,每个单独的参数都用引号引起来,并用逗号彼此分隔。

对于分割的 ffmpeg 命令,正如你从上面看到的,目标文件在名称中包含 %03d(其中 edit_dir_files 是源文件夹中 MP3 的列表,此行的 [i] 部分表示选定的 MP3。 [:-4] 部分表示对于文件名,删除字符串的最后 4 个字符

edit_dir_files[i][:-4] + '_%03d.mp3'

使用 %03d 会自动为所有块添加编号(如 000、001、002 等)。 这确保了这些片段按正确的顺序排列。

如有必要,您可以将其更改为 %02d,以便只有两位小数,如 00、01、02 等。

总而言之,希望这个脚本能帮助你提高 MP3 的音量。 本文包含了源代码,您可以随意修改脚本,并更改不同的变量,例如分贝级别(在脚本中可以是 1,而不是 5 的增量)。

基本原理

如果对 Python 脚本编写和 ffmpeg 命令行工具的基本用法有所了解,将会很有帮助。

结论和关注点

希望您已经学会了一种提高音量或分割 MP3 文件长度的方法。 这个脚本还将向您介绍如何在脚本中使用 ffmpeg。 该脚本仅使用了 ffmpeg 的两个命令(标准化和分割),ffmpeg 提供了许多命令来编辑/操作音频和视频文件。 您可以随意使用此脚本进行修改,一种可能性是将基本的 tkinter GUI 作为您自己项目的基础。 这不一定是一个 ffmpeg GUI,但也许有人可以改进这个脚本。

如果您有任何基于本文的想法或建议,请与我联系。

© . All rights reserved.