Android 的 MediaPlayer 的 m3u8 音频流问题

Posted

技术标签:

【中文标题】Android 的 MediaPlayer 的 m3u8 音频流问题【英文标题】:Issue with m3u8 audio streaming with Android's MediaPlayer 【发布时间】:2015-02-11 04:18:03 【问题描述】:

我正在尝试使用 androidMediaPlayer 从 m3u8 url 播放音频流。

根据我的客户给我的信息,流是AAC encoded stream, 56 kbps, 44.1 KhZ, HE v1 within a HLS container

根据here给出的信息,接受m3u8格式:

应用程序现在可以将 M3U 播放列表 URL 传递给媒体框架,以开始 HTTP Live 流会话。媒体框架支持大部分 HTTP Live 流媒体规范,包括自适应比特率。

并且根据the doc on supported media formats,提供的AAC格式也被接受。

流似乎可以在 Android 4.4.4 上正常播放,但我尝试使用较低版本的许多设备返回错误 (1, -1010),即 MEDIA_ERROR_UNSUPPORTED

我错过了什么?

流文件内容 (mydomain.com/mystreamaudio.m3u8)

#EXTM3U
#EXT-X-VERSION:3
#EXT-X-TARGETDURATION:10
#EXT-X-MEDIA-SEQUENCE:75514
#EXTINF:10.00,
mystreamaudio/Seg_111014_170037_75/mystream_111014_170037_75514.aac
#EXTINF:10.00,
mystreamaudio/Seg_111014_170037_75/mystream_111014_170037_75515.aac
#EXTINF:10.00,
mystreamaudio/Seg_111014_170037_75/mystream_111014_170037_75516.aac
#EXTINF:10.00,
mystreamaudio/Seg_111014_170037_75/mystream_111014_170037_75517.aac
#EXTINF:10.00,
mystreamaudio/Seg_111014_170037_75/mystream_111014_170037_75518.aac
#EXTINF:10.00,
mystreamaudio/Seg_111014_170037_75/mystream_111014_170037_75519.aac
#EXTINF:10.00,
mystreamaudio/Seg_111014_170037_75/mystream_111014_170037_75520.aac
#EXTINF:10.00,
mystreamaudio/Seg_111014_170037_75/mystream_111014_170037_75521.aac
#EXTINF:10.00,
mystreamaudio/Seg_111014_170037_75/mystream_111014_170037_75522.aac
#EXTINF:10.00,
mystreamaudio/Seg_111014_170037_75/mystream_111014_170037_75523.aac

【问题讨论】:

【参考方案1】:

首先#EXT-X-VERSION:3 协议版本 3 从 Android 4.0 及更高版本开始正式支持。由于官方文档中提到支持 Android 3.0 协议版本 2。主要区别:版本 2 不允许浮点段持续时间。

其次,根据规范,每个片段必须采用 MPEG-TS 格式 (.ts),其中可以包含 AAC 音频,而不仅仅是 AAC 容器 (.aac)。

在Supported Media formats 中提到:“仅限MPEG-2 TS 媒体文件”这意味着您尝试播放不支持的m3u8 播放列表。修复它将每个片段编码为 mpeg-ts,其中 AAC 音频流在里面。

【讨论】:

以上是关于Android 的 MediaPlayer 的 m3u8 音频流问题的主要内容,如果未能解决你的问题,请参考以下文章

Android MediaPlayer 播放音频

Android 音频开发之 MediaPlayer

android的MediaPlayer.create方法怎么用

Android -- MediaPlayer内部实现简析

Android:MediaPlayer 未发布就完成了

Android开发---MediaPlayer简单音乐播放器