# 游戏对局回放

​ 游戏对局回放是一组录制游戏画面来生成对局回放、并可以将对局回放分享给好朋友的 API。支持开始、暂停、继续、结束及发布功能。

# 录制

ks.getGameRecorder() 返回一个全局单例 GameRecorder,是一个游戏录制对象。

所有和录制有关的 API 都挂载在 GameRecorder 上:

调用 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 录屏发布