我有一个HTTP Live流媒体服务器设置,提供分段的mp3音频内容(URL指向playlist.m3u8索引文件)。我需要构建一个iOS客户端应用程序来使用任何标准的Apple控件/ UI来使用而不是的音频流。它应该在后台播放流,我想使用我自己的自定义UI来提供控件。
由于内容纯粹是音频,我不想在接管UI时使用MPMoviePlayerController类。我尝试过使用AVAudioPlayer,虽然它不适用于网络流,但不出所料地无法播放错误代码“-43”:NSOSStatusErrorDomain。
我还尝试创建一个高度和宽度为1像素的UIWebView,并将其指向服务器上的playlist.m3u8文件。这很有用,但不幸的是我仍然失去了UI,因为UIWebView只是将播放的任务委托给QuickTime播放器,该播放器在我的应用程序中以iOS 3.xx设备的全屏显示。
基本上,在我看来,Apple没有提供任何客户端API来使用HTTP直播音频流,开发人员不得不将UI放弃到使用QT徽标播放流的QuickTime播放器篡夺屏幕。 ughh ...
我很想知道是否有人有建议帮我解决上述问题。否则,我的计划B是放弃HTTP Live Streaming并使用着名的Matt Gallagher经典流媒体实现。但是,我有点担心Apples guidelines明确暗示对于预计会通过蜂窝网络(我的应用程序)发送大量音频或视频内容的应用程序需要使用HTTP Live流媒体。这是否意味着我的计划B实施容易被Apple拒绝?有没有办法绕过这条准则?
答案 0 :(得分:13)
文档说:
播放发生在由...拥有的视图中 电影播放器也发生了 全屏或内联。
在iOS 3.1及更早版本中,此类 实现了全屏电影播放器 仅
使用Apple的样本流进行的快速测试证明了您想要做的事情。
MPMoviePlayerController *player = [[MPMoviePlayerController alloc] initWithContentURL:[NSURL URLWithString:@"http://devimages.apple.com/iphone/samples/bipbop/gear4/prog_index.m3u8"]];
player.movieSourceType = MPMovieSourceTypeStreaming;
player.view.hidden = YES;
[self.view addSubview:player.view];
[player play];
答案 1 :(得分:5)
我在我的一个应用中使用了Matt Gallagher的音频流媒体。这是一个互联网广播应用程序,非常像Pandora和LastFM。是的,它被Apple接受,从那时起一直在App Store中。
所以在我看来,你的计划B实际上并没有那么大的风险。 :-)