在Python或C++中播放单声道MP3
我正在用Python和pyqt编写一个音乐播放器,我希望它能播放单声道的mp3文件。
我已经用pygame实现了这个功能,因为它的混音器有一个特定的参数channels
,我可以把它设置为1
来实现单声道播放。
不过,pygame对mp3的支持有限,所以我在寻找一个可以处理mp3文件并且支持单声道播放的库。
目前,我在使用pyaudiere来播放音乐,在它的网站上有一个处理歌曲后再播放的例子,也许我可以用这个方法把歌曲转换成单声道,但我真的不知道该怎么做。
我希望能得到关于如何使用pyaudiere或其他可以处理mp3文件的库来编写这个功能的帮助。
编辑
我也接受C++的解决方案,因为我可以使用Boost::python来构建一个Python的包装器。
4 个回答
这里有一个非常简单的音乐播放器:
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等等……
你有没有考虑过Python音频工具?这个工具可以加载MP3文件并使用Player
类来播放它。Player
类的初始化器可以接受一个AudioOutput
对象,这样你就可以指定播放的声道数量。
这个项目看起来支持得很好,最后一次代码更新是在2011年10月30日(距离你发帖不到两周)。而且这个工具已经存在一段时间了,所以它看起来并不是一个昙花一现的库。
如果你想在Windows上获得很好的支持,我觉得你可能需要或者会发现使用其他的Windows API会更简单一些……可以看看这些链接:
- http://people.csail.mit.edu/hubert/pyaudio/(跨平台)
- http://ffmpeg.org/ffmpeg.html(跨平台)
- http://www.codeproject.com/KB/audio-video/MP3Example.aspx(专门针对Windows)
- http://msdn.microsoft.com/en-us/library/windows/desktop/dd743572%28v=vs.85%29.aspx(专门针对Windows)
补充说明 - 目前来看,解决方案可能是(评论大多是正面的):
另一个选择是 http://www.un4seen.com/bass.html(注意:这是商业软件) - 它能满足你所有的需求,非商业应用可以免费使用,并且有一个Python的封装(叫做pybass)……