Chromecast 使用<;创建自定义CAF接收器;视频>;要素
我正试图用我自己的HTML5视频元素和支持库创建一个定制的CAF接收器。由于我正在使用自己的Chromecast 使用<;创建自定义CAF接收器;视频>;要素,chromecast,google-cast,Chromecast,Google Cast,我正试图用我自己的HTML5视频元素和支持库创建一个定制的CAF接收器。由于我正在使用自己的元素,因此我将按照如下方式设置playermanger实例: // My custom HTML5 video player const player = new Player(document.querySelector('#my-video')) const context = cast.framework.CastReceiverContext.getInstance() const player
元素,因此我将按照如下方式设置playermanger
实例:
// My custom HTML5 video player
const player = new Player(document.querySelector('#my-video'))
const context = cast.framework.CastReceiverContext.getInstance()
const playerManager = context.getPlayerManager()
playerManager.setMediaElement(document.querySelector('#my-video'))
// Now, I need to override some of the playerManager methods such as play/pause, etc
const overrides = {
getCurrentTimeSec () {
return player.currentTime
},
getPlayerState () {
const PlayerState = cast.framework.messages.PlayerState
if (!player.ready || !player.source) {
return PlayerState.IDLE
}
return player.paused ? PlayerState.PAUSED : PlayerState.PLAYING
},
getDurationSec () {
return player.duration
},
pause: player.pause,
play: player.play,
seek: player.seek,
load: (loadRequestData) => {
return new Promise((resolve, reject) => {
// Parse loadRequestData and load the media accordingly
...
})
}
Object.assign(playerManager, overrides)
context.start();
由于在传入视频受到保护的情况下,我需要自定义处理传入的“加载”请求,因此我需要设置一个自定义load
处理程序。我的问题似乎是从来没有调用过playerManager.load
请注意,所有这些对于正常的未受保护的HTML5视频都非常有用,因为传入的loadRequestData
可以被PlayerManager
直接理解和使用。就是在我需要做一些额外处理的情况下,事情才开始失败
我已经尝试以以下方式运行我的业务逻辑:
这种方法的问题是,即使我能够要求我的播放器
库成功加载视频,截取也需要返回null或修改的请求
当我不返回任何内容时,
playerManager
认为没有加载媒体的请求。如果我确实返回了一个“修改的请求”,那么默认的媒体加载逻辑就会启动,这不可避免地会因为URL“格式错误”而失败 在这两种情况下,
playerManager
实例都报告没有准备好接收播放命令
使用自定义
元素设置CAF接收器的正确方法是什么?目前,CAF接收器尚不支持自定义播放器。那么我是否应恢复到v2接收器?cast.receiver.media.Player
似乎有很多相同的功能。你知道我是否可以在这个类中使用自定义的
元素吗?V2确实支持自定义媒体播放器,但V2已被弃用。自定义媒体播放器仍然不受支持吗?
playerManager.setMessageInterceptor(
cast.framework.messages.MessageType.LOAD,
request => {
...
})