Dou*_*ith 8 http-live-streaming google-cast chromecast hls.js google-cast-sdk
我正在尝试通过发件人应用将一些 URL 流式传输到我的 Chromecast。它们是 HLS/m3u8 URL。
这是一个这样的示例 URL:https : //qa-apache-php7.dev.kaltura.com/p/1091/sp/109100/playManifest/entryId/0_wifqaipd/protocol/https/format/applehttp/flavorIds/0_h65mfj7f,0_3flmvnwc, 0_m131krws,0_5407xm9j/a.m3u8
然而,尽管其他 HLS/m3u8 URL 有效(有效的 HLS 流示例),但它们似乎从未加载到 Chromecast 上。
它与 CORS 无关,因为它们确实具有正确的 CORS 标头。
我注意到它们在根 HLS 清单文件中有单独的音频组。
当我将它连接到自定义接收器应用程序时,我得到以下日志:
相关位是(我认为):在 0 和 cast.player.api.ErrorCode.NETWORK/315 处都没有找到 ID3 和 ADTS 标头(我认为这是第一个的结果)
这些是完全有效/有效的 HLS URL。它们可以在 iOS 和桌面上的 Safari 以及 VLC 中完美播放。
我需要做些什么(在我的发送方应用程序或接收方应用程序中)才能启用诸如音轨之类的功能?文档似乎表明了这一点。
我还发现了这个谷歌问题,其中有人遇到了类似的问题,但以某种我无法理解的方式解决了它。https://issuetracker.google.com/u/1/issues/112277373
如何在 Chromecast 上正确播放此 URL?我要在代码中做些什么吗?
这在这里已经有一个解决方案,但我会添加这个答案,以防有人查找确切的错误消息/代码。
问题在于hlsSegmentFormat它被初始化TS为多路复用段,但当前默认为带有备用音轨的 HLS 的打包音频。
解决办法是拦截CAFLOAD请求并设置正确的segment格式:
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();
Run Code Online (Sandbox Code Playgroud)
来源:Google Cast问题跟踪器
| 归档时间: |
|
| 查看次数: |
2086 次 |
| 最近记录: |