No Description

types.ts 10KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336
  1. import { ViewProps } from 'react-native';
  2. /**
  3. * AgoraViewMode
  4. * @mode hidden Uniformly scale the video until it fills the visible boundaries (cropped). One dimension of the video may have clipped contents.
  5. * @mode FIT Uniformly scale the video until one of its dimension fits the boundary (zoomed to fit). Areas that are not filled due to the disparity in the aspect ratio are filled with black.
  6. */
  7. export enum AgoraViewMode {
  8. HIDDEN = 1,
  9. FIT = 2
  10. }
  11. /**
  12. * AgoraUserInfo
  13. * @property uid: number
  14. * @property userAccount: string
  15. */
  16. export interface AgoraUserInfo {
  17. uid: number
  18. userAccount: string
  19. };
  20. /**
  21. * VideoEncoderConfig details
  22. * @property width: number | The encoder video's width
  23. * @property height: number | The encoder video's height
  24. * @property bitrate: number | The encoder video's bitrate
  25. * @property frameRate: number | The frameRate of encoder video
  26. * @property orientationMode: number | The video orientation mode of the video
  27. * @orientationMode value range is [0 is "mode adapative", 1 is "mode fixed landscape", 2 is "mode fixed portrait"]
  28. */
  29. export interface VideoEncoderConfig {
  30. width: number,
  31. height: number,
  32. bitrate: number,
  33. frameRate: number,
  34. orientationMode: number,
  35. }
  36. /**
  37. * Option is used to {@link init}
  38. * @member {@link appid} Sets the appid
  39. * @member {@link channelProfile} Number channelProfile Sets the channel mode. 0 is communication mode, 1 is broadcasting mode
  40. * @member {@link VideoEncoderConfig} sets video encoding config
  41. * @member {@link dualStream} is optional parameter only for enable for detail see [more](https://docs.agora.io/en/Video/API%20Reference/oc/Classes/AgoraRtcEngineKit.html#//api/name/enableDualStreamMode)
  42. * @member {@link mode} is optional sets only enable video / audio, 0 is audio mode, 1 is video mode
  43. * @member {@link clientRole} is only work in live mode, 1 is host, 2 is audience
  44. * @member {@link audioProfile} Sets audio profile to agora rtc sdk See more [details](https://docs.agora.io/en/Video/API%20Reference/oc/Constants/AgoraAudioProfile.html)
  45. * @member {@link audioScenario} Sets audio scenario to agora rtc sdk more [details](https://docs.agora.io/en/Video/API%20Reference/oc/Constants/AgoraAudioScenario.html)
  46. * @member {@link beauty} {@link BeautyOption}
  47. * @member {@link voice} {@link VoiceDecorator}
  48. */
  49. export interface Option {
  50. appid: String,
  51. channelProfile: number,
  52. videoEncoderConfig: VideoEncoderConfig,
  53. dualStream: boolean,
  54. mode: number,
  55. clientRole: number,
  56. audioProfile: number,
  57. audioScenario: number,
  58. beauty?: BeautyOption,
  59. voice?: VoiceDecorator,
  60. }
  61. /**
  62. * VoiceDecorator is decorate local audio voice
  63. *
  64. * @description
  65. * type 'reverbPreset' range values: [0 is "off", 1 is "popular", 2 is "rnb", 3 is "rock", 4 is "hiphop", 5 is "vocal concert", 6 is "KTV", 7 is "studio"]
  66. * type 'changer' range values: [0 is "off", 1 is "old man", 2 is "baby boy", 3 is "baby girl", 4 is "zhubajie", 5 is "ethereal", 6 is "hulk"]
  67. * @member type: string | the range values ['changer' | 'reverbPreset'] This property is the identifier for audio voice decorator
  68. * @member value: number | the value for voice parameter option.
  69. */
  70. export interface VoiceDecorator {
  71. type: string,
  72. value: number
  73. }
  74. export interface PublisherConfig {
  75. width: number,
  76. height: number,
  77. framerate: number,
  78. bitrate: number,
  79. defaultLayout: number,
  80. lifeCycle: number,
  81. pubishUrl: string,
  82. rawStreamUrl: string,
  83. extraInfo: String,
  84. owner: boolean
  85. }
  86. export interface BackgroundImage {
  87. url: string,
  88. x: number,
  89. y: number,
  90. width: number,
  91. height: number
  92. }
  93. export interface Size {
  94. width: number,
  95. height: number
  96. }
  97. export interface TranscodingUser {
  98. uid: number,
  99. x: number,
  100. y: number,
  101. width: number,
  102. height: number,
  103. alpha: number,
  104. zOrder: number,
  105. audioChannel: number
  106. }
  107. export interface Color {
  108. red: number,
  109. green: number,
  110. blue: number,
  111. alpha: number
  112. }
  113. export enum VideoCodecProfile {
  114. BASELINE = 66,
  115. MAIN = 77,
  116. HIGH = 100
  117. }
  118. export enum AudioCodecProfile {
  119. LC_AAC = 0,
  120. HE_AAC = 1
  121. }
  122. export enum AudioSampleRate {
  123. TYPE_32000 = 32000,
  124. TYPE_44100 = 44100,
  125. TYPE_48000 = 48000,
  126. }
  127. /**
  128. * AgoraChannelStereo
  129. * @note Agora’s self-defined audio channel type. We recommend choosing ONE or TWO. Special players are required if you choose TRHEE, FOUR or FIVE:
  130. */
  131. export enum AudioChannelStereo {
  132. ONE = 1,
  133. TWO = 2,
  134. TRHEE = 3,
  135. FOUR = 4,
  136. FIVE = 5
  137. }
  138. /**
  139. * @member {@link size} {@link Size}
  140. * @member {@link videoBitrate} integer number
  141. * @member {@link videoFramerate} integer number
  142. * @member {@link lowLatency} boolean
  143. * @member {@link videoGop} number
  144. * @member {@link videoCodecProfile} {@link VideoCodecProfile}
  145. * @member {@link audioCodecProfile} {@link AudioCodecProfile}
  146. * @member {@link audioSampleRate} {@link AudioSampleRate}
  147. * @member {@link watermark} {@link BackgroundImage}
  148. * @member {@link backgroundImage} {@link BackgroundImage}
  149. * @member {@link backgroundColor} Standard RGB hex number: e.g. 0xffffff
  150. * @member {@link audioBitrate} number
  151. * @member {@link audioChannels} {@link AudioChannelStereo}
  152. * @member {@link transcodingUsers} Array,{@link TranscodingUser}>,
  153. * @member {@link transcodingExtraInfo} string
  154. */
  155. export interface LiveTranscodingOption {
  156. size: Size,
  157. videoBitrate: number,
  158. videoFramerate: number,
  159. lowLatency: boolean, // @deprecate lowLatency
  160. videoGop: number,
  161. videoCodecProfile: VideoCodecProfile,
  162. audioCodecProfile: AudioCodecProfile,
  163. audioSampleRate: AudioSampleRate,
  164. watermark: BackgroundImage,
  165. backgroundImage: BackgroundImage,
  166. backgroundColor: number,
  167. audioBitrate: number,
  168. audioChannels: AudioChannelStereo,
  169. transcodingUsers: Array<TranscodingUser>,
  170. transcodingExtraInfo: string,
  171. }
  172. export interface VideoOption {
  173. uid: number,
  174. renderMode: number,
  175. reactTag: number
  176. }
  177. export interface AudioRecordingOption {
  178. filepath: String,
  179. quality: number
  180. }
  181. export type Callback<T> = (err: any, data: any) => T;
  182. export type Nullable<T> = T | null | undefined;
  183. export type String = Nullable<string>;
  184. export type Number = Nullable<number> | 0;
  185. export interface AgoraViewProps extends ViewProps {
  186. mode: number,
  187. showLocalVideo: boolean,
  188. remoteUid: number,
  189. zOrderMediaOverlay: boolean,
  190. [key:string]: any;
  191. }
  192. export interface DataStreamOption {
  193. streamId: number,
  194. ordered: boolean,
  195. reliable: boolean
  196. }
  197. export interface AudioMixingOption {
  198. filepath: String,
  199. loopback: boolean,
  200. replace: boolean,
  201. cycle: number
  202. }
  203. export interface PlayEffectOption {
  204. soundId: number,
  205. filepath: String,
  206. loopcount: number,
  207. pitch: number,
  208. pan: number,
  209. gain: number,
  210. publish: boolean
  211. }
  212. export interface AudioFrameOption {
  213. sampleRate: number,
  214. channel: number,
  215. mode: number,
  216. samplesPerCall: number
  217. }
  218. export interface MixedAudioFrameOption {
  219. sampleRate: number,
  220. samplesPerCall: number
  221. }
  222. export interface ImageOption {
  223. url: String,
  224. height: number,
  225. width: number,
  226. x: number,
  227. y: number
  228. }
  229. export interface VideoStreamOption {
  230. uid: number,
  231. streamType: number
  232. }
  233. export interface DefaultVideoStreamOption {
  234. streamType: number
  235. }
  236. export interface InjectStreamOption {
  237. url: String,
  238. config: {
  239. size: {
  240. width: number,
  241. height: number,
  242. },
  243. videoGop: number,
  244. videoBitrate: number,
  245. videoFramerate: number,
  246. audioBitrate: number,
  247. audioSampleRate: number,
  248. audioChannels: number
  249. }
  250. }
  251. export interface RemoveInjectStreamOption {
  252. url: String
  253. }
  254. export interface PublishStreamOption {
  255. url: String,
  256. enable: boolean
  257. }
  258. export interface RemovePublishStreamOption {
  259. url: String
  260. }
  261. export interface PositionOption {
  262. x: number,
  263. y: number
  264. }
  265. /**
  266. * BeautyOption is setBeautyEffectOptions's option parameter
  267. * @property lighteningContrastLevel: integer | lightening contrast level and the value ranges is low: 0, normal: 1, high: 2
  268. * @property lighteningLevel: float | brightness level and the value ranges between 0.0 (original) and 1.0.
  269. * @property smoothnessLevel: float | The sharpness level. The value ranges between 0.0 (original) and 1.0. This parameter is usually used to remove blemishes.
  270. * @property rednessLevel: float | The redness level. The value ranges between 0.0 (original) and 1.0. This parameter adjusts the red saturation level.
  271. */
  272. export interface BeautyOption {
  273. lighteningContrastLevel: number,
  274. lighteningLevel: number,
  275. smoothnessLevel: number,
  276. rednessLevel: number,
  277. }
  278. /**
  279. * LastmileProbeConfig is startLastmileProbeTest's config parameter
  280. * @property probeUplink: boolean | sets whether or not to test the uplink networks. some users, for example, the audience in a Live-broadcast channel, do not need such a test. true: enables the probe test. false: disables the probe test.
  281. * @property probeDownlink: boolean | sets whether or not to probe the downlink network. true: enables the probe test. false: disables the probe test.
  282. * @property expectedUplinkBitrate: integer | The expected maximum sending bitrate (Kbps) of the local user. The value ranges between 100 and 5000. We recommend setting this parameter according to the bitrate value set by setVideoEncoderConfiguration.
  283. * @property expectedDownlinkBitrate: integer | The expected maximum receiving bitrate (Kbps) of the local user. The value ranges between 100 and 5000.
  284. */
  285. export interface LastmileProbeConfig {
  286. probeUplink: boolean,
  287. probeDownlink: boolean,
  288. expectedUplinkBitrate: number,
  289. expectedDownlinkBitrate: number
  290. }
  291. /**
  292. * CameraCapturerConfiguration is setCameraCapturerConfiguration's config parameter
  293. * @property preference: number | The Camera capture preference and the value range is [0 is "(default) self-adapts the camera output parameters to the system performance and network conditions to balance CPU consumption and video preview quality.", 1 is "prioritizes the system performance. The SDK chooses the dimension and frame rate of the local camera capture closest to those set by setVideoEncoderConfiguration.", 2 is "prioritizes the local preview quality. The SDK chooses higher camera output parameters to improve the local video preview quality. This option requires extra CPU and RAM usage for video pre-processing."]
  294. */
  295. export interface CameraCapturerConfiguration {
  296. preference: number
  297. }