EMCallConference.h 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426
  1. /*!
  2. * \~chinese
  3. * @header EMCallConference.h
  4. * @abstract 多人会议
  5. * @author Hyphenate
  6. * @version 3.00
  7. *
  8. * \~english
  9. * @header EMCallConference.h
  10. * @abstract COnference
  11. * @author Hyphenate
  12. * @version 3.00
  13. */
  14. #import <Foundation/Foundation.h>
  15. typedef NS_ENUM(NSInteger, EMConferenceRole){
  16. EMConferenceRoleNone = 0,
  17. EMConferenceRoleAudience = 1, /*! \~chinese 观众,只能订阅流 \~english Audience, only sub */
  18. EMConferenceRoleSpeaker = 3, /*! \~chinese 主播,订阅流和发布流 \~english Speaker, pub and sub */
  19. EMConferenceRoleAdmin = 7, /*! \~chinese 管理员,授权,订阅流,发布流 \~english Admin, authorize, pub and sub */
  20. };
  21. typedef NS_ENUM(NSInteger, EMConferenceType){
  22. EMConferenceTypeCommunication = 10, /*! \~chinese 普通通信会议,成员最多6人,参会者都是EMConferenceRoleSpeaker \~english Communication,Up to 6 members, member role is EMConferenceRoleSpeaker */
  23. EMConferenceTypeLargeCommunication, /*! \~chinese 大型通信会议,成员6-30人, 参会者都是EMConferenceRoleSpeaker \~english Communication, 6-30 members, member role is EMConferenceRoleSpeaker */
  24. EMConferenceTypeLive, /*! \~chinese 互动视频会议,会议里支持最多6个主播和600个观众 \~english Live,support for up to 6 speakers and 600 audiences. */
  25. };
  26. typedef NS_ENUM(NSInteger, EMMediaType){
  27. EMMediaTypeAudio,
  28. EMMediaTypeVideo,
  29. };
  30. typedef NS_ENUM(NSInteger, EMMediaState){
  31. EMMediaStateNormal,
  32. EMMediaStateNoData,
  33. };
  34. typedef NS_ENUM(NSInteger, EMConferenceState) {
  35. EMConferenceStateNone = 0,
  36. EMConferenceStateTakePicture = 125,
  37. EMConferenceStateCustomMsg = 126,
  38. EMConferenceStateCtrlMsg = 127,
  39. EMConferenceStateResponceMsg = 128,
  40. EMConferenceStateUnpub = 130,
  41. EMConferenceStateP2PPeerexist = 181,
  42. EMConferenceStateOpenCameraFail = 201,
  43. EMConferenceStateOpenMicFail = 202,
  44. EMConferenceStateTakePictureFail = 203,
  45. EMConferenceStateSendFirstAudioFrame = 208,
  46. EMConferenceStateSendFirstVideoFrame = 209,
  47. EMConferenceStateReceivedFirstAudioFrame = 210,
  48. EMConferenceStateReceivedFirstVideoFrame = 211,
  49. };
  50. /*!
  51. * \~chinese
  52. * cdn 画布设置,创建会议时使用
  53. *
  54. * \~english
  55. * The cdn canvas config
  56. */
  57. @interface CDNCanvas : NSObject
  58. /*! \~chinese 画布宽度 \~english The width of canvas */
  59. @property (nonatomic) NSInteger width;
  60. /*! \~chinese 画布高度 \~english The height of canvas */
  61. @property (nonatomic) NSInteger height;
  62. /*! \~chinese 画布的背景色,格式为 RGB 定义下的 Hex 值,不要带 # 号,如 0xFFB6C1 表示浅粉色。默认0x000000,黑色。
  63. * \~english The bgclr of canvas ,use interger as 0x112233, 0x11 is red value,0x22 is green value,0x33 is blue value*/
  64. @property (nonatomic) NSInteger bgclr;
  65. /*! \~chinese 推流帧率,可设置范围10-30 \~english The fps of cdn live,valid value is 10-30 */
  66. @property (nonatomic) NSInteger fps;
  67. /*! \~chinese 推流码率,单位kbps,width和height较大时,码率需要提高,可设置范围1-5000 \~english The bps of cdn live. Unit is kbps,valid value is 1-5000 */
  68. @property (nonatomic) NSInteger kbps;
  69. /*! \~chinese 推流编码格式,目前只支持"H264" \~english The codec of cdn live,now only support "H264* codec */
  70. @property (nonatomic) NSString* codec;
  71. @end
  72. /*!
  73. * \~chinese
  74. * cdn推流的每一路流的模式
  75. *
  76. * \~english
  77. * The style of stream in cdn live
  78. */
  79. typedef NS_ENUM(NSInteger, LiveRegionStyle) {
  80. /*! \~chinese FIt模式\~english The fit content mode */
  81. LiveRegionStyleFit,
  82. /*! \~chinese FIll模式\~english The fill content mode */
  83. LiveRegionStyleFill
  84. };
  85. /*!
  86. * \~chinese
  87. * cdn推流的每一路流的区域位置信息
  88. *
  89. * \~english
  90. * The region info of each stream in cdn live
  91. */
  92. @interface LiveRegion : NSObject
  93. /*! \~chinese 流ID \~english The stream Id */
  94. @property (nonatomic) NSString* streamId;
  95. /*! \~chinese 流的左上角在x轴坐标 \~english The pointX of left top */
  96. @property (nonatomic) NSInteger x;
  97. /*! \~chinese 流的左上角在y轴坐标 \~english The pointY of left top */
  98. @property (nonatomic) NSInteger y;
  99. /*! \~chinese 流的宽度 \~english The width of stream */
  100. @property (nonatomic) NSInteger w;
  101. /*! \~chinese 流的高度 \~english The height of stream */
  102. @property (nonatomic) NSInteger h;
  103. /*! \~chinese 流的图层顺序,越小越在底层,从1开始 \~english The zorder of stream,start from 1,the smaller is under others*/
  104. @property (nonatomic) NSInteger z;
  105. /*! \~chinese 流的显示模式,Fit或Fill \~english The content mode of stream,fit or fill*/
  106. @property (nonatomic) LiveRegionStyle style;
  107. @end
  108. /*!
  109. * \~chinese
  110. * cdn推流的音频比特率
  111. *
  112. * \~english
  113. * The audio bps of audio in cdn live
  114. */
  115. typedef NS_ENUM(NSInteger, LiveAudioBps) {
  116. LiveAudioBps_8K = 8000,
  117. LiveAudioBps_10K = 10000,
  118. LiveAudioBps_15K = 15000,
  119. LiveAudioBps_20K = 20000,
  120. LiveAudioBps_32K = 32000,
  121. LiveAudioBps_36K = 36000,
  122. LiveAudioBps_64K = 64000,
  123. LiveAudioBps_128K = 128000,
  124. };
  125. /*!
  126. * \~chinese
  127. * cdn推流的音频采样率
  128. *
  129. * \~english
  130. * The audio sampleRate of audio in cdn live
  131. */
  132. typedef NS_ENUM(NSInteger, LiveAudioSampleRate) {
  133. LiveAudioSampleRate_8K = 8000,
  134. LiveAudioSampleRate_16K = 16000,
  135. LiveAudioSampleRate_32K = 32000,
  136. LiveAudioSampleRate_44K = 44100,
  137. LiveAudioSampleRate_48K = 48000,
  138. };
  139. /*!
  140. * \~chinese
  141. * 音频录制的配置信息
  142. *
  143. * \~english
  144. * The config of audio record.
  145. */
  146. @interface AudioConfig : NSObject
  147. /*! \~chinese 音频比特率 \~english The audio bps */
  148. @property (nonatomic) LiveAudioBps bps;
  149. /*! \~chinese 音频通道数,可选1或2 \~english The channels of audio.1 or 2*/
  150. @property (nonatomic) NSInteger channels;
  151. /*! \~chinese 音频采样率 \~english The samples of audio.*/
  152. @property (nonatomic) LiveAudioSampleRate samples;
  153. @end
  154. /*!
  155. * \~chinese
  156. * cdn推流使用的画布类型
  157. *
  158. * \~english
  159. * cdn live layout style
  160. */
  161. typedef NS_ENUM(NSInteger, LayoutStyle) {
  162. CUSTOM,
  163. DEMO,
  164. GRID
  165. };
  166. typedef CDNCanvas LiveCanvas;
  167. /*!
  168. * \~chinese
  169. * 自定义录制音视频的格式
  170. *
  171. * \~english
  172. * the format of custom record file ext
  173. */
  174. typedef NS_ENUM(NSInteger, RecordExt) {
  175. RecordExtMP3,
  176. RecordExtWAV,
  177. RecordExtM4A,
  178. RecordExtMP4,
  179. RecordExtAUTO,
  180. RecordExtUNSUPPORTED = RecordExtAUTO,
  181. };
  182. /*!
  183. * \~chinese
  184. * cdn推流设置
  185. *
  186. * \~english
  187. * The cdn push stream config
  188. */
  189. @interface LiveConfig : NSObject
  190. /*! \~chinese 推流url地址\~english The url address of cdn live*/
  191. @property (nonatomic,strong) NSString *cdnUrl;
  192. /*! \~chinese 推流画布的配置\~english The config of live canvas*/
  193. @property (nonatomic) LiveCanvas* canvas;
  194. /*! \~chinese 推流方式,GRID或者CUSTOM,GRID将由服务器设置位置信息,CUSTOM将由用户自定义流的位置信息\~english The style of cdn live,GRID or CUSTOM.If GRID,server set region of streams.If CUSTOM,user set region of streams*/
  195. @property (nonatomic) LayoutStyle layoutStyle;
  196. /*! \~chinese 是否开启自定义录制\~english Weather custom servre record*/
  197. @property (nonatomic) BOOL record;
  198. /*! \~chinese 音频j录制参数\~english audio record config*/
  199. @property (nonatomic) AudioConfig* audioCfg;
  200. @property (nonatomic) RecordExt recordExt;
  201. @end
  202. /*!
  203. * \~chinese
  204. * 多人会议成员对象
  205. *
  206. * \~english
  207. * Conference member class
  208. */
  209. @interface EMCallMember : NSObject
  210. /*!
  211. * \~chinese
  212. * 成员标识符
  213. *
  214. * \~english
  215. * Unique member id
  216. */
  217. @property (nonatomic, strong, readonly) NSString *memberId;
  218. /*!
  219. * \~chinese
  220. * 成员名
  221. *
  222. * \~english
  223. * The member name
  224. */
  225. @property (nonatomic, strong, readonly) NSString *memberName;
  226. /*!
  227. * \~chinese
  228. * 扩展信息
  229. *
  230. * \~english
  231. * Extension
  232. */
  233. @property (nonatomic, strong, readonly) NSString *ext;
  234. /*!
  235. * \~chinese
  236. * 昵称
  237. *
  238. * \~english
  239. * nickname
  240. */
  241. @property (nonatomic, strong, readonly) NSString *nickname;
  242. @end
  243. /*!
  244. * \~chinese
  245. * 多人会议对象
  246. *
  247. * \~english
  248. * Conference class
  249. */
  250. @interface EMCallConference : NSObject
  251. /*!
  252. * \~chinese
  253. * 会话标识符, 本地生成
  254. *
  255. * \~english
  256. * Unique call id, locally generated
  257. */
  258. @property (nonatomic, strong, readonly) NSString *callId;
  259. /*!
  260. * \~chinese
  261. * 会议标识符,服务器生成
  262. *
  263. * \~english
  264. * Unique conference id, server generation
  265. */
  266. @property (nonatomic, strong, readonly) NSString *confId;
  267. /*!
  268. * \~chinese
  269. * 通话本地的username
  270. *
  271. * \~english
  272. * Local username
  273. */
  274. @property (nonatomic, strong, readonly) NSString *localName;
  275. /*!
  276. * \~chinese
  277. * 会议类型
  278. *
  279. * \~english
  280. * The conference type
  281. */
  282. @property (nonatomic) EMConferenceType type;
  283. /*!
  284. * \~chinese
  285. * 在会议中的角色
  286. *
  287. * \~english
  288. * Role in the conference
  289. */
  290. @property (nonatomic) EMConferenceRole role;
  291. /*!
  292. * \~chinese
  293. * 管理员列表
  294. *
  295. * \~english
  296. * Administrator's id list
  297. */
  298. @property (nonatomic, strong) NSArray<NSString *> *adminIds;
  299. /*!
  300. * \~chinese
  301. * 主播列表
  302. *
  303. * \~english
  304. * Speaker's id list
  305. */
  306. @property (nonatomic, strong) NSArray<NSString *> *speakerIds;
  307. /*!
  308. * \~chinese
  309. * 当前会议中成员总数(包含自己)
  310. *
  311. * \~english
  312. * Total number of members in the current meeting (including yourself)
  313. */
  314. @property (nonatomic) NSInteger memberCount;
  315. /*!
  316. * \~chinese
  317. * 是否启用服务器录制
  318. *
  319. * \~english
  320. * Whether server recording is enabled
  321. */
  322. @property (nonatomic) BOOL willRecord;
  323. /*!
  324. * \~chinese
  325. * 在会议中的昵称
  326. *
  327. * \~english
  328. * The nickName in conference
  329. */
  330. @property (nonatomic) NSString* nickName;
  331. /*!
  332. * \~chinese
  333. * 在会议中的memId
  334. *
  335. * \~english
  336. * The memId in conference
  337. */
  338. @property (nonatomic,strong ,readonly) NSString* memId;
  339. /*!
  340. * \~chinese
  341. * 在会议中的cdn推流ID
  342. *
  343. * \~english
  344. * The cdn liveID in conference
  345. */
  346. @property (nonatomic) NSString* liveId;
  347. /*!
  348. * \~chinese
  349. * 在会议中的cdn推流配置
  350. *
  351. * \~english
  352. * The cdn liveID in conference
  353. */
  354. @property (nonatomic,strong) NSDictionary* liveCfgs;
  355. /*!
  356. * \~chinese
  357. * 是否会议的创建者
  358. *
  359. * \~english
  360. * Weather is the creator of conference
  361. */
  362. @property (nonatomic) BOOL isCreator;
  363. /*!
  364. * \~chinese
  365. * 当前会议中观众总数
  366. *
  367. * \~english
  368. * Total number of audiences in the current meeting
  369. */
  370. @property (nonatomic) NSInteger audiencesCount;
  371. @end