我试着用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为什么?
发布于 2013-11-23 13:56:49
这是因为AppKit中的AppKit对象提供了一种在应用程序中播放、AIFF和WAV声音文件的方法,而不是Shoutcast streams。请参阅:http://nodebox.net/code/index.php/PyObjC
我很快就试图找到一个现有的Python模块来做您想做的事情,但是似乎没有。然而,有很多用Python实现的应用程序,您可以对它们进行分析,找出它们是如何实现的。例如:https://pypi.python.org/pypi/DeeFuzzer
我能为您找到的最好的选择是如何使用python捕获mp3流?,它谈到了捕获,这是一种用于本地播放的流。
发布于 2013-11-23 16:26:44
添加到@William的答案中,initWithContentsOfURL_byReference_返回零,这意味着一个创建声音的错误发生了。在这种情况下,我们知道它是因为URL应该指向NSSound理解的有效文件(AIFF、WAVE、NeXT、SD2、AU和MP3)。
即使NSSound在这种情况下工作,它也必须在播放之前下载整个文件;正如@William所指出的那样,这并不适用于流。
https://stackoverflow.com/questions/20161933
复制相似问题