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

我已经测试了不同的媒体播放器,如 android 媒体播放器,exoplayer等,但行为是一致的。视频仅在恰好 10 秒后更改流。这是hls在android中的默认实现吗?还是我错过了什么? 我用来测试的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(); 
            } 
        }); 

请您参考如下方法:

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

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

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


评论关闭
IT序号网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!