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直播)技术分析与实现