MediaPlayer не может использовать InputStream в качестве источника данных.я хочу уменьшить или отменить подготовленное время MediaPlayer, поэтому мне нужно кэшировать поток в файл.Когда цель Sdk> = 23, я могу использовать
mMediaPlayer.setDataSource(new MediaDataSource() {
@Override
public int readAt(long position, byte[] buffer, int offset, int size) throws IOException {
return 0;
}
@Override
public long getSize() throws IOException {
return 0;
}
@Override
public void close() throws IOException {
}
});
, но как заставить ее работать на нижней цели.Теперь я исследовал два способа:
1: Точно так же, как поток кэша NanoHttp , построить локальный сервер, преобразовать удаленный URL в локальный URL и использовать setDataSource(localUri)
2: кэшировать видеоголовку в локальный файл, но FileDescriptor не может быть прочитан в течение времени записи.Есть другие структуры данных, которые можно читать и писать между тем?
У вас есть идея получше?
Может кто-нибудь мне помочь?