我正在尝试通过发件人应用将一些网址流式传输到我的Chromecast。它们是HLS / m3u8网址。
然而,尽管其他HLS / m3u8网址正常工作(example of an HLS stream that does work),它们似乎从未在Chromecast上加载。
它与CORS无关,因为它们确实具有适当的CORS头。
我注意到它们在根HLS清单文件中有单独的音频组。
当我将它连接到自定义接收器应用程序时,我得到以下日志:
相关位(我认为):在0和cast.player.api.ErrorCode.NETWORK/315(我认为是第一个结果)中找不到ID3和ADTS标头
这些是完全有效/有效的HLS URL。他们完美地在iOS和桌面上的Safari中播放,以及VLC。
有什么我需要做的事情(在我的发送者应用程序或我的接收器应用程序中),以启用像音轨这样的东西? The docs seem to indicate something about that。
我也发现这个谷歌问题,一个人有类似的问题,但解决了它,我无法理解。 https://issuetracker.google.com/u/1/issues/112277373
如何在Chromecast上正确播放此网址?我要在代码中做些什么吗?
这已经有一个解决方案here但我会添加这个答案,以防有人查找确切的错误消息/代码。
问题在于hlsSegmentFormat
被初始化为TS
用于多路复用段,但是当前默认为具有备用音轨的HLS的打包音频。
解决方案是拦截CAF LOAD
请求并设置正确的段格式:
const context = cast.framework.CastReceiverContext.getInstance();
const playerManager = context.getPlayerManager();
// intercept the LOAD request
playerManager.setMessageInterceptor(cast.framework.messages.MessageType.LOAD, loadRequestData => {
loadRequestData.media.hlsSegmentFormat = cast.framework.messages.HlsSegmentFormat.TS;
return loadRequestData;
});
context.start();
资料来源:Google Cast issue tracker