2

我正在开发一个 android 应用程序,其中包含一个从 akamai CDN 播放 hls 流的 videoview。问题是流 url 具有使用 Akamai API 生成的令牌身份验证。问题是我的视频无法播放此流。

以下格式正常播放
http://xxxxxxx-i.akamaihd.net/hls/live/#####/event1/Playlistaaa_1200.m3u8

以下格式不适用于 android(但适用于三星智能电视等其他开发环境):http:
//xxxxxxx-i.akamaihd.net/hls/live/#####/event1/Playlistaaa_1200.m3u8 ??hdnea=st=1364547301~exp=1364547901~acl=/ *~hmac=4baa8ad07af9f31c2d898bd205986e4c470a99b7573cc93918ce9caa234a8d03

有谁知道如何为 android 启用此功能,或者是否有任何解决方法?

问候

4

2 回答 2

4

与 Akamai 核对后,问题已解决,问题出在查询字符串中的“/”字符中。"/" 应替换为 "%2F"
工作 URL:
http: //xxxxx-i.akamaihd.net/hls/live/XXXX/event1/Playlist.m3u8 ?hdnea=st=1382080396~exp=1382685196~acl = %2F* ~hmac=71794db8368c2498fea5fb62c381ce6e51a7ff4628c1225ddfe41411596b5d6e

非工作网址:
http ://xxxxx-i.akamaihd.net/hls/live/XXXX/event1/Playlist.m3u8?hdnea=st=1382080396~exp=1382685196~acl= /* ~hmac=71794db8368c2498fea5fb62c381ce6e51a7ff4628c12556dfe41411

Accroding to akamai 这里有一些评论:

  1. Android 2.x / 3.x 设备将不支持 akamai 令牌认证服务
  2. Android 4.x 处理播放列表/片段的 url 的方式有很多错误。如果“/”字符用作请求 master.m3u8 文件的查询字符串的一部分(例如,因为我们使用令牌认证),并且比特率播放列表和分段 url 使用相对 url 定义,Android 4.x 生成错误的绝对网址。这是因为 Android 4.x 获取基本 url 时,将 master.m3u8 url 从第一个字符到最后一个“/”字符,即使这个字符是查询字符串的一部分
  3. Android 4.x HLS 实现对错误的时间戳非常敏感。适用于 iPhone 的流,由于时间戳未对齐(H.264/AAC 数据包的 PTS/DTS)而在 Android 4.x 中不起作用

请注意,此解决方案也适用于:

  • 三星智能电视播放器
  • LG智能电视播放器
  • 西部数据播放器
于 2013-10-21T12:54:31.287 回答
1

这真的取决于哪个设备——Android 添加了一个 setCookie 方法——在 HC 之后。它允许您以合理的方式开始该过程。

Akamai 有一些标志需要更改才能与 Android 一起使用。我记得它只是一个复选框。

最后,您可以使用第 3 方播放器 - 例如http://www.nexstreaming.com/来正确处理 HLS。

于 2013-03-29T16:16:35.237 回答