Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/301.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python中的Mp3解析_Python_Mp3 - Fatal编程技术网

Python中的Mp3解析

Python中的Mp3解析,python,mp3,Python,Mp3,这是我一段时间以来一直试图做的事情,更像是一个开放式问题。如果任何人有任何知识,可以帮助我阐明这一点,它将非常感谢 我想解码mp3中的音频流,并使用它来驱动动画,所有这些都使用python。据我所知,mp3中的音频数据存储在32个频率子带(或频率箱)的帧中,这对我来说非常理想-如果我可以拿一个mp3并提取每个帧上每个子带的振幅,这将非常适合我想要做的事情 我在这里找到了一个解决方案,所有的处理似乎都是用python完成的。它相当慢,但即使我可以用它来提取我想要的东西,那也很好——尽管我很难理解代

这是我一段时间以来一直试图做的事情,更像是一个开放式问题。如果任何人有任何知识,可以帮助我阐明这一点,它将非常感谢

我想解码mp3中的音频流,并使用它来驱动动画,所有这些都使用python。据我所知,mp3中的音频数据存储在32个频率子带(或频率箱)的帧中,这对我来说非常理想-如果我可以拿一个mp3并提取每个帧上每个子带的振幅,这将非常适合我想要做的事情

我在这里找到了一个解决方案,所有的处理似乎都是用python完成的。它相当慢,但即使我可以用它来提取我想要的东西,那也很好——尽管我很难理解代码中发生了什么。我还有一个解决方案,我将其转换为wav,然后使用fft从wav中提取频率。这是非常嘈杂,似乎是一种愚蠢的方式,因为我想要的数据直接存储在mp3中-转换回声波似乎没有必要。这实际上比第一次快。以下是我最终得到的结果:

好吧,如果有人有任何建议,或者他们想分享的经验,或者关于图书馆的想法,我真的很想听听

谢谢

亨利看一看:

嗅探一下源代码,看看他们是如何做到的

他们还使用了FFT在波输出上,但实时,并不像你认为的那样在Raspberry Pi上很好。 他们可能会切换到余弦变换,因为它速度更快,如果直接检查MP3帧,这就是你要做的,因为MP3是余弦变换编码的

所以,你们首先要知道哪个箱子和现实世界中的哪个频率相似

在pypi.python.org上,现在有AV或ffmpeg直接绑定,允许您逐帧解码,但我不知道您是否可以从表示帧的对象中提取频率,或者您必须首先转换为原始频率

如果我是你,我会使用你找到的纯Python MP3代码来提取我需要的内容,并在过程中对其进行优化。如果需要,使用cython


但这种方法限制了你只听MP3。Lightshow Pi适用于几乎所有的压缩类型。

您可能需要浏览一次,以查看大量可用的库。有许多MP3库,询问使用哪种机制的建议正是像这样的问答论坛不擅长处理的事情。我可以给出一条建议:如果你知道如何使用cython、ctypes或任何其他类似的机制,那么值得一看像mpg123这样没有任何Python绑定的C库,然后把你需要的东西包起来。你有更多的选择。我想在我的一个爱好项目中做同样的事情。我曾经尝试过abanert的方法,进展到一定程度,但时间和精力都用完了。。。