Python拆分mp3频道

时间:2013-04-15 15:33:37

标签: python mp3

我想用Python分隔mp3文件的通道,并将其保存在另外两个文件中。 有没有人知道这个库。 提前谢谢。

1 个答案:

答案 0 :(得分:1)

我假设您想要无损地拆分频道,而无需解码MP3并对其进行重新编码 - 否则您根本不会提及MP3并且很容易找到许多工具,例如 Audacity 来做到这一点

MP3帧有4种通道模式 - 这意味着4种类型的MP3文件:简单立体声,联合立体声,双声道,单声道。联合立体声文件无法分割而不会丢失。单声道文件不需要拆分。其余:立体声和双声道,由不到0.1%的所有MP3文件组成,技术上可以分成2个文件,每个文件用于一个频道,不会丢失。但是,互联网上没有任何工具可以做到这一点 - 不是任何命令行工具,也不是任何GUI工具,因为很少需要这个功能。

你也没有任何python库。大多数库将MP3文件抽象为一个可以在解码后操作的公共音频。 pymad是唯一一个特定于MP3文件的文件,它可以判断文件是否正在使用4种通道模式中的任何一种,但不提供在不解码的情况下提取通道。如果您编写新工具,则必须处理原始MP3文件或为其生成库。

为它编写工具或库并不容易。它是一个具有2个通道的流,而不是在帧级交错的两个流。你不能简单地处理MP3帧,删除一些帧,保留其他帧,并设法以这种方式提取频道。这对于专业人士来说是一项任务,也许最好发生在解码器项目中(如 lame libmad )而不是文件处理项目(如 mp3info 或python eyeD3 )。换句话说,这个特性很可能是用C语言编写的,而不是用python编写的。


实施注意:

构建此类工具的任务因此非常适合计算机科学C编程语言课程项目: 1.这需要很多时间; 2.它要求从C编程课程中学到的每一项技能; 3.它容易出错; 4.它可能建立在其他项目的工作基础之上,是适应现有工作的一课; 5.这是一项非常艰苦的努力,以前没有人做过,因而非常有益 6.也许可以用300条困难的代码行代替臃肿简单的Visual Basic代码,因此是一种谦虚和质量的好习惯; 7.最后:没有人急着等待工作实施。

所有条件都非常适合C编程课程项目。

实施说明2:

某些比特率只能在单声道模式(80kbps)下使用,而某些比特率只能在立体声模式下(例如320kpbs)。幸运的是,这并没有在这个任务中出现问题,因为所有双mp3比特率都可以映射到一个合适的mono-mp3比特率 - 但反之亦然!