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  }