Вы можете создать сокет, взять его «дескриптор файла» и передать его MediaPlayer.setDataSource()
.
Я действительно сделал что-то похожее на это некоторое время назад, поэтому этот подход проверяется в поле.
Я забыл, как извлечь дескриптор файла из сокета, но я думаю, что использование отражения - или, скорее всего, собственный код - вы можете получить член «» в сокете, который является LocalSocket или что-то еще, и имеет a 'fd
' участник. Googling не нашел никого, описывающего это, так что вам нужно будет исследовать имена и данные конкретного пользователя сами.
Формат контейнера должен быть тем, что распознается системой Android; при необходимости вы можете использовать код native для создания pipe, чтобы вы могли переупаковать свой собственный контейнер в то, что Android поддерживает на лету, используя поток.
Мне кажется, что есть хорошие шансы, что Android будет играть «сырые» H.263 и H.264BP или что-то еще, но я не тестировал это. AVI явно не идеален для потоковой передачи - вам, возможно, придется разделить видео на короткие фрагменты AVI и продолжать заменять эти блоки - или вы можете изучить, поддерживает ли FLV или Matroska, но будьте осторожны - точное сочетание поддерживаемых форматов контейнеров может отличаться от устройства к устройству или от выпуска до выпуска.