【发布时间】:2018-09-26 08:10:50
【问题描述】:
MediaPlayer 不能将 InputStream 用作 DataSource。我想要的是我可以减少或丢弃 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无法在写入时间内被读取。还有其他数据结构可以同时读写吗?
你有更好的主意吗?
有人可以帮我吗?
【问题讨论】:
标签: java android video stream android-mediaplayer