流式传输和播放MP3流。 .mp3网址格式

时间:2010-01-17 13:23:05

标签: iphone streaming mp3

我使用了来自http://cocoawithlove.com/2008/09/streaming-and-playing-live-mp3-stream.html的示例代码。它使用默认URL运行正常。但当我用我的网址“http://dl.mp3.kapsule.info/fsfsdfdsfdserwrwq3/fc90613208cc3f16ae6d6ba05d21880c/4b5244f0/b/7e/b7e80afa18d06fdd3dd9f9fa44b51fc0.mp3?filename=Every-Day-I-Love-You.mp3”替换时,此应用会显示“未找到音频”的消息。但是当我把我的URL放在Web浏览器的地址栏上时,我可以下载这个.mp3文件。

真的,我不明白为什么会这样?

很高兴告诉我!

非常感谢

4 个答案:

答案 0 :(得分:1)

我的猜测是该应用程序旨在播放MP3编码的音频,其长度没有限制(与普通音乐文件不同)。要进行此设置,您需要在客户端提供流媒体服务器。

我认为您可以通过尝试使用MP3传输的其他广播电台来确定。如果可以,那么您的应用很可能不喜欢您的文件。

正如Vivek建议的那样,如果应用程序被URL的长度和/或结构混淆,您应该尝试使用更简单的文件下载URL。

答案 1 :(得分:1)

如上所述,这是由于文件的URL。 AudioStreamer代码专门检查文件的扩展名,并尝试根据该类型确定音频类型。如果您更改该逻辑以处理自定义网址,它将开始工作

所以要指出正确的方向:打开AudioStreamer.m并查找

的引用
hintForFileExtension:

此函数根据扩展名返回文件类型。如果你知道文件类型不会改变(总是mp3),快速而肮脏的解决方案就是总是分配mp3类型,没有任何逻辑......像这样:

err = AudioFileStreamOpen(self, MyPropertyListenerProc, MyPacketsProc, kAudioFileMP3Type, &audioFileStream);

注意:我把kAudioFileMP3Type设为常量而不是计算值

PS是的,它确实可以与静态mp3文件一起使用,即使它是为流而设计的,因此会错过一些在服务器上播放静态文件的播放器所期望的功能(缓存,预取,正确搜索)< / p>

答案 2 :(得分:0)

这是因为默认网址直接指向网络服务器中的文件,而您提到的网址是HTTP(POST / GET)操作,应用程序可能无法处理该操作。

答案 3 :(得分:0)

我怀疑您的网址是一次性使用的。当我尝试访问它时,我看到408 - Request Timeout

群发文件共享网站上的许多链接都是这样的。如果您可以直接下载该文件,则不会查看广告页面和高级帐户优惠。

再次尝试使用普通网站上的文件,例如this one