Android中的HLS自适应流媒体仅在10秒后改变流?

时间:2016-06-20 14:11:55

标签: video-streaming android-mediaplayer hls android-videoview exoplayer

我开发了一款可以录制和播放小视频的小应用程序(最多10秒)。该应用程序以6 Mbps的速度捕获视频。为了确保更快的视频播放,我尝试实施HLS(http直播)。但我注意到应用程序始终首先以最低比特率获取流,并且仅在10秒后才切换到最佳可用流(基于网络带宽)。

我测试了不同的媒体播放器,如Android媒体播放器,exoplayer等,但行为是一致的。视频仅在10秒后才会更改流。这是android中hls的默认实现吗?还是我错过了什么? 我以前测试的m3u8是http://devimages.apple.com/iphone/samples/bipbop/bipbopall.m3u8

        localUrl = "http://devimages.apple.com/iphone/samples/bipbop/bipbopall.m3u8";
        vidView.setVideoPath(localUrl);
        Log.i("GenericRequest", "VideoUrl " + localUrl);
        vidView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
            @Override
            public void onPrepared(MediaPlayer mp) {
             vidView.start();
            }
        });

1 个答案:

答案 0 :(得分:6)

如果您查看bipbopall.m3u8中列出的播放列表的内容,您会看到片段持续时间为10秒。这可能解释了为什么你在10秒后看到开关。

播放器将下载bipbopall.m3u8中列出的第一个播放列表,在此实例中是比特率最低的流,并开始播放第一个段。它随后计算出可用的额外带宽,因此切换到具有更高比特率的流。

如果片段持续时间不同,您可能会看到切换发生在不同的时间。