实时音频 HLS 流无法播放



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

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

内容类型: vnd.apple.mpegURL

重现的步骤强制将此内容网址和内容类型放入 Chromecast 播放器。

期望听到像我们尝试的任何其他播放器一样播放音频。

实际结果没有播放。提取主播放列表,提取块播放列表并获取第一个块,但没有播放。它会在几块后停止。 玩家卡在"处理段"阶段,然后停止。

请将内容类型更改为音频/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事件/消息设置消息拦截器回调。 在那里,您可以从客户端覆盖hlsSegmentFormat。 就我而言,我需要指出我的段是 TS 格式。

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

最新更新