作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在使用以下代码播放 HLS 流:
mediaPlayer = new MediaPlayer();
mediaPlayer.setDataSource("http://iphoned5.akamai.com.edgesuite.net/mhbarron/nasatv/nasatv_all.m3u8");
mediaPlayer.setDisplay(holder);
mediaPlayer.setOnBufferingUpdateListener(this);
mediaPlayer.setOnCompletionListener(this);
mediaPlayer.setOnPreparedListener(this);
mediaPlayer.setOnVideoSizeChangedListener(this);
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mediaPlayer.prepareAsync();
使用此代码,根据播放到 VLC 中的相同流,我在视频中看到的内容延迟了大约 5 分钟。
播放器开始播放 .m3u8 文件的第一个 block 。但是 hls 规范明确指出第一个 block 是较旧的,最后一个是最新的。所以播放器应该开始播放文件的最后一 block 。
我怀疑与 setDataSource 方法的参数有关,但我不知道如何做。
最佳答案
我遇到了同样的问题 - 看起来当您在 Android 上启动一个实时 HLS 提要(没有 EXT-X-ENDLIST 标签)时,核心 HLS 解析组件中存在一个无法启动的错误直播点(提要的结尾),而是从流的开头开始。
在 code.google.com 上有一个关于这个的错误 - 你可以在那里“加注星标”或投票:
关于Android 3.x/HLS 如何在流结束时开始,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9214945/
我是一名优秀的程序员,十分优秀!