Skip to content

Commit

Permalink
chore(doc):add docs
Browse files Browse the repository at this point in the history
  • Loading branch information
seymourtang committed Apr 18, 2024
1 parent 60afdc1 commit ce57bee
Show file tree
Hide file tree
Showing 5 changed files with 566 additions and 86 deletions.
275 changes: 249 additions & 26 deletions services/cloudrecording/v1/query.go
Original file line number Diff line number Diff line change
Expand Up @@ -51,60 +51,283 @@ type QueryResp struct {
}

type QueryIndividualRecordingServerResponse struct {
Status int `json:"status"`
// Status 当前云服务的状态:
//
// 0:没有开始云服务。
//
// 1:云服务初始化完成。
//
// 2:云服务组件开始启动。
//
// 3:云服务部分组件启动完成。
//
// 4:云服务所有组件启动完成。
//
// 5:云服务正在进行中。
//
// 6:云服务收到停止请求。
//
// 7:云服务所有组件均停止。
//
// 8:云服务已退出。
//
// 20:云服务异常退出。
Status int `json:"status"`

// FileListMode fileList 字段的数据格式:
// "string":fileList 为 String 类型。合流录制模式下,如果 avFileType 设置为 ["hls"],fileListMode 为 "string"。
//
// "json":fileList 为 JSON Array 类型。单流或合流录制模式下 avFileType 设置为 ["hls","mp4"] 时,fileListMode 为 "json"。
FileListMode string `json:"fileListMode"`
FileList []struct {
FileName string `json:"fileName"`
TrackType string `json:"trackType"`
Uid string `json:"uid"`
MixedAllUser bool `json:"mixedAllUser"`
IsPlayable bool `json:"isPlayable"`
SliceStartTime int64 `json:"sliceStartTime"`

// FileList 录制文件列表。
FileList []struct {
// FileName 录制产生的 M3U8 文件和 MP4 文件的文件名。
FileName string `json:"fileName"`

// TrackType 录制文件的类型:
//
// "audio":纯音频文件。
//
// "video":纯视频文件。
//
// "audio_and_video":音视频文件。
TrackType string `json:"trackType"`

// Uid 用户 UID,表示录制的是哪个用户的音频流或视频流。
//
// 合流录制模式下,uid 为 "0"。
Uid string `json:"uid"`

// MixedAllUser 用户是否是分开录制
//
// true:所有用户合并在一个录制文件中。
//
// false:每个用户分开录制。
MixedAllUser bool `json:"mixedAllUser"`

// IsPlayable 是否可以在线播放。
//
// true:可以在线播放。
//
// false:无法在线播放。
IsPlayable bool `json:"isPlayable"`

// SliceStartTime 该文件的录制开始时间,Unix 时间戳,单位为毫秒。
SliceStartTime int64 `json:"sliceStartTime"`
} `json:"fileList"`

// SliceStartTime 该文件的录制开始时间,Unix 时间戳,单位为毫秒。
SliceStartTime int64 `json:"sliceStartTime"`
}

type QueryIndividualVideoScreenshotServerResponse struct {
Status int `json:"status"`
// Status 当前云服务的状态:
//
// 0:没有开始云服务。
//
// 1:云服务初始化完成。
//
// 2:云服务组件开始启动。
//
// 3:云服务部分组件启动完成。
//
// 4:云服务所有组件启动完成。
//
// 5:云服务正在进行中。
//
// 6:云服务收到停止请求。
//
// 7:云服务所有组件均停止。
//
// 8:云服务已退出。
//
// 20:云服务异常退出。
Status int `json:"status"`

// SliceStartTime 该文件的录制开始时间,Unix 时间戳,单位为毫秒。
SliceStartTime int64 `json:"sliceStartTime"`
}

type QueryMixRecordingHLSServerResponse struct {
Status int `json:"status"`
FileListMode string `json:"fileListMode"`
FileList string `json:"fileList"`
SliceStartTime int64 `json:"sliceStartTime"`
// Status 当前云服务的状态:
//
// 0:没有开始云服务。
//
// 1:云服务初始化完成。
//
// 2:云服务组件开始启动。
//
// 3:云服务部分组件启动完成。
//
// 4:云服务所有组件启动完成。
//
// 5:云服务正在进行中。
//
// 6:云服务收到停止请求。
//
// 7:云服务所有组件均停止。
//
// 8:云服务已退出。
//
// 20:云服务异常退出。
Status int `json:"status"`

// FileListMode fileList 字段的数据格式:
// "string":fileList 为 String 类型。合流录制模式下,如果 avFileType 设置为 ["hls"],fileListMode 为 "string"。
//
// "json":fileList 为 JSON Array 类型。单流或合流录制模式下 avFileType 设置为 ["hls","mp4"] 时,fileListMode 为 "json"。
FileListMode string `json:"fileListMode"`

// FileList 录制产生的 M3U8 文件的文件名。
FileList string `json:"fileList"`

// SliceStartTime 该文件的录制开始时间,Unix 时间戳,单位为毫秒。
SliceStartTime int64 `json:"sliceStartTime"`
}

type QueryMixRecordingHLSAndMP4ServerResponse struct {
Status int `json:"status"`
// Status 当前云服务的状态:
//
// 0:没有开始云服务。
//
// 1:云服务初始化完成。
//
// 2:云服务组件开始启动。
//
// 3:云服务部分组件启动完成。
//
// 4:云服务所有组件启动完成。
//
// 5:云服务正在进行中。
//
// 6:云服务收到停止请求。
//
// 7:云服务所有组件均停止。
//
// 8:云服务已退出。
//
// 20:云服务异常退出。
Status int `json:"status"`

// FileListMode fileList 字段的数据格式:
// "string":fileList 为 String 类型。合流录制模式下,如果 avFileType 设置为 ["hls"],fileListMode 为 "string"。
//
// "json":fileList 为 JSON Array 类型。单流或合流录制模式下 avFileType 设置为 ["hls","mp4"] 时,fileListMode 为 "json"。
FileListMode string `json:"fileListMode"`
FileList []struct {
FileName string `json:"fileName"`
TrackType string `json:"trackType"`
Uid string `json:"uid"`
MixedAllUser bool `json:"mixedAllUser"`
IsPlayable bool `json:"isPlayable"`
SliceStartTime int64 `json:"sliceStartTime"`

// FileList 录制文件列表。
FileList []struct {
// FileName 录制产生的 M3U8 文件和 MP4 文件的文件名。
FileName string `json:"fileName"`

// TrackType 录制文件的类型:
//
// "audio":纯音频文件。
//
// "video":纯视频文件。
//
// "audio_and_video":音视频文件。
TrackType string `json:"trackType"`

// Uid 用户 UID,表示录制的是哪个用户的音频流或视频流。
//
// 合流录制模式下,uid 为 "0"。
Uid string `json:"uid"`

// MixedAllUser 用户是否是分开录制
//
// true:所有用户合并在一个录制文件中。
//
// false:每个用户分开录制。
MixedAllUser bool `json:"mixedAllUser"`

// IsPlayable 是否可以在线播放。
//
// true:可以在线播放。
//
// false:无法在线播放。
IsPlayable bool `json:"isPlayable"`

// SliceStartTime 该文件的录制开始时间,Unix 时间戳,单位为毫秒。
SliceStartTime int64 `json:"sliceStartTime"`
} `json:"fileList"`

// SliceStartTime 录制开始的时间,Unix 时间戳,单位为毫秒。
SliceStartTime int64 `json:"sliceStartTime"`
}

type QueryWebRecordingServerResponse struct {
// Status 当前云服务的状态:
//
// 0:没有开始云服务。
//
// 1:云服务初始化完成。
//
// 2:云服务组件开始启动。
//
// 3:云服务部分组件启动完成。
//
// 4:云服务所有组件启动完成。
//
// 5:云服务正在进行中。
//
// 6:云服务收到停止请求。
//
// 7:云服务所有组件均停止。
//
// 8:云服务已退出。
//
// 20:云服务异常退出。
Status int `json:"status"`
ExtensionServiceState []struct {
Payload struct {
// FileListMode 文件列表
FileList []struct {
Filename string `json:"filename"`
SliceStartTime int64 `json:"sliceStartTime"`
// FileName 录制产生的 M3U8 文件和 MP4 文件的文件名。
Filename string `json:"filename"`

// SliceStartTime 该文件的录制开始时间,Unix 时间戳,单位为毫秒。
SliceStartTime int64 `json:"sliceStartTime"`
} `json:"fileList"`
Onhold bool `json:"onhold"`
State string `json:"state"`

// Onhold 页面录制是否处于暂停状态:
//
// true:处于暂停状态。
//
// false:处于运行状态。
Onhold bool `json:"onhold"`

// State 将订阅内容上传至扩展服务的状态:
//
// "init":服务正在初始化。
//
// "inProgress":服务启动完成,正在进行中。
//
// "exit":服务退出。
State string `json:"state"`

Outputs []struct {
// RtmpUrl CDN 推流地址。
RtmpUrl string `json:"rtmpUrl"`
Status string `json:"status"`

// Status 页面录制当前的推流状态:
//
// "connecting":正在连接 CDN 服务器。
//
// "publishing":正在推流。
//
// "onhold":设置是否暂停推流。
//
// "disconnected":连接 CDN 服务器失败,声网建议你更换 CDN 推流地址。
Status string `json:"status"`
} `json:"outputs"`
} `json:"payload"`
// ServiceName 扩展服务的名称:
//
// web_recorder_service:代表扩展服务为页面录制。
//
// rtmp_publish_service:代表扩展服务为转推页面录制到 CDN。
ServiceName string `json:"serviceName"`
} `json:"extensionServiceState"`
}
Expand Down
25 changes: 20 additions & 5 deletions services/cloudrecording/v1/start.go
Original file line number Diff line number Diff line change
Expand Up @@ -37,8 +37,13 @@ func (s *Starter) BuildPath(resourceID string, mode string) string {
}

type StartReqBody struct {
Cname string `json:"cname"`
Uid string `json:"uid"`
// Cname 录制的频道名
Cname string `json:"cname"`

// Uid 字符串内容为云端录制服务在 RTC 频道内使用的 UID,用于标识频道内的录制服务。
Uid string `json:"uid"`

// ClientRequest 客户端请求
ClientRequest *StartClientRequest `json:"clientRequest"`
}

Expand Down Expand Up @@ -642,11 +647,21 @@ type StarterResp struct {
SuccessResp StartSuccessResp
}

// StartSuccessResp 云端录制服务成功开始云端录制后返回的响应
type StartSuccessResp struct {
Cname string `json:"cname"`
UID string `json:"uid"`
// Cname 录制的频道名
Cname string `json:"cname"`

// UID 字符串内容为云端录制服务在 RTC 频道内使用的 UID,用于标识频道内的录制服务。
UID string `json:"uid"`

// ResourceId 云端录制资源 Resource ID。
//
// 使用这个 Resource ID 可以开始一段云端录制。这个 Resource ID 的有效期为 5 分钟,超时需要重新请求。
ResourceId string `json:"resourceId"`
SID string `json:"sid"`

// SID 录制 ID。成功开始云端录制后,你会得到一个 Sid (录制 ID)。该 ID 是一次录制周期的唯一标识。
SID string `json:"sid"`
}

func (s *Starter) Do(ctx context.Context, resourceID string, mode string, payload *StartReqBody) (*StarterResp, error) {
Expand Down
Loading

0 comments on commit ce57bee

Please sign in to comment.