Данные извлекаются с удаленного сервера небольшими шагами на основе NPR.
s StreamProxy метод здесь . Данные отправляются в выходной поток небольшими порциями. Вот все детали, которые я собрал:
- Случайно генерирует исключения Socket, а именно исключение Broken Pipe.
- У меня такое ощущение, что медиаплеер начинает читать эти данные до того, как их будет достаточно в сокете и видит частично отформатированные данные (возможно, только половину информации ID3), а затем умирает.
- У меня есть вход в прослушиватели onInfo и OnError для MediaPlayer. Для OnInfo () успешные потоки будут давать то, что = 1 / extra = 44, а неудачные потоки часто сообщают, что = 1 / extra = 26. OnError обрабатывает ошибку с значением what = 1 / extra = -1.
- Удаление информации id3 часто исправляет это (я думаю, что это связано со 2-ой пулей)
- Это зависит от устройства в зависимости от того, что играть (бэкэнд PVPlayer худший)
Есть идеи по этому поводу? Я думаю, что это связано с тем, как MediaPlayer должен ждать, пока у него есть xx байтов данных перед анализом.