HTTP Live Streaming (HLS) 在 Android 4 上不自适应?

Posted

技术标签:

【中文标题】HTTP Live Streaming (HLS) 在 Android 4 上不自适应?【英文标题】:HTTP Live Streaming (HLS) not adaptive on Android 4? 【发布时间】:2012-12-19 15:44:53 【问题描述】:

我一直在尝试使用 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 播放列表的流 URL

【问题讨论】:

【参考方案1】:

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

【讨论】:

在Android 4.4.2上,使用this HLS stream,在选择备用轨道时,电影重新启动。 span> 【参考方案2】:

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

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

【讨论】:

以上是关于HTTP Live Streaming (HLS) 在 Android 4 上不自适应?的主要内容,如果未能解决你的问题,请参考以下文章

HTTP Live Streaming (HLS) 在 Android 4 上不自适应?

如何使用iOS实现视频的直播点播缓存?-HTTP Live Streaming (HLS)

将视频转换为 HLS(HTTP Live Streaming) 协议格式文件

HTTP Live Streaming直播(iOS直播)技术分析与实现

如何在 Swift 中为 Radio Live Streaming 服务实现 HLS

调用Live555接收RTSP直播流,转换为Http Live Streaming(iOS直播)协议