PyObjC-使用NSSound播放流媒体音乐



在这个博客之后,我尝试使用Python+PyObjC制作一个简单的音乐流应用程序

import Foundation
from AppKit import NSSound
sound = NSSound.alloc()
url = Foundation.NSURL.URLWithString_("http://206.217.213.235:8050/")
sound.initWithContentsOfURL_byReference_(url, True)
sound.play()

并且它不能通过

>>> sound.play()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: cannot access attribute 'play' of NIL 'NSSound' object

为什么?

这是因为AppKit中的NSSound对象提供了一种在Mac应用程序中播放AIFF和WAV声音文件的方式,而不是Shoutcast。请参阅:http://nodebox.net/code/index.php/PyObjC

我很快试图找到一个现有的Python模块来做你想做的事情,但它似乎不存在。然而,有很多用Python实现的应用程序可以做到这一点,你可以分析它们是如何做到的。例如:https://pypi.python.org/pypi/DeeFuzzer

我能为您找到的最好的替代方案是如何用python捕获mp3流,python谈到了捕获流以进行本地播放。

添加到@William Denman的答案initWithContentsOfURL_byReference_返回nil,这意味着创建声音时出错。在这种情况下,我们知道它是因为URL应该指向NSSound理解的有效文件(AIFF、WAVE、NeXT、SD2、AU和MP3)。

即使NSSound在这种情况下工作,它也必须在播放之前下载整个文件;正如@William Denman指出的那样,这对流不起作用。

最新更新