РЕДАКТИРОВАТЬ: Хорошо, теперь я верю, что у меня есть ответ!
Stagefright является строгим, когда дело доходит до конца строки в HTTP-заголовке; Они должны быть CR, LF, а не просто LF, который работал раньше.
Так что если вы строите свои собственные заголовки, замените любые "\ n" на "\ r \ n" , и все будет в порядке.
(Если вы хотите проверить это сами, посмотрите на receive_line () в media / libstagefright / HTTPStream.cpp )
Теперь я могу транслировать shoutcast с метаданными на телефонах 2.2 / Stagefright ...
...
Я столкнулся с той же проблемой;
Сначала я попытался записать потоковые данные в файл фиксированной длины и обернуть - и воспроизвести его с помощью setLooping (true). Это приводит к сбоям при зацикливании MP3, хотя я извлекаю целые MP3-кадры и пытаюсь заполнить неравные байты в конце как 0xff, так и 0x00. Это может быть приемлемым решением, если у вас достаточно большой файл.
Затем я сделал прокси, который работает на моем Samsung Galaxy S (v2.2), но не в эмуляторе и, очевидно, не на Desire (не работает = ошибка -1007, как упомянуто выше).
Один намек может заключаться в том, что Galaxy S Mediaplayer запрашивает HTTP1.0, тогда как в эмуляторе он равен 1.1.
Метод грубой силы будет состоять в том, чтобы открыть 2 потока параллельно, считывая метаданные из одного и передавая из другого;)
В любом случае, я также хочу услышать, повезло ли кому-то еще ...