index.d.ts 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177
  1. export declare type VideoCodec = 'vp8'|'h264';
  2. export declare type AudioCodec = 'opus';
  3. export declare type RoomType = 'rtc'|'live';
  4. export declare type UserRole = 'pull'|'push'|'push-and-pull';
  5. export declare type DeviceType = 'audio'|'video';
  6. // 业务方使用的事件类型
  7. export declare type EventType = 'user-added' | 'user-removed' |
  8. 'stream-added' | 'stream-removed' | 'stream-published' | 'stream-subscribed' |
  9. 'mute-video' | 'unmute-video' | 'mute-audio' | 'unmute-audio' | 'screenshare-stopped' |
  10. 'connection-state-change';
  11. export declare type ConnectionState = 'OPEN' | 'CONNECTING' | 'CLOSING' | 'RECONNECTING' | 'CLOSED';
  12. export declare type WaterMarkPosition = 'left-top' | 'left-bottom' | 'right-top' | 'right-bottom'; // 左上,左下,右上,右下
  13. export declare type WaterMarkType = 'time' | 'image' | 'text';
  14. export declare type MainViewType = 'desktop' | 'screen' | 'camera'; // todo - remove desktop
  15. export interface ClientOptions {
  16. type?: RoomType
  17. role?: UserRole
  18. codec?: VideoCodec // 可设 vp8 或 h264,默认为 vp8
  19. }
  20. export interface Codecs {
  21. audio: Array<string>,
  22. video: Array<string>
  23. }
  24. export interface PublishOptions {
  25. audio: boolean // 是否开启麦克风
  26. video: boolean // 是否开启摄像头
  27. screen: boolean // 是否共享屏幕
  28. microphoneId?: string // 麦克风设备ID
  29. cameraId?: string // 摄像头设备ID
  30. extensionId?: string // chrome插件ID
  31. mediaStream?: MediaStream // 自定义的媒体流
  32. }
  33. export interface DeviceOptions {
  34. audio: boolean // 是否开启麦克风
  35. video: boolean // 是否开启摄像头
  36. microphoneId?: string // 麦克风设备ID
  37. cameraId?: string // 摄像头设备ID
  38. }
  39. export interface DeviceDetectionOptions {
  40. audio: boolean // 必填,指定是否检测麦克风设备
  41. video: boolean // 必填,指定是否检测摄像头设备
  42. microphoneId?: string // 选填,指定需要检测的麦克风设备的ID,可通过 getMicrophones 方法查询获得该ID,不填时,将检测默认的麦克风设备
  43. cameraId?: string // 选填,指定需要检测的摄像头设备的ID,可以通过 getCameras 方法查询获得该ID,不填时,将检测默认的摄像头设备
  44. }
  45. export interface DeviceDetectionResult {
  46. audio: boolean
  47. audioError?: string
  48. video: boolean
  49. videoError?: string
  50. }
  51. export interface User {
  52. uid: string // 用户ID
  53. }
  54. export interface Stream {
  55. sid: string // 流ID
  56. uid: string // 对应的用户的ID
  57. type: 'publish'|'subscribe' // 流类型
  58. mediaType?: 'camera'|'screen' // 流的媒体类型,用于对发布流的区分
  59. video: boolean // 是否包含音频
  60. audio: boolean // 是否包含视频
  61. muteAudio: boolean // 音频是否静音
  62. muteVideo: boolean // 视频是否静音
  63. mediaStream?: MediaStream // 业务侧自定义媒体流
  64. }
  65. export interface LeaveRoomOptions {
  66. keepRecording: boolean // 是否保持服务端录制,默认不保持
  67. }
  68. export interface AudioVolumeOptions {
  69. streamId?: string
  70. element?: HTMLMediaElement
  71. volume: number
  72. }
  73. export interface WaterMarkOptions {
  74. position?: WaterMarkPosition
  75. type?: WaterMarkType // 水印类型
  76. remarks?: string // 水印备注
  77. }
  78. export interface MixStreamOptions {
  79. width?: number // 混流后视频的宽度
  80. height?: number // 混流后视频的高度
  81. template?: number // 混流模板,对应不同的录制布局
  82. isAverage?: boolean // 是否均匀,均分对应平铺,不均分对应垂直
  83. }
  84. export interface RelayOptions {
  85. time?: number, // 转推开启时间的时间戳,不填时,将默认使用当前时间的时间戳
  86. fragment: number, // 切片
  87. }
  88. export interface RecordOptions {
  89. bucket: string
  90. region: string
  91. uid?: string // 指定某用户的流为主画面
  92. mainViewType?: MainViewType // 主画面类型
  93. mixStream?: MixStreamOptions
  94. waterMark?: WaterMarkOptions
  95. relay?: RelayOptions
  96. }
  97. export interface Record {
  98. FileName: string,
  99. RecordId: string
  100. }
  101. export interface EffectOptions {
  102. streamId?: string
  103. effectId: number
  104. filePath?: string
  105. loop?: boolean
  106. playTime?: number
  107. replace?: boolean
  108. }
  109. export interface EffectVolumeOptions {
  110. streamId?: string
  111. effectId: number
  112. volume: number
  113. }
  114. export interface SwitchDeviceOptions {
  115. streamId?: string
  116. type: DeviceType
  117. deviceId: string
  118. }
  119. export interface SwitchImageOptions {
  120. streamId?: string
  121. file?: File,
  122. filePath?: string
  123. }
  124. export interface SnapshotOptions {
  125. streamId?: string
  126. download?: string | boolean
  127. }
  128. export interface AudioStats {
  129. br: number
  130. lostpre: number
  131. vol: number
  132. mime: string
  133. }
  134. export interface VideoStats {
  135. br: number,
  136. lostpre: number,
  137. frt: number,
  138. w: number,
  139. h: number,
  140. mime: string
  141. }
  142. export interface NetworkStats {
  143. rtt: number
  144. }
  145. export interface ReplaceTrackOptions {
  146. streamId?: string
  147. track: MediaStreamTrack
  148. retain?: boolean
  149. }