在Python中播放和控制mp3文件?

5
首先声明,我是一个Python初学者,具有典型的C++/Java面向对象编程背景。
我被说服尝试使用Python进行当前的项目,到目前为止我很喜欢它。但是我遇到一个问题,就是找不到一个好的mp3模块。
我尝试了TkSnack,在我的音频设备没有忙碌的情况下安装和运行都没有出现错误,但它无法发出声音,什么也没做...我上网寻求帮助,但文档量让我失望。
因此我决定换一种方式。我尝试了PyMad,因为它也在Ubuntu的标准库中。但是关于这个的文档更少了,不过我可以播放音乐。唯一的问题是它需要一个循环来不断地写入/播放音频缓冲区。这使得控制回放变得特别棘手(我认为),因为我必须在单独的线程或进程中运行它,并以某种方式控制暂停等操作的寻位位置。这对于我使用Python的原因来说有点太底层了。我喜欢TkSnack的简单性,它只需要像“mysound.play()”或“mysound.pause()”这样的简单命令,而不是控制循环。
我也看了一下pyMedia,它似乎是最新的文档,但我无法在我的机器上安装它。当运行“python setup.py build”命令时,我会得到一个“gcc退出值1”的错误或类似的错误信息。
因此,我正在寻找有关这些模块的任何建议或帮助,或者完全不同的高级且易于使用的mp3(最好还支持其他格式)解决方案。我正在尝试进行基本的播放控制(暂停、停止、跳过、搜索),并且我可能最终也会流式传输文件(如果我到达那里的话)。
编辑:我喜欢Gstreamer的Python绑定,但这是一个跨平台的解决方案吗?我忘记提到这一要求了。但我总是将GStreamer与Linux相关联,这在其他操作系统上能用吗?
编辑:维基百科说yes
2个回答

2

很抱歉我无法帮助您处理PyMad或pyMedia相关问题,但我有其他建议。

Python编写的现有音乐播放器:

以上所有播放器都使用GStreamer多媒体框架的Python绑定。绑定的文档很少,但可以在这里查看这里这里以及源代码分发的示例这里


我喜欢使用GStreamer进行通信的想法,因为这是大多数Linux音视频程序已经采用的方式。但如果我想要实现跨平台,它是否仍然适用呢? - gnomed

1

我刚刚也遇到了这个问题,经过我的研究,我认为你最好的选择是pygletpygame。它们都是带有内置音视频支持的接口包。


pyglet看起来很有前途,但接下来的几天我有点忙,无法尝试使用它。但如果我这样做了,我会让你知道的。 - gnomed

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接