iPhone прогрессивный скачать аудио плеер

Я пытаюсь реализовать прогрессивную загрузку аудиоплеера для iPhone, используя http и mp3-файлы фиксированного размера.

Я нашел проект AudioStreamer, но он кажется очень сложным и лучше всего работает с бесконечными потоками.

Мне нужно иметь возможность узнать общую длину аудиофайлов, а также мне нужно найти файлы. Я обнаружил взломанное отклонение от AudioStreamer, но, похоже, оно не очень хорошо для меня работает. http://www.saygoodnight.com/?p=14

Я задаюсь вопросом, есть ли более простой способ достижения моих целей или есть какие-то лучшие рабочие образцы там? Я нашел басовую библиотеку, но не много документации об этом.

Бр Йоханнес

4 ответа

К сожалению, нет ничего простого в воспроизведении аудио потоков на iPhone. Вот статья, которая заставила меня начать: Потоковое воспроизведение и воспроизведение потокового MP3

Это проект OSX, но большая часть его будет работать и с iPhone. Что касается получения полного времени воспроизведения, вам, вероятно, придется выяснить это на основе свойства content-length заголовка http, при условии, что это файл CBR. В противном случае, я думаю, вам придется загрузить весь файл, прежде чем это определить.

Если вам нужно только воспроизводить файлы MP3, зачем вы пишете свой собственный загрузчик / проигрыватель? У вас есть несколько опций, встроенных в iOS, каждый из которых поддерживает прогрессивную загрузку и воспроизведение MP3:

  • MPMoviePlayerController
  • AVPlayer
  • Сафари <audio> игрок

У меня лично были проблемы с прогрессивными возможностями загрузки MPMoviePlayerController а также AVPlayerтак что, возможно, это и ваша проблема. Я обнаружил, что эти плееры стараются быть умными, запрашивая mp3 несколько раз, проверяя, поддерживает ли сервер прогрессивную загрузку через смещения диапазона http. Но когда сервер не поддерживает смещения диапазона, файл загружается несколько раз, что приводит к увеличению пропускной способности (!).

В моем последнем проекте я встроил UIWebView, имеющий HTML <audio> тег встроен. Плеер Safari, кажется, ведет себя лучше, чем AVPlayer и MPMoviePlayerController, но он также имеет свои предостережения. С одной стороны, заставить работать автоигру было PITA.

В iPhone Cool Projects есть действительно хорошая глава о потоковом аудио. http://apress.com/book/view/9781430223573 Он демонстрирует более простой подход, чем AudioStreamer (с использованием NSURLConnection вместо CFNetwork), лучше подходит для последовательной загрузки и без многопоточного кода.

А для определения размера аудиофайла вы можете использовать [response expectedContentLength] в

- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response 

Я знаю, что это довольно старый пост, но хотел предложить солидную библиотеку с открытым исходным кодом. Он основан на оригинальном посте Мэтта Галлахера, рекомендованном @pzearfoss выше. Текущая версия теперь использует AudioUnits, а не классы AudioQueue, поэтому она дает вам доступ к необработанным сэмплам PCM для любых манипуляций, которые вы хотите выполнить (фильтрация и т. Д.) Перед воспроизведением. Это также дает вам возможность прогрессивной загрузки бесплатно, с минимальными усилиями. Библиотека, похоже, активно обновляется, что является огромным плюсом!

StreamingKit от @tumtumtum

Другие вопросы по тегам