Python PyObjC-带NSSound的流媒体音乐

Python PyObjC-带NSSound的流媒体音乐,python,pyobjc,Python,Pyobjc,我尝试使用Python+PyObjC制作一个简单的音乐流应用程序,如下所示 但它失败了 >>> sound.play() Traceback (most recent call last): File "<stdin>", line 1, in <module> AttributeError: cannot access attribute 'play' of NIL 'NSSound' object >>声音播放() 回溯(最近一次呼叫最后一次)

我尝试使用Python+PyObjC制作一个简单的音乐流应用程序,如下所示

但它失败了

>>> sound.play()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: cannot access attribute 'play' of NIL 'NSSound' object
>>声音播放()
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
AttributeError:无法访问零“NSSound”对象的属性“play”

为什么?

这是因为AppKit中的NSSound对象提供了在Mac应用程序中播放AIFF和WAV sound文件的方法,而不是播放流。见:

我很快试图找到一个现有的Python模块来做您想要做的事情,但它似乎不存在。然而,有很多应用程序是用Python实现的,可以通过分析找出它们是如何实现的。例如:


我能为您找到的最佳替代方案是,谈论捕获流以进行本地播放。

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

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

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