pygame播放MP3时如何调播放位置?

简短版本:“线性”是你想要的。*所以,你想要的功能是adpcm2lin


你如何使用它? audioop中的几乎所有内容都以相同的方式工作:循环遍历帧,并在每个帧上调用一个函数。如果您的输入数据具有某些固有的帧大小,例如当您从MP3文件(使用外部库)读取时,或者输出库需要某些特定的帧大小时,您对帧的确定方式有点受限。但是,当您处理原始PCM格式时,帧可以是您想要的任何大小,从单个样本到整个文件。** 为简单起见,我们先做整个文件:

如果您的adpcm文件太大而无法加载到内存中并立即处理所有文件,则需要跟踪state,因此:


当然,我假设你不需要转换采样率或做任何其他事情。如果您这样做,任何此类转换都应在ADPCM解压缩之后进行。***


*长版本:“线性”表示样本直接编码,而不是通过另一种算法映射。例如,如果您有一个16位的A-to-D,并且您将音频保存在8位线性PCM文件中,那么您只需保存每个样本的前8位。这给你一个非常动态的范围,所以更安静的声音在噪音中迷失。有各种压缩扩展算法可以为相同数量的位提供更宽的动态范围(当然,代价是丢失其他地方的其他信息);有关它们如何工作的详细信息,请参阅μ-law算法。但如果你能保持16位,线性就好了。 **实际上,对于4位原始ADPCM,你真的不能做一个样本...但你可以做2个样本,这是足够接近的。 ***如果你真的很挑剔,你可能想先转换为32位,然后再做工作,然后转换回16位以避免累积损失。但是当你开始使用4位ADPCM时,你不会在这里寻找发烧友的声音。

}

我要回帖

更多关于 python pygame模块 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信