index.d.ts 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619
  1. // Generated by dts-bundle v0.7.3
  2. declare module 'urtc-sdk' {
  3. import Logger from '__urtc-sdk/logger';
  4. import Client from '__urtc-sdk/client';
  5. import { setServers } from '__urtc-sdk/server';
  6. import { getSupportProfileNames } from '__urtc-sdk/resolutions';
  7. import { version } from '__urtc-sdk/version';
  8. import { genToken } from '__urtc-sdk/token';
  9. import { Codecs, DeviceDetectionOptions, DeviceDetectionResult } from '__urtc-sdk/types';
  10. export * from '__urtc-sdk/types';
  11. function getDevices(onSuccess: (data: MediaDeviceInfo[]) => any, onFailure: (data?: any) => any): void;
  12. const generateToken: typeof genToken;
  13. function getSupportedCodec(callback?: (data: Codecs) => any): void;
  14. function isSupportWebRTC(): boolean;
  15. function deviceDetection(options: DeviceDetectionOptions, callback: (result: DeviceDetectionResult) => any): void;
  16. export { Client };
  17. export { Logger };
  18. export { setServers };
  19. export { getDevices };
  20. export { getSupportProfileNames };
  21. export { version };
  22. export { generateToken };
  23. export { getSupportedCodec };
  24. export { isSupportWebRTC };
  25. export { deviceDetection };
  26. const UCloudRTC: {
  27. Client: typeof Client;
  28. setServers: typeof setServers;
  29. getDevices: typeof getDevices;
  30. getSupportProfileNames: typeof getSupportProfileNames;
  31. version: string;
  32. generateToken: typeof genToken;
  33. getSupportedCodec: typeof getSupportedCodec;
  34. isSupportWebRTC: typeof isSupportWebRTC;
  35. deviceDetection: typeof deviceDetection;
  36. };
  37. export default UCloudRTC;
  38. }
  39. declare module '__urtc-sdk/logger' {
  40. export enum ENUM_LOG_LEVEL {
  41. debug = 0,
  42. info = 1,
  43. warn = 2,
  44. error = 3
  45. }
  46. export class Logger {
  47. constructor(level?: ENUM_LOG_LEVEL);
  48. setLogLevel(level: string): void;
  49. debug(...args: any[]): void;
  50. info(...args: any[]): void;
  51. warn(...args: any[]): void;
  52. error(...args: any[]): void;
  53. onLog({}: {}): void;
  54. onWarn({}: {}): void;
  55. onError({}: {}): void;
  56. }
  57. const _default: Logger;
  58. export default _default;
  59. }
  60. declare module '__urtc-sdk/client' {
  61. import { UserRole, User, Stream, AudioStats, VideoStats, NetworkStats, LeaveRoomOptions, ClientOptions, DeviceOptions, DeviceDetectionOptions, DeviceDetectionResult, PublishOptions, AudioVolumeOptions, EventType, RecordOptions, Record, SwitchDeviceOptions, SwitchImageOptions, EffectOptions, EffectVolumeOptions, SnapshotOptions, ReplaceTrackOptions, MixOptions, StopMixOptions, MixResult, AddMixStreamsOptions, RemoveMixStreamsOptions, StartRecordOptions, RecordResult, UpdateMixStreamsOptions, StartRelayOptions, RelayResult, UpdateRelayPushURLOptions, UpdateRelayLayoutOptions, PlayOptions, PreviewStreamOptions, VideoProfileOptions, CustomVideoProfile } from '__urtc-sdk/types';
  62. export default class Client {
  63. constructor(appId: string, token: string, options?: ClientOptions);
  64. setRole(role: UserRole): boolean;
  65. joinRoom(roomId: string, userId: string, onSuccess?: (users: Array<User>, streams: Array<Stream>) => void, onFailure?: (data?: any) => void): void;
  66. leaveRoom(options?: LeaveRoomOptions, onSuccess?: () => void, onFailure?: (data?: any) => void): void;
  67. publish(options?: PublishOptions, onFailure?: (data?: Error) => void): void;
  68. unpublish(streamId?: string, onSuccess?: (stream: Stream) => void, onFailure?: (data?: any) => void): void;
  69. subscribe(streamId: string, onFailure?: (Error?: any) => void): void;
  70. unsubscribe(streamId: string, onSuccess?: (stream: Stream) => void, onFailure?: (data?: any) => void): void;
  71. on(event: EventType, listener: (data?: any) => void): void;
  72. off(event: EventType, listener: (data?: any) => void): void;
  73. muteAudio(streamId?: string): boolean;
  74. unmuteAudio(streamId?: string): boolean;
  75. muteVideo(streamId?: string): boolean;
  76. unmuteVideo(streamId?: string): boolean;
  77. startRecording(options: RecordOptions, onSuccess?: (data: Record) => void, onFailure?: (data?: any) => void): void;
  78. stopRecording(onSuccess?: () => void, onFailure?: (data?: any) => void): void;
  79. getUser(): User | undefined;
  80. getUsers(): User[];
  81. getStream(streamId?: string): Stream | undefined;
  82. getLocalStreams(): Stream[];
  83. getRemoteStreams(): Stream[];
  84. getStreams(): Stream[];
  85. getMediaStream(streamId?: string): MediaStream | undefined;
  86. getLocalMediaStream(streamId?: string): MediaStream | undefined;
  87. getRemoteMediaStream(streamId: string): MediaStream | undefined;
  88. play(options: PlayOptions, callback: (err?: Error) => void): void;
  89. resume(streamId: string, callback: (err?: Error) => void): void;
  90. pause(streamId: string, callback: (err?: Error) => void): void;
  91. stop(streamId: string, callback: (err?: Error) => void): void;
  92. getMicrophones(onSuccess?: (data: MediaDeviceInfo[]) => void, onFailure?: (data?: any) => void): void;
  93. getCameras(onSuccess?: (data: MediaDeviceInfo[]) => void, onFailure?: (data?: any) => void): void;
  94. getLoudspeakers(onSuccess?: (data: MediaDeviceInfo[]) => void, onFailure?: (data?: any) => void): void;
  95. setVideoProfile(options: string | CustomVideoProfile | VideoProfileOptions, onSuccess?: () => void, onFailure?: (data?: any) => void): void;
  96. switchDevice(options: SwitchDeviceOptions, onSuccess?: (data?: any) => void, onFailure?: (data?: any) => void): void;
  97. switchScreen(streamId?: string, onSuccess?: (data?: any) => void, onFailure?: (data?: any) => void): void;
  98. switchImage(options: SwitchImageOptions, onSuccess?: (data?: any) => void, onFailure?: (data?: any) => void): void;
  99. getAudioVolume(streamId?: string): number;
  100. setAudioVolume(options: AudioVolumeOptions, callback?: (data?: any) => void): void;
  101. getAudioStats(streamId?: string, onSuccess?: (data: AudioStats) => void, onFailure?: (data?: any) => void): void;
  102. getVideoStats(streamId?: string, onSuccess?: (data: VideoStats) => void, onFailure?: (data?: any) => void): void;
  103. getNetworkStats(streamId?: string, onSuccess?: (data: NetworkStats) => void, onFailure?: (data?: any) => void): void;
  104. preloadEffect(effectId: number, filePath: string, callback?: (data?: any) => void): void;
  105. unloadEffect(effectId: number): void;
  106. playEffect(options: EffectOptions, callback?: (data?: any) => void): void;
  107. pauseEffect(options: EffectOptions, callback?: (data?: any) => void): void;
  108. resumeEffect(options: EffectOptions, callback?: (data?: any) => void): void;
  109. stopEffect(options: EffectOptions, callback?: (data?: any) => void): void;
  110. setEffectVolume(options: EffectVolumeOptions, callback?: (data?: any) => void): void;
  111. snapshot(options?: SnapshotOptions, onSuccess?: (data: string) => void, onFailure?: (data?: any) => void): void;
  112. startPreviewing(options?: DeviceOptions, onSuccess?: (stream: MediaStream) => void, onFailure?: (data?: any) => void): void;
  113. stopPreviewing(): void;
  114. deviceDetection(options: DeviceDetectionOptions, callback: (result: DeviceDetectionResult) => void): void;
  115. replaceTrack(options: ReplaceTrackOptions, callback?: (err?: any, track?: MediaStreamTrack) => void): void;
  116. startMix(options: MixOptions, callback?: (err?: Error, data?: MixResult) => void): void;
  117. stopMix(options: StopMixOptions, callback?: (err?: Error, data?: MixResult) => void): void;
  118. queryMix(callback?: (err?: Error, data?: MixResult) => void): void;
  119. addMixStreams(options: AddMixStreamsOptions, callback?: (err?: Error, data?: MixResult) => void): void;
  120. removeMixStreams(options: RemoveMixStreamsOptions, callback?: (err?: Error, data?: MixResult) => void): void;
  121. startRecord(options: StartRecordOptions, callback?: (err?: Error, data?: RecordResult) => void): void;
  122. stopRecord(callback?: (err?: Error, data?: RecordResult) => void): void;
  123. updateRecordStreams(options: UpdateMixStreamsOptions, callback?: (err?: Error, data?: RecordResult) => void): void;
  124. startRelay(options: StartRelayOptions, callback?: (err?: Error, data?: RelayResult) => void): void;
  125. stopRelay(callback?: (err?: Error, data?: RelayResult) => void): void;
  126. updateRelayStreams(options: UpdateMixStreamsOptions, callback?: (err?: Error, data?: RelayResult) => void): void;
  127. updateRelayPushURL(options: UpdateRelayPushURLOptions, callback?: (err?: Error, data?: RelayResult) => void): void;
  128. updateRelayLayout(options: UpdateRelayLayoutOptions, callback?: (err?: Error, data?: RelayResult) => void): void;
  129. createStream(options: PreviewStreamOptions, callback: (err?: Error, stream?: Stream) => void): void;
  130. publishStream(previewId: string, callback: (err?: Error, stream?: Stream) => void): void;
  131. unpublishStream(previewId: string, callback: (err?: Error, stream?: Stream) => void): void;
  132. removeStream(previewId: string, callback: (err?: Error) => void): void;
  133. destroyStream(previewId: string, callback: (err?: Error) => void): void;
  134. enableAudioVolumeIndicator(interval?: number): void;
  135. logoff(action: 'quit' | 'reconnect' | 'switch' | 'refresh', users: string[], callback: (err?: Error) => void): void;
  136. }
  137. }
  138. declare module '__urtc-sdk/server' {
  139. export interface ServerConfig {
  140. api: string;
  141. log: string;
  142. signal: string;
  143. }
  144. export const SERVER_CONFIG: ServerConfig;
  145. export function setServers(conf: ServerConfig): void;
  146. }
  147. declare module '__urtc-sdk/resolutions' {
  148. import { CustomVideoProfile } from '__urtc-sdk/types';
  149. export const SUPPORT_RESOLUTIONS: {
  150. '240*180': {
  151. width: number;
  152. height: number;
  153. minFrameRate: number;
  154. maxFrameRate: number;
  155. minVideoBW: number;
  156. maxVideoBW: number;
  157. };
  158. '320*180': {
  159. width: number;
  160. height: number;
  161. minFrameRate: number;
  162. maxFrameRate: number;
  163. minVideoBW: number;
  164. maxVideoBW: number;
  165. };
  166. '320*240': {
  167. width: number;
  168. height: number;
  169. minFrameRate: number;
  170. maxFrameRate: number;
  171. minVideoBW: number;
  172. maxVideoBW: number;
  173. };
  174. '480*360': {
  175. width: number;
  176. height: number;
  177. minFrameRate: number;
  178. maxFrameRate: number;
  179. minVideoBW: number;
  180. maxVideoBW: number;
  181. };
  182. '640*360': {
  183. width: number;
  184. height: number;
  185. minFrameRate: number;
  186. maxFrameRate: number;
  187. minVideoBW: number;
  188. maxVideoBW: number;
  189. };
  190. '640*480': {
  191. width: number;
  192. height: number;
  193. minFrameRate: number;
  194. maxFrameRate: number;
  195. minVideoBW: number;
  196. maxVideoBW: number;
  197. };
  198. '640*480_1': {
  199. width: number;
  200. height: number;
  201. minFrameRate: number;
  202. maxFrameRate: number;
  203. minVideoBW: number;
  204. maxVideoBW: number;
  205. };
  206. '1280*720': {
  207. width: number;
  208. height: number;
  209. minFrameRate: number;
  210. maxFrameRate: number;
  211. minVideoBW: number;
  212. maxVideoBW: number;
  213. };
  214. '1280*720_1': {
  215. width: number;
  216. height: number;
  217. minFrameRate: number;
  218. maxFrameRate: number;
  219. minVideoBW: number;
  220. maxVideoBW: number;
  221. };
  222. '1280*720_2': {
  223. width: number;
  224. height: number;
  225. minFrameRate: number;
  226. maxFrameRate: number;
  227. minVideoBW: number;
  228. maxVideoBW: number;
  229. };
  230. '1280*720_3': {
  231. width: number;
  232. height: number;
  233. minFrameRate: number;
  234. maxFrameRate: number;
  235. minVideoBW: number;
  236. maxVideoBW: number;
  237. };
  238. '1920*1080': {
  239. width: number;
  240. height: number;
  241. minFrameRate: number;
  242. maxFrameRate: number;
  243. minVideoBW: number;
  244. maxVideoBW: number;
  245. };
  246. '1920*1080_1': {
  247. width: number;
  248. height: number;
  249. minFrameRate: number;
  250. maxFrameRate: number;
  251. minVideoBW: number;
  252. maxVideoBW: number;
  253. };
  254. '1920*1080_2': {
  255. width: number;
  256. height: number;
  257. minFrameRate: number;
  258. maxFrameRate: number;
  259. minVideoBW: number;
  260. maxVideoBW: number;
  261. };
  262. '1920*1080_3': {
  263. width: number;
  264. height: number;
  265. minFrameRate: number;
  266. maxFrameRate: number;
  267. minVideoBW: number;
  268. maxVideoBW: number;
  269. };
  270. };
  271. export const INTERNAL_SUPPORT_RESOLUTIONS: {};
  272. export const DEFAULT_PROFILE = "640*480";
  273. export function getSupportProfileNames(): Array<string>;
  274. export function getInternalSupportProfileNames(): Array<string>;
  275. export interface ResolutionAttributes {
  276. videoWidth: number;
  277. videoHeight: number;
  278. minFrameRate: number;
  279. maxFrameRate: number;
  280. minVideoBW: number;
  281. maxVideoBW: number;
  282. }
  283. export interface Resolution {
  284. profileName: string;
  285. video: MediaTrackConstraints;
  286. attributes: ResolutionAttributes;
  287. }
  288. export function getResolution(profile: string): Resolution;
  289. export function getCustomResolution(profile: CustomVideoProfile): Resolution;
  290. }
  291. declare module '__urtc-sdk/version' {
  292. export const version = "1.6.9";
  293. }
  294. declare module '__urtc-sdk/token' {
  295. export function genToken(appId: string, appKey: string, roomId: string, userId: string): string;
  296. export function decode(token: string): any;
  297. export function encode(data: any): string;
  298. const service: {
  299. genToken: typeof genToken;
  300. decode: typeof decode;
  301. encode: typeof encode;
  302. };
  303. export default service;
  304. }
  305. declare module '__urtc-sdk/types' {
  306. export type VideoCodec = 'vp8' | 'h264';
  307. export type AudioCodec = 'opus';
  308. export type RoomType = 'rtc' | 'live';
  309. export type UserRole = 'pull' | 'push' | 'push-and-pull';
  310. export type DeviceType = 'audio' | 'video';
  311. export type EventType = 'user-added' | 'user-removed' | 'stream-added' | 'stream-removed' | 'stream-published' | 'stream-subscribed' | 'mute-video' | 'unmute-video' | 'mute-audio' | 'unmute-audio' | 'screenshare-stopped' | 'connection-state-change' | 'kick-off' | 'network-quality' | 'stream-reconnected' | 'record-notify' | 'relay-notify' | 'volume-indicator' | 'error-notify';
  312. export type ConnectionState = 'OPEN' | 'CONNECTING' | 'CLOSING' | 'RECONNECTING' | 'CLOSED';
  313. export type WaterMarkPosition = 'left-top' | 'left-bottom' | 'right-top' | 'right-bottom';
  314. export type WaterMarkType = 'time' | 'image' | 'text';
  315. export type MainViewType = 'desktop' | 'screen' | 'camera';
  316. export type NetworkQuality = '0' | '1' | '2' | '3' | '4' | '5' | '6';
  317. export interface ClientOptions {
  318. type?: RoomType;
  319. role?: UserRole;
  320. codec?: VideoCodec;
  321. }
  322. export interface Codecs {
  323. audio: Array<AudioCodec>;
  324. video: Array<VideoCodec>;
  325. }
  326. export type FacingMode = 'user' | 'environment' | 'left' | 'right';
  327. export interface PublishOptions {
  328. audio: boolean;
  329. video: boolean;
  330. screenAudio?: boolean;
  331. screen: boolean;
  332. facingMode?: FacingMode;
  333. microphoneId?: string;
  334. cameraId?: string;
  335. extensionId?: string;
  336. mediaStream?: MediaStream;
  337. file?: File;
  338. filePath?: string;
  339. previewId?: string;
  340. }
  341. export interface PreviewStreamOptions extends PublishOptions {
  342. previewId: string;
  343. }
  344. export interface DeviceOptions {
  345. audio: boolean;
  346. video: boolean;
  347. facingMode?: FacingMode;
  348. microphoneId?: string;
  349. cameraId?: string;
  350. }
  351. export interface DeviceDetectionOptions {
  352. audio: boolean;
  353. video: boolean;
  354. microphoneId?: string;
  355. cameraId?: string;
  356. }
  357. export interface DeviceDetectionResult {
  358. audio: boolean;
  359. audioError?: string;
  360. video: boolean;
  361. videoError?: string;
  362. }
  363. export interface User {
  364. uid: string;
  365. }
  366. export interface Stream {
  367. previewId?: string;
  368. sid: string;
  369. uid: string;
  370. type: 'publish' | 'subscribe' | 'preview';
  371. mediaType?: 'camera' | 'screen';
  372. video: boolean;
  373. audio: boolean;
  374. muteAudio: boolean;
  375. muteVideo: boolean;
  376. mediaStream?: MediaStream;
  377. }
  378. export interface LeaveRoomOptions {
  379. keepRecording: boolean;
  380. }
  381. export interface AudioVolumeOptions {
  382. streamId?: string;
  383. element?: HTMLMediaElement;
  384. volume: number;
  385. }
  386. export interface WaterMarkOptions {
  387. position?: WaterMarkPosition;
  388. type?: WaterMarkType;
  389. remarks?: string;
  390. }
  391. export interface MixStreamOptions {
  392. width?: number;
  393. height?: number;
  394. template?: number;
  395. isAverage?: boolean;
  396. }
  397. export interface RelayOptions {
  398. time?: number;
  399. fragment: number;
  400. }
  401. export interface RecordOptions {
  402. bucket: string;
  403. region: string;
  404. uid?: string;
  405. mainViewType?: MainViewType;
  406. mixStream?: MixStreamOptions;
  407. waterMark?: WaterMarkOptions;
  408. relay?: RelayOptions;
  409. }
  410. export interface Record {
  411. FileName: string;
  412. RecordId: string;
  413. }
  414. export interface EffectOptions {
  415. streamId?: string;
  416. effectId: number;
  417. filePath?: string;
  418. loop?: boolean;
  419. playTime?: number;
  420. replace?: boolean;
  421. }
  422. export interface EffectVolumeOptions {
  423. streamId?: string;
  424. effectId: number;
  425. volume: number;
  426. }
  427. export interface SwitchDeviceOptions {
  428. streamId?: string;
  429. type: DeviceType;
  430. deviceId: string;
  431. }
  432. export interface SwitchImageOptions {
  433. streamId?: string;
  434. file?: File;
  435. filePath?: string;
  436. }
  437. export interface SnapshotOptions {
  438. streamId?: string;
  439. download?: string | boolean;
  440. }
  441. export interface AudioStats {
  442. br: number;
  443. lostpre: number;
  444. vol: number;
  445. mime: string;
  446. }
  447. export interface VideoStats {
  448. br: number;
  449. lostpre: number;
  450. frt: number;
  451. w: number;
  452. h: number;
  453. mime: string;
  454. }
  455. export interface NetworkStats {
  456. rtt: number;
  457. }
  458. export interface ReplaceTrackOptions {
  459. streamId?: string;
  460. track: MediaStreamTrack;
  461. retain?: boolean;
  462. }
  463. export type MixType = 'relay' | 'record' | 'relay-and-record' | 'update-config';
  464. export type MixLayoutType = 'flow' | 'main' | 'custom' | 'customMain' | 'customFlow' | 'single';
  465. export type MixAudioCodec = 'aac';
  466. export type MixVideoCodec = 'h264' | 'h265';
  467. export type H264Quality = 'B' | 'CB' | 'M' | 'E' | 'H';
  468. export type MixOutputMode = 'audio-video' | 'audio';
  469. export type MixStreamAddMode = 'automatic' | 'manual';
  470. export interface MixLayoutOptions {
  471. type: MixLayoutType;
  472. standbyTypes?: MixLayoutType[];
  473. custom?: Array<object>;
  474. mainViewUId?: string;
  475. mainViewType?: MainViewType;
  476. }
  477. export interface MixAudioOptions {
  478. codec: MixAudioCodec;
  479. }
  480. export interface MixVideoOptions {
  481. codec: MixVideoCodec;
  482. quality?: H264Quality;
  483. frameRate?: number;
  484. bitRate?: number;
  485. }
  486. export interface BackgroundColorOptions {
  487. r: number;
  488. g: number;
  489. b: number;
  490. }
  491. export interface MixOptions {
  492. type?: MixType;
  493. bucket?: string;
  494. region?: string;
  495. pushURL?: string[];
  496. layout?: MixLayoutOptions;
  497. audio?: MixAudioOptions;
  498. video?: MixVideoOptions;
  499. outputMode?: MixOutputMode;
  500. width?: number;
  501. height?: number;
  502. backgroundColor?: BackgroundColorOptions;
  503. waterMark?: WaterMarkOptions;
  504. streams?: MixStream[];
  505. streamAddMode?: MixStreamAddMode;
  506. timeoutPeriod?: number;
  507. keyUser?: string;
  508. }
  509. export interface StopMixOptions {
  510. type?: MixType;
  511. pushURL?: string[];
  512. }
  513. export interface MixResult {
  514. MixId: string;
  515. FileName?: string;
  516. Type?: MixType;
  517. PushURL?: string[];
  518. }
  519. export interface MixStream {
  520. uid: string;
  521. mediaType: 'camera' | 'screen';
  522. }
  523. export interface AddMixStreamsOptions {
  524. streams: MixStream[];
  525. }
  526. export interface RemoveMixStreamsOptions {
  527. streams: MixStream[];
  528. }
  529. export interface StartRecordOptions {
  530. bucket: string;
  531. region: string;
  532. layout?: MixLayoutOptions;
  533. width?: number;
  534. height?: number;
  535. backgroundColor?: BackgroundColorOptions;
  536. waterMark?: WaterMarkOptions;
  537. streams?: MixStream[];
  538. }
  539. export interface RecordResult {
  540. Id: string;
  541. FileName?: string;
  542. }
  543. export type UpdateMixStreamsType = 'add' | 'remove' | 'replace';
  544. export interface UpdateMixStreamsOptions {
  545. type: UpdateMixStreamsType;
  546. streams: MixStream[];
  547. }
  548. export interface StartRelayOptions {
  549. pushURL?: string[];
  550. layout?: MixLayoutOptions;
  551. audio?: MixAudioOptions;
  552. video?: MixVideoOptions;
  553. outputMode?: MixOutputMode;
  554. width?: number;
  555. height?: number;
  556. backgroundColor?: BackgroundColorOptions;
  557. waterMark?: WaterMarkOptions;
  558. streams?: MixStream[];
  559. streamAddMode?: MixStreamAddMode;
  560. }
  561. export interface RelayResult {
  562. Id: string;
  563. PushURL?: string[];
  564. }
  565. export type UpdateRelayPushURLType = 'add' | 'remove' | 'replace';
  566. export interface UpdateRelayPushURLOptions {
  567. type: UpdateRelayPushURLType;
  568. pushURL: string[];
  569. }
  570. export interface UpdateRelayLayoutOptions {
  571. layout: MixLayoutOptions;
  572. }
  573. export interface UpdateRelayWaterMarkOptions {
  574. waterMark: WaterMarkOptions;
  575. }
  576. export type VideoFitType = 'cover' | 'contain';
  577. export type PlayControlsOption = 'show' | 'hide' | 'auto';
  578. export interface PlayOptions {
  579. streamId: string;
  580. container: HTMLElement | string;
  581. mute?: boolean;
  582. mirror?: boolean;
  583. fit?: VideoFitType;
  584. controls?: PlayControlsOption;
  585. }
  586. export interface CustomVideoProfile {
  587. width: number;
  588. height: number;
  589. framerate: number;
  590. bitrate: number;
  591. }
  592. export interface VideoProfileOptions {
  593. previewId?: string;
  594. profile: string | CustomVideoProfile;
  595. }
  596. export interface MixNotification {
  597. code: string;
  598. message: string;
  599. }
  600. export interface ErrorNotification {
  601. code: string;
  602. message: string;
  603. }
  604. export interface AudioVolume {
  605. sid: string;
  606. uid: string;
  607. mediaType: 'camera' | 'screen';
  608. volume: number;
  609. }
  610. }