github.com/qiniu/go-sdk/v7@v7.27.0/pili/stream_model.go (about) 1 package pili 2 3 import ( 4 "encoding/base64" 5 ) 6 7 // GetStreamListRequest 查询直播流列表请求参数 8 type GetStreamListRequest struct { 9 // Hub 直播空间 10 Hub string `validate:"required"` 11 12 // LiveOnly 只返回当前在线的流 13 LiveOnly bool `validate:"-"` 14 15 // Prefix 流名称前缀匹配 16 Prefix string `validate:"-"` 17 18 // Limit 返回值数量限制 19 Limit int `validate:"gte=0,lte=5000"` 20 21 // Marker 游标 22 // 从该位置开始返回 23 Marker string `validate:"-"` 24 } 25 26 // GetStreamsListResponse 查询直播流列表返回值 27 type GetStreamsListResponse struct { 28 // Items 流列表 29 Items []GetStreamsListResponseItem `json:"items"` 30 31 // Marker 游标 32 // 表示当前位置,若marker为空,表示遍历完成 33 Marker string `json:"marker"` 34 } 35 36 type GetStreamsListResponseItem struct { 37 // Key 流名 38 Key string `json:"key"` 39 } 40 41 // GetStreamBaseInfoRequest 查询直播流信息请求参数 42 type GetStreamBaseInfoRequest struct { 43 // Hub 直播空间 44 Hub string `validate:"required"` 45 46 // Stream 流名 47 Stream string `validate:"required"` 48 } 49 50 // GetStreamBaseInfoResponse 查询直播流信息返回值 51 type GetStreamBaseInfoResponse struct { 52 // CreatedAt 直播流创建时间 53 // Unix 时间戳,单位:秒 54 CreatedAt int64 `json:"createdAt"` 55 56 // UpdatedAt 直播流更新时间 57 // Unix 时间戳,单位:秒 58 UpdatedAt int64 `json:"updatedAt"` 59 60 // ExpireAt 直播流过期时间 61 // 默认流过期时间15天,Unix 时间戳,单位:秒 62 ExpireAt int64 `json:"expireAt"` 63 64 // DisabledTill 禁用结束时间 65 DisabledTill int `json:"disabledTill"` 66 67 // Converts 转码配置 68 Converts []string `json:"converts"` 69 70 // Watermark 是否开启水印 71 Watermark bool `json:"watermark"` 72 73 // PublishSecurity 推流鉴权类型 74 PublishSecurity string `json:"publishSecurity"` 75 76 // PublishKey 推流密钥 77 PublishKey string `json:"publishKey"` 78 79 // NropEnable 是否开启鉴黄 80 NropEnable bool `json:"nropEnable"` 81 } 82 83 // StreamDisabledRequest 禁用直播流请求参数 84 type StreamDisabledRequest struct { 85 // Hub 直播空间 86 Hub string `json:"-" validate:"required"` 87 88 // Stream 流名 89 Stream string `json:"-" validate:"required"` 90 91 // DisabledTill 禁用结束时间 92 // Unix 时间戳,单位:秒 93 // 特殊值 -1 表示永久禁用;0 解除禁用 94 DisabledTill int `json:"disabledTill" validate:"-"` 95 96 // DisablePeriodSecond 禁用时长 97 // 单位:秒 98 // 当 DisabledTill 为0时,DisablePeriodSecond 参数生效 99 DisablePeriodSecond int `json:"disablePeriodSecond" validate:"gte=0"` 100 } 101 102 // GetStreamLiveStatusRequest 查询直播流实时信息请求参数 103 type GetStreamLiveStatusRequest struct { 104 // Hub 直播空间 105 Hub string `validate:"required"` 106 107 // Stream 流名 108 Stream string `validate:"required"` 109 } 110 111 // StreamLiveStatus 直播流实时状态 112 type StreamLiveStatus struct { 113 // StartAt 推流开始时间 114 // Unix 时间戳,单位:秒 115 StartAt int64 `json:"startAt"` 116 117 // ClientIP 推流端IP 118 ClientIP string `json:"clientIP"` 119 120 // ServerIP 服务端IP 121 ServerIP string `json:"serverIP"` 122 123 // BPS 推流码率 124 BPS int `json:"bps"` 125 126 // FPS 帧率 127 FPS StreamLiveStatusFPS `json:"fps"` 128 129 // Key 流名 130 Key string `json:"key,omitempty"` 131 } 132 133 // StreamLiveStatusFPS 流实时帧率 134 type StreamLiveStatusFPS struct { 135 // Audio 音频帧率 136 Audio int `json:"audio"` 137 138 // Video 视频帧率 139 Video int `json:"video"` 140 141 // Data metadata帧率 142 Data int `json:"data"` 143 } 144 145 // GetStreamLiveStatusResponse 查询直播流实时信息返回值 146 type GetStreamLiveStatusResponse struct { 147 // StreamLiveStatus 直播流实时状态 148 StreamLiveStatus 149 150 // 最近30秒内GOP最大值,单位:毫秒 151 MaxGop int `json:"maxGop"` 152 153 // 最近30秒内GOP平均值,单位:毫秒 154 AvgGop int `json:"avgGop"` 155 156 // VideoBitRate 视频码率,单位:bps 157 VideoBitRate int `json:"videoBitRate"` 158 159 // AudioBitRate 音频码率,单位:bps 160 AudioBitRate int `json:"audioBitRate"` 161 162 // 播放人数 163 PlayCount int64 `json:"playCount"` 164 165 // 播放带宽 166 Bandwidth int64 `json:"bandwidth"` 167 168 // 推流端所在地区 169 Location string `json:"location"` 170 171 // 推流端所在运营商 172 Isp string `json:"isp"` 173 } 174 175 // BatchGetStreamLiveStatusRequest 批量查询直播实时状态请求参数 176 type BatchGetStreamLiveStatusRequest struct { 177 // Hub 直播空间 178 Hub string `json:"-" validate:"required"` 179 180 // Items 流列表 181 // 查询流列表数量不超过100 182 Items []string `json:"items" validate:"-"` 183 } 184 185 // BatchGetStreamLiveStatusResponse 批量查询直播实时状态返回值 186 type BatchGetStreamLiveStatusResponse struct { 187 // Items 流列表 188 Items []StreamLiveStatus `json:"items"` 189 } 190 191 // GetStreamHistoryRequest 查询直播流推流记录请求参数 192 type GetStreamHistoryRequest struct { 193 // Hub 直播空间 194 Hub string `validate:"required"` 195 196 // Stream 流名 197 Stream string `validate:"required"` 198 199 // Start 开始时间 200 // 单位:秒,默认为0 201 Start int64 `validate:"gte=0"` 202 203 // End 结束时间 204 // 单位:秒,默认为当前时间 205 End int64 `validate:"gte=0"` 206 } 207 208 // GetStreamHistoryResponse 查询直播流推流记录返回值 209 type GetStreamHistoryResponse struct { 210 // Items 直播流推流记录列表 211 Items []GetStreamHistoryItem `json:"items"` 212 } 213 214 // GetStreamHistoryItem 查询直播流推流记录项 215 type GetStreamHistoryItem struct { 216 // Start 推流开始时间 217 Start int64 `json:"start"` 218 219 // End 推流结束时间 220 End int64 `json:"end"` 221 222 // ClientIP 推流端IP 223 ClientIP string `json:"clientIP"` 224 225 // ServerIP 服务端IP 226 ServerIP string `json:"serverIP"` 227 } 228 229 // StreamSaveasRequest 录制直播回放请求参数 230 type StreamSaveasRequest struct { 231 // Hub 直播空间 232 Hub string `json:"-" validate:"required"` 233 234 // Stream 流名 235 Stream string `json:"-" validate:"required"` 236 237 // Start 开始时间 238 // Unix 时间戳,单位:秒 239 Start int64 `json:"start" validate:"gte=0"` 240 241 // End 结束时间 242 // Unix 时间戳,单位:秒,默认为当前时间 243 End int64 `json:"end" validate:"gte=0"` 244 245 // Fname 文件名 246 // 为空时会随机生成一个文件名 247 Fname string `json:"fname" validate:"-"` 248 249 // Format 文件格式 250 // 可选文件格式为 251 // - m3u8: HLS格式,默认值 252 // - flv: FLV格式,将回放切片转封装为单个flv文件,异步模式 253 // - mp4: MP4格式,将回放切片转封装为单个mp4文件,异步模式 254 // 异步模式下,生成回放文件需要一定时间 255 Format string `json:"format" validate:"-"` 256 257 // Pipeline 异步模式时,指定数据处理的队列 258 // 可以将优先级较高的任务配置到独立的队列中进行执行 259 // 参考文档:https://developer.qiniu.com/dora/kb/2500/streaming-media-queue-about-seven-cows 260 Pipeline string `json:"pipeline" validate:"-"` 261 262 // Notify 回调地址 263 // 异步模式完成任务后的回调通知地址,不指定表示不做回调 264 Notify string `json:"notify" validate:"-"` 265 266 // ExpireDays 切片文件的生命周期 267 // - 0: 默认值,表示修改ts文件生命周期为永久保存 268 // - >0: 表示修改ts文件的的生命周期为 ExpireDays 参数值 269 // - -1: 表示不修改ts文件的expire属性,可显著提升接口响应速度 270 ExpireDays int `json:"expireDays" validate:"-"` 271 272 // PersistentDeleteAfterDays 生成文件的生命周期 273 // - 0: 默认值,表示生成文件(m3u8/flv/mp4)永久保存 274 // - >0: 表示生成文件(m3u8/flv/mp4)的生命周期为 PersistentDeleteAfterDays 参数值 275 // m3u8文件只有当ExpireDays为-1时生效 276 PersistentDeleteAfterDays int `json:"persistentDeleteAfterDays" validate:"-"` 277 278 // FirstTsType 过滤ts切片文件类型 279 // 部分非标准的直播流,在推流初期缺少视频帧或音频帧,过滤功能可以剔除这部分切片 280 // - 0: 默认值,不做过滤 281 // - 1: 第一个ts切片需要是纯视频类型,不符合预期的ts切片将被跳过 282 // - 2: 第一个ts切片需要是纯音频类型,不符合预期的ts切片将被跳过 283 // - 3: 第一个ts切片需要是音视频类型,不符合预期的ts切片将被跳过 284 FirstTsType byte `json:"firstTsType" validate:"-"` 285 } 286 287 // StreamSaveasResponse 录制直播回放返回值 288 type StreamSaveasResponse struct { 289 // Fname 文件名 290 Fname string `json:"fname"` 291 292 // Start 开始时间 293 // Unix 时间戳,单位:秒 294 Start int64 `json:"start"` 295 296 // End 结束时间 297 // Unix 时间戳,单位:秒 298 End int64 `json:"end"` 299 300 // PersistentID 异步任务ID 301 PersistentID string `json:"persistentID"` 302 } 303 304 // StreamSnapshotRequest 保存直播截图请求参数 305 type StreamSnapshotRequest struct { 306 // Hub 直播空间 307 Hub string `json:"-" validate:"required"` 308 309 // Stream 流名 310 Stream string `json:"-" validate:"required"` 311 312 // Time 截图时间 313 // Unix 时间戳,单位:秒,不指定则为当前时间 314 Time int `json:"time" validate:"-"` 315 316 // Fname 文件名 317 // 不指定系统会随机生成 318 Fname string `json:"fname" validate:"-"` 319 320 // Format 文件格式 321 // 默认为jpg,支持选择jpg/png 322 Format string `json:"format" validate:"-"` 323 324 // Pipeline 异步模式时,指定数据处理的队列 325 // 可以将优先级较高的任务配置到独立的队列中进行执行 326 // 参考文档:https://developer.qiniu.com/dora/kb/2500/streaming-media-queue-about-seven-cows 327 Pipeline string `json:"pipeline" validate:"-"` 328 329 // Notify 回调地址 330 // 若指定回调地址,则截图动作为异步模式 331 Notify string `json:"notify" validate:"-"` 332 333 // DeleteAfterDays 生命周期 334 // - 0: 默认值,表示截图文件永久保存,单位:天 335 DeleteAfterDays int `json:"deleteAfterDays" validate:"gte=0"` 336 } 337 338 // StreamSnapshotResponse 保存直播截图返回值 339 type StreamSnapshotResponse struct { 340 // Fname 文件名 341 Fname string `json:"fname"` 342 343 // PersistentID 异步任务ID 344 PersistentID string `json:"persistentID"` 345 } 346 347 // StreamConvertsRequest 修改直播流转码配置请求参数 348 type StreamConvertsRequest struct { 349 // Hub 直播空间 350 Hub string `json:"-" validate:"required"` 351 352 // Stream 流名 353 Stream string `json:"-" validate:"required"` 354 355 // Converts 转码配置 356 Converts []string `json:"converts" validate:"-"` 357 } 358 359 // encodeStream 请求流名base64编码 360 func encodeStream(str string) string { 361 return base64.URLEncoding.EncodeToString([]byte(str)) 362 }