在Python或C++中播放单声道MP3

3 投票
4 回答
1507 浏览
提问于 2025-04-17 05:56

我正在用Python和pyqt编写一个音乐播放器,我希望它能播放单声道的mp3文件。

我已经用pygame实现了这个功能,因为它的混音器有一个特定的参数channels,我可以把它设置为1来实现单声道播放。

不过,pygame对mp3的支持有限,所以我在寻找一个可以处理mp3文件并且支持单声道播放的库。

目前,我在使用pyaudiere来播放音乐,在它的网站上有一个处理歌曲后再播放的例子,也许我可以用这个方法把歌曲转换成单声道,但我真的不知道该怎么做。

我希望能得到关于如何使用pyaudiere或其他可以处理mp3文件的库来编写这个功能的帮助。

编辑

我也接受C++的解决方案,因为我可以使用Boost::python来构建一个Python的包装器。

4 个回答

1

Gstreamer的Python绑定

这里有一个非常简单的音乐播放器:

import gobject
import gst
pipeline = gst.parse_launch('filesrc location="stereo.mp3" ! mad ! audioconvert ! audio/x-raw-int,channels=1 ! autoaudiosink')
pipeline.set_state(gst.STATE_PLAYING)

gobject.threads_init()
gobject.MainLoop().run()

我真的建议你了解一下Gstreamer,因为它已经成为大多数开源平台的标准多媒体解决方案,并且支持各种音频文件。使用它的示例应用程序有:Rhythmbox、Banshee、Totem等等……

1

你有没有考虑过Python音频工具?这个工具可以加载MP3文件并使用Player类来播放它。Player类的初始化器可以接受一个AudioOutput对象,这样你就可以指定播放的声道数量。

这个项目看起来支持得很好,最后一次代码更新是在2011年10月30日(距离你发帖不到两周)。而且这个工具已经存在一段时间了,所以它看起来并不是一个昙花一现的库。

4

如果你想在Windows上获得很好的支持,我觉得你可能需要或者会发现使用其他的Windows API会更简单一些……可以看看这些链接:

补充说明 - 目前来看,解决方案可能是(评论大多是正面的):

另一个选择是 http://www.un4seen.com/bass.html(注意:这是商业软件) - 它能满足你所有的需求,非商业应用可以免费使用,并且有一个Python的封装(叫做pybass)……

撰写回答