Live Audio HLS 流播放失败

Live Audio HLS stream fails to play

我们正在尝试播放纯音频的 HLS 直播流。 它在规格方面看起来不错,我们可以在所有浏览器和我们拥有的本机播放器上播放它,但它无法在 Chromecast 上播放。

Url: http://rcavliveaudio.akamaized.net/hls/live/2006635/P-2QMTL0_MTL/playlist.m3u8

内容类型:vnd.apple.mpegURL

重现步骤 强制此内容 url 和内容类型进入 Chromecast 播放器。

预计 要像在我们尝试的任何其他播放器上一样听到音频播放。

实际结果 没有回放。主播放列表已获取,块播放列表已获取,第一个块已获取,但没有播放。它在几块后停止。 播放器卡在 "processing segment" 阶段,然后停止。

请将内容类型更改为 audio/mp4 并将 AAC 设置为分段格式 mediaInfo.hlsSegmentFormat = cast.framework.messages.HlsSegmentFormat.AAC;

根据 Anjaneesh 的评论,我最终解决了这个问题。在接收者的 JavaScript:

  const instance = cast.framework.CastReceiverContext.getInstance();

  const options = new cast.framework.CastReceiverOptions();
  options.disableIdleTimeout = true;
  options.supportedCommands = cast.framework.messages.Command.ALL_BASIC_MEDIA;

  instance.start(options);

  const playerManager = instance.getPlayerManager();
  playerManager.setMessageInterceptor(cast.framework.messages.MessageType.LOAD, (req) => {
    req.media.hlsSegmentFormat = cast.framework.messages.HlsSegmentFormat.TS_AAC;
    req.media.streamType = cast.framework.messages.StreamType.LIVE;
    return req;
  });

关键是为 LOAD event/message 设置消息拦截器回调。在那里,您可以从客户端覆盖 hlsSegmentFormat。在我的例子中,我需要指出我的片段是 TS 格式。

我不完全确定为什么这是必要的。当有视频轨道时不需要...只有当视频丢失时才需要。