【问题标题】:How to use Android MediaPlayer to play video stream? FileDescriptor,Uri,Path,MediaDataSource?如何使用 Android MediaPlayer 播放视频流? FileDescriptor,Uri,Path,MediaDataSource?
【发布时间】: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


    【解决方案1】:

    我建议您使用 ExoPlayer 而不是使用 Android MediaPlayer,因为 MediaPlayer 在流式视频方面存在一些问题。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-12-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多