我一直在尝试使用HLS将视频流式传输到Android设备,这是自HoneyComb以来正式支持的。问题是,当我使用Apple HLS测试流时似乎没有适应性。当我有一个良好的连接时,我得到一个高质量的适当流,但当我使用3G时,我得到相同的质量和流媒体滞后。我一直在使用标准的Android类:
String Url = AppleUrl = "http://devimages.apple.com/iphone/samples/bipbop/bipbopall.m3u8";
MediaController mMediaController = new MediaController(this);
VideoView mVideoView = (VideoView) findViewById(R.id.vid);
mVideoView.setVideoPath(Url);
mVideoView.setMediaController(mMediaController);
mVideoView.setOnPreparedListener(new OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
mp.start();
}
});
当使用VLC时,我得到相同的结果,如果Android真的支持HLS流的自适应性,有没有人测试?
更新
将流网址更新为多轨m3u8播放列表
答案 0 :(得分:3)
因此事实证明Android确实支持HLS流,但是自适应比特率切换部分被省略了。一旦连接变得更好或更糟,并且选择了不同的视频轨道,流就会冻结,很快就会崩溃。
答案 1 :(得分:1)
在您的代码示例中,播放列表的URL是针对特定比特率的,除非Android客户端知道备用节目,否则无法进行自适应流式传输。
您需要为VideoView
设置不同的网址。试试这个包含多个比特率的那个:http://devimages.apple.com/iphone/samples/bipbop/bipbopall.m3u8