在Chromecast CAF接收器中切换视频元素

时间:2019-02-25 15:50:32

标签: chromecast google-cast caf-receiver-sdk

我想实现执行以下操作的自定义CAF接收器:

  1. 使用外部广告SDK播放片头广告视频。
  2. 播放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错误引起的副作用。

我确信,错误原因是广告SDK用于显示前贴片视频的video元素。广告SDK将添加元素,播放广告,然后再删除该元素。

我尝试了以下操作:

  1. 广告播放完成后,通过videocast-media-player中的context.getPlayerManager().setMediaElement(...)元素设置为当前播放元素。
  2. 在广告完成后创建cast-media-player并将其添加到正文中。然后请求流播放。
  3. 2→1的组合:创建了该元素,然后将其视频元素设置为当前媒体元素。

以上都不起作用。

是否可以重置或重新初始化播放器以使用cast-media-player元素?

请注意,CAF接收器支持的广告拼接超出了范围,因为对外部广告SDK的要求很高。

0 个答案:

没有答案