Воспроизведение потока аудиофайлов с помощью HTTP Live Streaming на клиенте iOS без потери интерфейса в Quick Time - PullRequest
14 голосов
/ 18 января 2011

У меня есть сервер потоковой передачи HTTP Live, который обслуживает сегментированный аудиофайл в формате mp3 (URL указывает на индексный файл playlist.m3u8). Мне нужно создать клиентское приложение для iOS, чтобы использовать этот аудиопоток без , используя любые стандартные элементы управления / пользовательский интерфейс Apple. Он должен воспроизводить поток в фоновом режиме, и я хочу использовать свой собственный пользовательский интерфейс для предоставления элементов управления.

Поскольку содержимое является чисто аудио, я не хочу использовать класс MPMoviePlayerController, поскольку он принимает на себя пользовательский интерфейс. Я попытался использовать AVAudioPlayer, хотя он не предназначен для сетевых потоков, которые неудивительно, что не удается воспроизвести с кодом ошибки «-43»: NSOSStatusErrorDomain.

Я также попытался создать UIWebView с высотой и шириной в 1 пиксель и указать его на файл playlist.m3u8 на сервере. Это работает, но, к сожалению, я все еще теряю пользовательский интерфейс, поскольку UIWebView просто делегирует задачу воспроизведения проигрывателю QuickTime, который запускается в моем приложении с полноэкранным режимом для устройств iOS 3.xx.

В принципе, мне кажется, что Apple не предоставила никаких клиентских API для использования потоков HTTP Live Streaming audio , и разработчики вынуждены отказаться от интерфейса пользователя для проигрывателя QuickTime, который воспроизводит поток с логотипом QT, узурпируя экран. Ughh ...

Я хотел бы знать, есть ли у кого-нибудь предложения, чтобы помочь мне с вышеуказанным. В противном случае я планирую отказаться от потоковой передачи по HTTP и использовать знаменитую классическую реализацию потоковой передачи Matt Gallagher . Однако я немного обеспокоен рекомендациями Apple , в которых четко указывается, что для приложений, от которых ожидается отправка большого количества аудио или видео контента по сотовым сетям (что является моим приложением), необходимо использовать HTTP Live потоковое видео. Означает ли это, что реализация моего плана B может быть отклонена Apple? Любые способы обойти это руководство?

Ответы [ 2 ]

13 голосов
/ 15 марта 2011

http://developer.apple.com/library/ios/#documentation/MediaPlayer/Reference/MPMoviePlayerController_Class/Reference/Reference.html

В документах сказано:

Воспроизведение происходит в представлении, принадлежащем проигрыватель фильмов и происходит либо полноэкранный или встроенный.

В 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];
5 голосов
/ 18 января 2011

Я использовал audio streamer Мэтта Галлахера в одном из моих приложений. Это интернет-радио приложение, очень похожее на Pandora и LastFM. И да, это было принято Apple и было в App Store с тех пор.

Так что, на мой взгляд, ваш план Б на самом деле не такой рискованный. :-)

...