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:Just like NanoHttp cache stream,构建本地服务器,将远程URL转换为本地URL,然后使用setDataSource(localUri)
2:将视频磁头缓存到本地文件,但在写入时间内无法读取FileDescriptor。同时还有其他数据结构可以读写吗?
您有更好的主意吗?
有人可以帮助我吗?