# 游戏对局回放
游戏对局回放是一组录制游戏画面来生成对局回放、并可以将对局回放分享给好朋友的 API。支持开始、暂停、继续、结束及发布功能。
# 录制
ks.getGameRecorder() 返回一个全局单例 GameRecorder,是一个游戏录制对象。
所有和录制有关的 API 都挂载在 GameRecorder 上:
- GameRecorder.start() 开始录制
- GameRecorder.stop() 结束录制
- GameRecorder.pause() 暂停录制
- GameRecorder.resume() 从暂停状态恢复到录制状态
- ...
调用 GameRecorder.start() 开始录制,调用 GameRecorder.stop() 结束录制。
const recorder = ks.getGameRecorder()
// 设置录屏相关监听
recorder.on('start', () => {
// start 事件的回调函数的执行表示录制的真正开始
})
// 监听录屏过程中的错误,需根据错误码处理对应逻辑
recorder.on('error', (err) => {
// 录屏过程中,当收到onError的回调时,表明录制过程中存在异常,调试时可以根据err.code定位异常的原因
// 相关errorCode含义见录屏相关错误码定义
})
// stop 事件的回调函数
recorder.on('stop', res => {
if (res && res.videoID) {
// 当录制成功时,会产生一个videoID,用于发布录屏(recorder.publishVideo)接口使用
console.log(`videoID is ${res.videoID}`)
console.log(`录屏停止,录制成功`)
} else {
/****注意:没有videoID时不可展示分享录屏按钮,审核会过此case****/
/****测试方法:点击右上角"..."按钮打开设置页面,关闭录屏开关,录屏不会产生videoID****/
// 没有videoID时,可以通过onError回调获取录制失败的原因
console.log(`录屏停止,录制失败`)
}
})
// pause 事件的回调函数
recorder.on('pause', () => {
console.log('暂停录制')
})
// resume 事件的回调函数
recorder.on('resume', () => {
console.log('继续录制')
})
// abort 事件的回调函数,表示录制中的游戏画面已经被舍弃
recorder.on('abort', () => {
console.log('废弃已录制视频')
})
// 发起开始录制的调用,真正开始时会回调上面start的监听,开始失败则会回调error的监听
recorder.start()
// 在合适的时机,可以调用recorder.stop()来停止录制
recorder.stop()
如果在录制过程中有玩家思考等待等过程,可以调用 GameRecorder.pause() 暂停录制,然后再用 GameRecorder.resume() 恢复录制。
// pause 事件的回调函数的执行表示暂停录制
recorder.pause()
// 在合适的时机,调用recorder.resume()继续录制
recorder.resume()
如果想舍弃已经在录制的视频,可以调用 GameRecorder.abort()
recorder.abort()
stop 事件触发就表示已经有一个录制好的视频被输出来了。录制完成的视频保存在内部,不能被访问到,也不能直接播放。内部只会保存 最近一次录制的视频 ,发起分享时也只会分享这个 最近一次录制的视频 。
# 录屏发布
发布录屏使用GameRecorder.publishVideo接口
# 相关API
接口 | 功能说明 |
---|---|
ks.getGameRecorder | 获取全局唯一的游戏画面录制对象 |
GameRecorder | 游戏画面录制对象 |
GameRecorder.abort | 放弃录制游戏画面,此时已经录制的内容会被丢弃 |
GameRecorder.off | 取消监听录制事件。当对应事件触发时,该回调函数不再执行 |
GameRecorder.on | 注册监听录制事件的回调函数。当对应事件触发时,回调函数会被执行 |
GameRecorder.pause | 暂停录制游戏画面 |
GameRecorder.resume | 恢复录制游戏画面 |
GameRecorder.start | 开始录制游戏画面 |
GameRecorder.stop | 结束录制游戏画面。结束录制后可以发起分享 |
GameRecorder.publishVideo | 录屏发布 |