1

我的应用程序使用 HLS 播放视频,它在大多数设备上都能正常工作。当尝试在三星 Galaxy S3 或三星 Galaxy Note 2 上运行它时,我遇到了问题。

如果我有一个体面的 Wifi 连接播放将运行没有任何问题。当我将连接限制为相当低的比特率(大约 300-400)并等到大约 10 秒后,当播放器切换层时,播放将停止并显示以下消息:

I/avc_utils(1929): found AVC codec config (320 x 180, Baseline-profile level 3.0)
I/ESQueue(1929): DRC : Change Resolution. [720x404] -> [320x180]

E/ACodec(1929): [OMX.SEC.aac.dec] ERROR(0x8000100b)
E/NuPlayer(1929): Received error from audio decoder, aborting playback.

E/NuPlayer(1929): audio track encountered an error (-2147483648)
E/MediaPlayer(15859): error (1, -2147483648)

有谁知道为什么会发生这种情况,为什么只在某些三星设备上?例如,Galaxy Nexus 工作正常。

以下是 m3u8 播放列表外观的示例:

EXTM3U

EXT-X-STREAM-INF:程序 ID=1,带宽=755803

http://hiddenserver.com/layer_2.m3u8

EXT-X-STREAM-INF:程序 ID=1,带宽=1577112

http://hiddenserver.com/layer_4.m3u8

EXT-X-STREAM-INF:程序 ID=1,带宽=32083

http://hiddenserver.com/layer_5.m3u8

4

3 回答 3

1

三星 S3 存在不支持 HLS 流中的 MP3 音频的问题。开发人员页面没有清楚地显示 mpeg-ts 仅支持 AAC。

我有完全相同的问题。

于 2013-01-22T14:31:15.523 回答
0

对于 android 4.0.x 和 4.1.x,HLS 实现至少可以说是错误的。当播放器在层之间切换时,似乎没有使用新参数重新初始化音频和视频解码器。我为 4.2 和 4.3 尝试了相同的 HLS 流,它运行良好。

我还检查了 4.1、4.2 和 4.3 的调试日志。4.2 和 4.3 记录了“重新初始化解码器”,而 4.1 只是给出了很多解码器错误并崩溃了。

当我使用相同的音频参数对所有层进行编码时,4.1 的音频问题也被消除了。然而,视频冻结了。

所有这些观察表明解码器没有初始化,这实际上是 android 播放器中的错​​误。

于 2013-08-15T15:39:38.213 回答
0

E/MediaPlayer(15859): error (1, -2147483648)表示播放器从服务器发送的文件的音轨中得到错误。他们需要检查是否有问题在服务器端制作块文件。

因此,播放器可以忽略此错误,并且可以流畅地播放流。

public boolean onError(MediaPlayer arg0, int what, int extra) { 
      if (what != 1 || extra != -2147483648) {
               //Show error
      }else {
           //Skip error
      }
}
于 2015-04-06T05:57:27.330 回答