如何使用Android MediaPlayer播放视频流? FileDescriptor,Uri,Path,MediaDataSource?

时间:2018-09-26 08:10:51

标签: java android video stream android-mediaplayer

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。同时还有其他数据结构可以读写吗?

您有更好的主意吗?

有人可以帮助我吗?

1 个答案:

答案 0 :(得分:0)

我建议您使用 ExoPlayer ,而不要使用Android MediaPlayer ,因为 MediaPlayer 在流式视频中存在一些问题。< / p>

如果您想使用比ExoPlayer更简单的库,则可以使用 ExoMedia