1

在 AWS 上使用 Enterprise Edition 1.9.1 官方 AMI。

设想:

Ant Media Server 应用程序配置为使用具有 360、480、720 分辨率的 ABR。

播放器端代码轮询 HLS 流 URL,等待流开始。

预期行为:

  1. 当流未直播时,以 404 错误响应
  2. 当流上线时,使用包含所有已定义分辨率的 m3u8 进行响应

实际行为:

  1. 当流未直播时,为 m3u8 返回的 HTTP 状态为 200,但响应的内容是 404 未找到页面。
  2. 当直播开始时,收到的 m3u8 只包含一个分辨率(我认为,它是随机的 - 可以是任何预定义的):
#EXTM3U
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=0,RESOLUTION=1280x720,CODECS="avc1.42e00a,mp4a.40.2"
5e820545bd53c64aca9c57c1_720p.m3u8
  1. 如果我在不完整的几秒钟后请求 m3u8,我会收到具有所有定义分辨率的完整 m3u8:
#EXTM3U
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=680704,RESOLUTION=640x360,CODECS="avc1.42e00a,mp4a.40.2"
5e820545bd53c64aca9c57c1_360p.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=1072360,RESOLUTION=854x480,CODECS="avc1.42e00a,mp4a.40.2"
5e820545bd53c64aca9c57c1_480p.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=1409432,RESOLUTION=1280x720,CODECS="avc1.42e00a,mp4a.40.2"
5e820545bd53c64aca9c57c1.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=2263000,RESOLUTION=1280x720,CODECS="avc1.42e00a,mp4a.40.2"
5e820545bd53c64aca9c57c1_720p.m3u8

解决方法:

目前我正在通过解析响应的内容来解决这个问题:

  • 如果包含404错误,继续轮询
  • 如果m3u8短于6行(经验值),继续轮询
  • 当一个正确的 m3u8 到达时,启动播放器

我做错了什么还是这是一个错误?

4

1 回答 1

1

这似乎是已在 v2.0 中修复的错误。升级后,一切都按记录进行。

于 2020-06-17T14:04:48.800 回答