MediaPlayer 在 Android 5.1 中播放 HLS 直播时出错

Error from MediaPlayer playing HLS live stream in Android 5.1

我在播放实时流时从 MediaPlayer 收到一个奇怪的错误。在我将 Nexus 10 从 5.0.x 升级到 5.1 之前,代码运行良好。

我在 onError 处理程序中收到错误:错误 (-2147483648, 0),必须停止播放视频。如果我在错误处理程序中放置一个断点,视频可以在设备上完美播放,所以我不知道它为什么会抛出错误,也不知道它意味着什么。

我试过调试 MediaPlayer 源,但出于某种原因,设备上的二进制文件与我拥有的 5.1 源不匹配。无论哪种方式,错误似乎都来自本机代码。

我可以用相同的代码播放其他媒体源,似乎只有没有持续时间信息的媒体才会导致错误。

这是我从日志中得到的唯一有用的信息:

03-21 23:02:22.365: W/MediaPlayer(26062): info/warning (801, 0)
03-21 23:02:22.401: D/MediaPlayer(26062): getMetadata
03-21 23:02:22.416: W/MediaPlayer(26062): Stream has no duration and is therefore not seekable.
03-21 23:02:22.416: E/MediaPlayer(26062): error (-2147483648, 0)
03-21 23:02:22.427: E/MediaPlayer(26062): Error (-2147483648,0)
03-21 23:02:22.443: D/VideoView(26062): Error: -2147483648,0
03-21 23:02:22.446: W/Tag(26062): Playback error in -2147483648 info: 0
03-21 23:02:22.492: W/MediaPlayer(26062): info/warning (3, 0)

想通了。我在没有持续时间的流(实时流)上用零值调用 seekTo()。之前为什么能用,5.1升级,不知道