我想实现一个自定义 CAF 接收器,它执行以下操作:
- 使用外部广告 SDK 播放前贴片广告视频。
- 播放 DASH 或 HLS 实时流。
这些功能可以自行正常工作。当我在播放广告后播放直播时,播放器会抛出此错误:
Uncaught DOMException: Failed to read the 'buffered' property from 'SourceBuffer': This SourceBuffer has been removed from the parent media source.
at Hh.fk (http://www.gstatic.com/cast/sdk/libs/mediaplayer/1.0.0/media_player.js:149:315)
at yc (http://www.gstatic.com/cast/sdk/libs/mediaplayer/1.0.0/media_player.js:30:291)
at SourceBuffer.vc (http://www.gstatic.com/cast/sdk/libs/mediaplayer/1.0.0/media_player.js:31:343)
at SourceBuffer.b (http://www.gstatic.com/cast/sdk/libs/mediaplayer/1.0.0/media_player.js:28:245)
然后此错误后跟:
[cast.player.api.Host] error: cast.player.api.ErrorCode.PLAYBACK/104
错误 104 表示播放器不支持该源,但由于流在没有广告的情况下可以正常播放,因此这不是问题。这很可能是由上面的 SourceBuffer 错误引起的副作用。
我确信错误的原因video
在于 Ad SDK 用于显示前贴片视频的元素。广告 SDK 添加元素、播放广告,然后删除元素。
我尝试了以下方法:
- 广告播放结束后通过设置
video
里面的元素cast-media-player
为当前播放元素。context.getPlayerManager().setMediaElement(...)
- 在广告完成后创建并将
cast-media-player
其添加到正文中。然后请求流播放。 - 2→1的组合:创建元素,然后将其视频元素设置为当前媒体元素。
以上都没有奏效。
有没有办法重置或重新启动播放器以使用该cast-media-player
元素?
请注意,CAF 接收器支持的广告拼接超出了范围,因为外部广告 SDK 是硬性要求。