三星HLS播放错误

时间:2013-01-22 12:46:53

标签: android http-live-streaming samsung-mobile

我的应用程序使用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:PROGRAM-ID = 1,BANDWIDTH = 755803

http://hiddenserver.com/layer_2.m3u8

EXT-X-STREAM-INF:PROGRAM-ID = 1,BANDWIDTH = 1577112

http://hiddenserver.com/layer_4.m3u8

EXT-X-STREAM-INF:PROGRAM-ID = 1,BANDWIDTH = 32083

http://hiddenserver.com/layer_5.m3u8

3 个答案:

答案 0 :(得分:1)

三星S3的问题是不支持HLS流中的MP3音频。 开发人员页面显示不够明确,mpeg-ts仅支持AAC。

我有完全相同的问题。

答案 1 :(得分: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播放器中的一个错误。

答案 2 :(得分:0)

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

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

public boolean onError(MediaPlayer arg0, int what, int extra) { 
      if (what != 1 || extra != -2147483648) {
               //Show error
      }else {
           //Skip error
      }
}