2

我一直在尝试使用 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 流的自适应性?

更新

将流 URL 更新为多轨 m3u8 播放列表

4

2 回答 2

3

事实证明,Android 确实支持 HLS 流,但自适应比特率切换部分被忽略了。一旦连接变得更好或更糟并且选择了不同的视频轨道,流就会冻结,然后应用程序就会崩溃。

于 2013-05-22T10:27:35.043 回答
1

在您的代码示例中,播放列表的 URL 是针对特定比特率的,除非 Android 客户端知道备用再现,否则无法进行自适应流式传输。

您需要为VideoView. 试试这个包含多个比特率的:http: //devimages.apple.com/iphone/samples/bipbop/bipbopall.m3u8

于 2012-12-20T12:05:55.543 回答