繁体   English   中英

Python在Mac OS上以块的形式解码MP3

[英]Python decode MP3 in chunks on Mac OS

我有一个Tornado Python服务器,它一次接受一个可变比特率mp3文件(块由固定数量的帧组成)。

我正在做的就是向前传递二进制文件,但是,我想知道块的持续时间。 因为它是可变比特率我不能做一个简单的计算。 我正在研究pymedia,但我在Mac OS上开发,似乎pymedia无法在那里安装(此外,它自2006年以来一直没有更新)。 我也试过pymad但是无法安装它(自2007年以来它没有更新),无论如何它似乎更加以文件为中心。

理想情况下,我想,该方式从每个块中提取比特率诱变会为例子。 但是,mutagen需要一个文件作为输入,而我希望输入一个mp3帧或一系列这样的帧。

def _on_read_frames(self, data):
  logging.info('read from input:\n%s', data)
  binary_audio = base64.b64decode(data)
  # need to find out how many miliseconds went by here

更新:这是近实时流式架构的一部分,因此mp3以小块编码,因此我目前的解决方案是使用恒定比特率,这允许简单的计算,我意识到使用可变比特率几乎没有任何好处这里。

每帧有1,152个样本,因此如果您的块是固定数量的N帧,那么您的块是固定长度的N*1152样本。 要将其转换为milleseconds,您需要从帧头中查找采样率。

你只需要一个MP3解析器。 这是一个完整的解码器的源代码: https//bitbucket.org/portalfire/pymp3,包括帧头解析代码,这是你真正需要的。

以下是有关格式的更多文档: http//www.codeproject.com/Articles/8295/MPEG-Audio-Frame-Header

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM