Я хочу воспроизвести аудиопоток с URL-адреса, который действителен только для временного промежутка времени. Это не очень хорошо работает, используя встроенную функциональность потоковой передачи в реальном времени из-за механизма буферизации (URL будет мертв к тому времени, когда буфер будет заполнен во второй раз), поэтому я реализовал прокси-поток, аналогичный что делается в приложении NPRandroid seek problem with proxy stream и stagefright player
Это на самом деле работает очень хорошо, но с одним исключением, любой искать вызов эффективно разбивает поток прокси. Мне трудно определить, как именно поиски работают в стадии. Everytime Я ищу Я получаю сообщение о
01-12 13:35:57.201: ERROR/(4870): Connection reset by peer
01-12 13:35:57.201: ERROR/(4870): java.net.SocketException: Connection reset by peer
01-12 13:35:57.201: ERROR/(4870): at org.apache.harmony.luni.platform.OSNetworkSystem.writeSocketImpl(Native Method)
01-12 13:35:57.201: ERROR/(4870): at org.apache.harmony.luni.platform.OSNetworkSystem.write(OSNetworkSystem.java:723)
01-12 13:35:57.201: ERROR/(4870): at org.apache.harmony.luni.net.PlainSocketImpl.write(PlainSocketImpl.java:578)
01-12 13:35:57.201: ERROR/(4870): at org.apache.harmony.luni.net.SocketOutputStream.write(SocketOutputStream.java:59)
01-12 13:35:57.201: ERROR/(4870): at com.soundcloud.utils.StreamProxy.processRequest(StreamProxy.java:209)
затем пауза в течение нескольких секунд, thafter который stagefright повторных попыток подключения к тому же URL, и обычно выдает ошибку (я бы себе представить, потому что поток прокси не имеет был сброшен). Еще одна потенциальная проблема заключается в том, что он, кажется, как будто поток прокси всегда будет читать источник данных линейно:
while (isRunning && (readBytes = data.read(buff, 0, buff.length)) != -1)
И я только гадать, но я думаю, что для того, чтобы поддержать искание, прокси должен быть способный обеспечить смещение при чтении из буфера. Есть ли способ вычислить запрошенное смещение от клиента сокета (предполагаемая позиция поиска)?
Мой опыт работы с розетками ограничен. Кто-нибудь есть предложения по реализации здесь?