Потоковая передача с Android MediaPlayer в SDK 8

SDK уровня 8 (Froyo) представил встроенную возможность MediaPlayer подключаться к источнику потоковой передачи, например Shoutcast. Предыдущие версии SDK позволяли обходные пути, такие как запуск локального прокси на устройстве (см. NPR ).

Я использовал тот же подход, что и NPR, и использую StreamProxy. Однако NPR сначала проверяет, меньше ли текущий SDK 8. Если да, то использует прокси. В противном случае он подключается напрямую.

My StreamProxy запрашивает метаданные с сервера Shoutcast, поэтому он не просто направляет данные из Shoutcast моему клиенту. Вместо этого он анализирует метаданные и использует их соответствующим образом, а также маршрутизирует только музыкальные данные.

При попытке использовать StreamProxy на уровне SDK 8 или выше MediaPlayer не может подготовиться. Мой StreamProxy получает соединение и принимает его, но после успешной записи строки состояния и заголовков клиенту следующая запись создает java.net.SocketException: сброс соединения одноранговым узлом . Это приводит к тому, что клиентский медиаплеер выдает ошибку (1, -1007) .

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

Я продолжу изучать его, но чувствую, что зашел в тупик. Сообщите мне, если потребуется дополнительная информация.

14
задан rekire 22 May 2012 в 07:58
поделиться