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 не может подключиться к моему локальному прокси. Это должно быть аналогично подключению к исходному источнику без метаданных, которое работает . Я пересылаю все заголовки из внешнего источника через свой прокси-сервер, который включает тип содержимого.
Я продолжу изучать его, но чувствую, что зашел в тупик. Сообщите мне, если потребуется дополнительная информация.