123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943 |
- /*!
- * \~chinese
- * @header IEMConferenceManager.h
- * @abstract 此协议定义了多人实时音频/视频通话相关操作
- * @author Hyphenate
- * @version 3.00
- *
- * \~english
- * @header IEMConferenceManager.h
- * @abstract This protocol defines a multiplayer real-time audio / video call related operation
- * @author Hyphenate
- * @version 3.00
- */
- #ifndef IEMConferenceManager_h
- #define IEMConferenceManager_h
- #import <Foundation/Foundation.h>
- #import <AVFoundation/AVFoundation.h>
- #import "EMCallConference.h"
- #import "EMConferenceManagerDelegate.h"
- #import "EMCallVideoView.h"
- #import "EMWaterMarkOption.h"
- @class EMError;
- /*!
- * \~chinese
- * 多人会议场景
- *
- * \~english
- * Conference mode
- */
- typedef enum {
- EMConferenceModeNormal = 0, /*! \~chinese 人数较少 \~english A small number of people for video conferencing */
- EMConferenceModeLarge, /*! \~chinese 人数较多 \~english A large number of people for video conferencing */
- } EMConferenceMode EM_DEPRECATED_IOS(3_1_0, 3_4_3, "Use -DELETE");
- /*!
- * \~chinese
- * 多人实时音频/视频通话相关操作
- *
- * \~english
- * Multi-user real-time audio / video call related operations
- */
- @protocol IEMConferenceManager <NSObject>
- @optional
- #pragma mark - Delegate
- /*!
- * \~chinese
- * 添加回调代理
- *
- * @param aDelegate 要添加的代理
- * @param aQueue 执行代理方法的队列
- *
- * \~english
- * Add delegate
- *
- * @param aDelegate Delegate
- * @param aQueue The queue of call delegate method
- */
- - (void)addDelegate:(id<EMConferenceManagerDelegate>)aDelegate
- delegateQueue:(dispatch_queue_t)aQueue;
- /*!
- * \~chinese
- * 移除回调代理
- *
- * @param aDelegate 要移除的代理
- *
- * \~english
- * Remove delegate
- *
- * @param aDelegate Delegate
- */
- - (void)removeDelegate:(id<EMConferenceManagerDelegate>)aDelegate;
- #pragma mark - Conference
- /*!
- * \~chinese
- * 设置应用Appkey, 环信ID, 环信ID对应的Token
- *
- * @param aAppkey 应用在环信注册的Appkey
- * @param aUserName 环信ID
- * @param aToken 环信ID对应的Token
- *
- * \~english
- * Setup MemberName
- *
- * @param aAppkey AppKey in Hyphenate
- * @param aUserName The Hyphenate ID
- * @param aToken The token of Hyphenate ID
- */
- - (void)setAppkey:(NSString *)aAppkey
- username:(NSString *)aUsername
- token:(NSString *)aToken;
- /*!
- * \~chinese
- * 构建MemberName
- *
- * @param aAppkey 应用在环信注册的Appkey
- * @param aUserName 环信ID
- *
- * @result MemberName
- *
- * \~english
- * Setup MemberName
- *
- * @param aAppkey AppKey in Hyphenate
- * @param aUserName The Hyphenate ID
- *
- * @result MemberName
- */
- - (NSString *)getMemberNameWithAppkey:(NSString *)aAppkey
- username:(NSString *)aUserName;
- /*!
- * \~chinese
- * 判断会议是否存在
- *
- * @param aConfId 会议ID(EMCallConference.confId)
- * @param aPassword 会议密码
- * @param aCompletionBlock 完成的回调
- *
- * \~english
- * Determine if the conference exists
- *
- * @param aConfId Conference ID (EMCallConference.confId)
- * @param aPassword The password of the conference
- * @param aCompletionBlock The callback block of completion
- */
- - (void)getConference:(NSString *)aConfId
- password:(NSString *)aPassword
- completion:(void (^)(EMCallConference *aCall, EMError *aError))aCompletionBlock;
- /*!
- * \~chinese
- * 创建并加入会议
- *
- * @param aType 会议类型
- * @param aPassword 会议密码
- * @param aCompletionBlock 完成的回调
- *
- * \~english
- * Create and join a conference
- *
- * @param aType The type of the conference
- * @param aPassword The password of the conference
- * @param aCompletionBlock The callback block of completion
- */
- - (void)createAndJoinConferenceWithType:(EMConferenceType)aType
- password:(NSString *)aPassword
- completion:(void (^)(EMCallConference *aCall, NSString *aPassword, EMError *aError))aCompletionBlock;
- /*!
- * \~chinese
- * 创建并加入会议
- *
- * @param aType 会议类型
- * @param aPassword 会议密码
- * @param isRecord 是否开启服务端录制
- * @param isMerge 录制时是否合并数据流
- * @param aCompletionBlock 完成的回调
- *
- * \~english
- * Create and join a conference
- *
- * @param aType The type of the conference
- * @param aPassword The password of the conference
- * @param isRecord Whether to record using a server
- * @param isMerge Whether to merge data streams while recording
- * @param aCompletionBlock The callback block of completion
- */
- - (void)createAndJoinConferenceWithType:(EMConferenceType)aType
- password:(NSString *)aPassword
- record:(BOOL)isRecord
- mergeStream:(BOOL)isMerge
- completion:(void (^)(EMCallConference *aCall, NSString *aPassword, EMError *aError))aCompletionBlock;
- /*!
- * \~chinese
- * 创建并加入会议,支持微信小程序设置
- *
- * @param aType 会议类型
- * @param aPassword 会议密码
- * @param isRecord 是否开启服务端录制
- * @param isMerge 录制时是否合并数据流
- * @param isSupportWechatMiniProgram 是否支持微信小程序
- * @param aCompletionBlock 完成的回调
- *
- * \~english
- * Create and join a conference
- *
- * @param aType The type of the conference
- * @param aPassword The password of the conference
- * @param isRecord Whether to record using a server
- * @param isMerge Whether to merge data streams while recording
- * @param isSupportWechatMiniProgram Weather to support client on wechat mini program
- * @param aCompletionBlock The callback block of completion
- */
- - (void)createAndJoinConferenceWithType:(EMConferenceType)aType
- password:(NSString *)aPassword
- record:(BOOL)isRecord
- mergeStream:(BOOL)isMerge
- isSupportWechatMiniProgram:(BOOL)isSupportWechatMiniProgram
- completion:(void (^)(EMCallConference *aCall, NSString *aPassword, EMError *aError))aCompletionBlock;
- /*!
- * \~chinese
- * 加入已有会议
- *
- * @param aConfId 会议ID(EMCallConference.confId)
- * @param aPassword 会议密码
- * @param aCompletionBlock 完成的回调
- *
- * \~english
- * Join a conference
- *
- * @param aConfId Conference ID (EMCallConference.confId)
- * @param aPassword The password of the conference
- * @param aCompletionBlock The callback block of completion
- */
- - (void)joinConferenceWithConfId:(NSString *)aConfId
- password:(NSString *)aPassword
- completion:(void (^)(EMCallConference *aCall, EMError *aError))aCompletionBlock;
- /*!
- * \~chinese
- * 加入已有会议
- *
- * @param aTicket 加入会议的凭证
- * @param aCompletionBlock 完成的回调
- *
- * \~english
- * Join a conference
- *
- * @param aTicket Conference Tickets
- * @param aCompletionBlock The callback block of completion
- */
- - (void)joinConferenceWithTicket:(NSString *)aTicket
- completion:(void (^)(EMCallConference *aCall, EMError *aError))aCompletionBlock;
- /*!
- * \~chinese
- * 上传本地摄像头的数据流
- *
- * @param aCall 会议实例(自己创建的无效)
- * @param aStreamParam 数据流的配置项
- * @param aCompletionBlock 完成的回调
- *
- * \~english
- * Publish the data stream of the local camera
- *
- * @param aCall EMConference instance (invalid by yourself)
- * @param aStreamParam The config of stream
- * @param aCompletionBlock The callback block of completion
- */
- - (void)publishConference:(EMCallConference *)aCall
- streamParam:(EMStreamParam *)aStreamParam
- completion:(void (^)(NSString *aPubStreamId, EMError *aError))aCompletionBlock;
- /*!
- * \~chinese
- * 取消上传本地摄像头的数据流
- *
- * @param aCall 会议实例(自己创建的无效)
- * @param aStreamId 数据流ID(在[IEMConferenceManager publishConference:pubConfig:completion:]返回)
- * @param aCompletionBlock 完成的回调
- *
- * \~english
- * Cancel the publish of the local camera's data stream
- *
- * @param aCall EMConference instance (invalid by yourself)
- * @param aStreamId Stream id (in [IEMConferenceManager publishConference:pubConfig:completion:] return)
- * @param aCompletionBlock The callback block of completion
- */
- - (void)unpublishConference:(EMCallConference *)aCall
- streamId:(NSString *)aStreamId
- completion:(void (^)(EMError *aError))aCompletionBlock;
- /*!
- * \~chinese
- * 订阅其他人的数据流
- *
- * @param aCall 会议实例(自己创建的无效)
- * @param aStreamId 数据流ID (在[EMConferenceManagerDelegate streamDidUpdate:addStream]中返回)
- * @param aRemoteView 视频显示页面
- * @param aCompletionBlock 完成的回调
- *
- * \~english
- * Subscribe to other user`s data streams
- *
- * @param aCall EMConference instance (invalid by yourself)
- * @param aStreamId Stream id (in [EMConferenceManagerDelegate streamDidUpdate:addStream] return )
- * @param aRemoteView Video display view
- * @param aCompletionBlock The callback block of completion
- */
- - (void)subscribeConference:(EMCallConference *)aCall
- streamId:(NSString *)aStreamId
- remoteVideoView:(EMCallRemoteVideoView *)aRemoteView
- completion:(void (^)(EMError *aError))aCompletionBlock;
- /*!
- * \~chinese
- * 取消订阅的数据流
- *
- * @param aCall 会议实例(自己创建的无效)
- * @param aStreamId 数据流ID
- * @param aCompletionBlock 完成的回调
- *
- * \~english
- * Unsubscribe data stream
- *
- * @param aCall EMConference instance (invalid by yourself)
- * @param aStreamId Stream id
- * @param aCompletionBlock The callback block of completion
- */
- - (void)unsubscribeConference:(EMCallConference *)aCall
- streamId:(NSString *)aStreamId
- completion:(void (^)(EMError *aError))aCompletionBlock;
- /*!
- * \~chinese
- * 改变成员角色,需要管理员权限
- * 用户角色: Admin > Talker > Audience
- * 当角色升级时,用户需要给管理员发送申请,管理通过该接口改变用户接口.
- * 当角色降级时,用户直接调用该接口即可.
- * 注意: 暂时不支持Admin降级自己
- *
- * @param aConfId 会议ID(EMCallConference.confId)
- * @param aMember 成员
- * @param aRole 成员角色
- * @param aCompletionBlock 完成的回调
- *
- * \~english
- * Changing member roles, requires administrator privileges
- * Role: Admin > Talker > Audience
- * When role upgrade, you need to send a request to Admin, only Admin can upgrade a role.
- * When role degrade, you can degrade with this method yourself.
- * Attention: Admin can not degrade self.
- *
- * @param aConfId Conference ID (EMCallConference.confId)
- * @param aMember Member
- * @param aRole The Role
- * @param aCompletionBlock The callback block of completion
- */
- - (void)changeMemberRoleWithConfId:(NSString *)aConfId
- member:(EMCallMember *)aMember
- role:(EMConferenceRole)toRole
- completion:(void (^)(EMError *aError))aCompletionBlock;
- /*!
- * \~chinese
- * 踢人,需要管理员权限
- *
- * @param aConfId 会议ID(EMCallConference.confId)
- * @param aMemberNameList 成员名列表
- * @param aCompletionBlock 完成的回调
- *
- * \~english
- * Kick members, requires administrator privileges
- *
- * @param aConfId Conference ID (EMCallConference.confId)
- * @param aMemberNameList Member Name list
- * @param aCompletionBlock The callback block of completion
- */
- - (void)kickMemberWithConfId:(NSString *)aConfId
- memberNames:(NSArray<NSString *> *)aMemberNameList
- completion:(void (^)(EMError *aError))aCompletionBlock;
- /*!
- * \~chinese
- * 销毁会议,需要管理员权限
- *
- * @param aConfId 会议ID(EMCallConference.confId)
- * @param aCompletionBlock 完成的回调
- *
- * \~english
- * Destroy conference, requires administrator privileges
- *
- * @param aConfId Conference ID (EMCallConference.confId)
- * @param aCompletionBlock The callback block of completion
- */
- - (void)destroyConferenceWithId:(NSString *)aConfId
- completion:(void (^)(EMError *aError))aCompletionBlock;
- /*!
- * \~chinese
- * 离开会议(创建者可以离开,最后一个人离开,会议销毁)
- *
- * @param aCall 会议实例(自己创建的无效)
- * @param aCompletionBlock 完成的回调
- *
- * \~english
- * Leave the conference (the creator can leave, the last person to leave, the conference is destroyed)
- *
- * @param aCall EMConference instance (invalid by yourself)
- * @param aCompletionBlock The callback block of completion
- */
- - (void)leaveConference:(EMCallConference *)aCall
- completion:(void (^)(EMError *aError))aCompletionBlock;
- /*!
- * \~chinese
- * 开始监听说话者
- *
- * @param aCall 会议实例(自己创建的无效)
- * @param aTimeMillisecond 返回回调的间隔,单位毫秒,传0使用300毫秒[EMConferenceManagerDelegate conferenceTalkerDidChange:talkingStreamIds:]
- * @param aCompletionBlock 完成的回调
- *
- * \~english
- * Start listening to the speaker
- *
- * @param aCall EMConference instance (invalid by yourself)
- * @param aTimeMillisecond The interval of callbacks [EMConferenceManagerDelegate conferenceTalkerDidChange:talkingStreamIds:], Unit milliseconds, pass 0 using 300 milliseconds
- * @param aCompletionBlock The callback block of completion
- */
- - (void)startMonitorSpeaker:(EMCallConference *)aCall
- timeInterval:(long long)aTimeMillisecond
- completion:(void (^)(EMError *aError))aCompletionBlock;
- /*!
- * \~chinese
- * 结束监听说话者
- *
- * @param aCall 会议实例(自己创建的无效)
- *
- * \~english
- * Stop listening to the speaker
- *
- * @param aCall EMConference instance (invalid by yourself)
- */
- - (void)stopMonitorSpeaker:(EMCallConference *)aCall;
- #pragma mark - Update
- /*!
- * \~chinese
- * 切换前后摄像头
- *
- * @param aCall 会议实例(自己创建的无效)
- *
- * \~english
- * Switch the camera before and after
- *
- * @param aCall EMConference instance (invalid by yourself)
- */
- - (void)updateConferenceWithSwitchCamera:(EMCallConference *)aCall;
- /*!
- * \~chinese
- * 设置是否静音
- *
- * @param aCall 会议实例(自己创建的无效)
- * @param aIsMute 是否静音
- *
- * \~english
- * Set whether to mute
- *
- * @param aCall EMConference instance (invalid by yourself)
- * @param aIsMute Is mute
- */
- - (void)updateConference:(EMCallConference *)aCall
- isMute:(BOOL)aIsMute;
- /*!
- * \~chinese
- * 设置视频是否可用
- *
- * @param aCall 会议实例(自己创建的无效)
- * @param aEnableVideo 视频是否可用
- *
- * \~english
- * Set whether the video is available
- *
- * @param aCall EMConference instance (invalid by yourself)
- * @param aEnableVideo Whether the video is available
- */
- - (void)updateConference:(EMCallConference *)aCall
- enableVideo:(BOOL)aEnableVideo;
- /*!
- * \~chinese
- * 更新视频显示页面
- *
- * @param aCall 会议实例
- * @param aStreamId 数据流ID
- * @param aRemoteView 显示页面
- * @param aCompletionBlock 完成的回调
- *
- * \~english
- * Update remote video view
- *
- * @param aCall EMConference instance
- * @param aStreamId Stream id
- * @param aRemoteView Video display view
- * @param aCompletionBlock The callback block of completion
- */
- - (void)updateConference:(EMCallConference *)aCall
- streamId:(NSString *)aStreamId
- remoteVideoView:(EMCallRemoteVideoView *)aRemoteView
- completion:(void (^)(EMError *aError))aCompletionBlock;
- /*!
- * \~chinese
- * 更新视频最大码率
- *
- * @param aCall 会议实例
- * @param aMaxVideoKbps 最大码率
- *
- * \~english
- * Update video maximum bit rate
- *
- * @param aCall EMConference instance
- * @param aMaxVideoKbps Maximum bit rate
- */
- - (void)updateConference:(EMCallConference *)aCall
- maxVideoKbps:(int)aMaxVideoKbps;
- #pragma mark - Input Video Data
- /*!
- * \~chinese
- * 自定义本地视频数据
- *
- * @param aSampleBuffer 视频采样缓冲区
- * @param aRotation 旋转方向
- * @param aCall 会议实例
- * @param aPubStreamId 调用接口[EMConferenceManager publishConference:streamParam:completion],如果成功则会在回调中返回该值
- * @param aCompletionBlock 完成后的回调
- *
- * \~english
- * Customize local video data
- *
- * @param aSampleBuffer Video sample buffer
- * @param aRotation UIDeviceOrientation
- * @param aCallId [EMCallSession callId]
- * @param aCompletionBlock The callback block of completion
- */
- - (void)inputVideoSampleBuffer:(CMSampleBufferRef)aSampleBuffer
- rotation:(UIDeviceOrientation)aRotation
- conference:(EMCallConference *)aCall
- publishedStreamId:(NSString *)aPubStreamId
- completion:(void (^)(EMError *aError))aCompletionBlock;
- /*!
- * \~chinese
- * 自定义本地视频数据
- *
- * @param aPixelBuffer 视频像素缓冲区
- * @param aTime 视频原始数据时间戳,CMTime time = CMSampleBufferGetPresentationTimeStamp((CMSampleBufferRef)sampleBuffer);
- * @param aRotation 旋转方向
- * @param aCall 会议实例
- * @param aPubStreamId 调用接口[EMConferenceManager publishConference:streamParam:completion],如果成功则会在回调中返回该值
- * @param aCompletionBlock 完成后的回调
- *
- * \~english
- * Customize local video data
- *
- * @param aPixelBuffer Video pixel buffer
- * @param aCallId [EMCallSession callId]
- * @param aTime CMTime time = CMSampleBufferGetPresentationTimeStamp((CMSampleBufferRef)sampleBuffer);
- * @param aRotation UIDeviceOrientation
- * @param aCompletionBlock The callback block of completion
- */
- - (void)inputVideoPixelBuffer:(CVPixelBufferRef)aPixelBuffer
- sampleBufferTime:(CMTime)aTime
- rotation:(UIDeviceOrientation)aRotation
- conference:(EMCallConference *)aCall
- publishedStreamId:(NSString *)aPubStreamId
- completion:(void (^)(EMError *aError))aCompletionBlock;
- /**
- * \~chinese
- * 设置频道属性,该会议中的所有人(包括自己)都会收到
- * {@link EMConferenceManagerDelegate#conferenceAttributeUpdated:attributeAction:attributeKey:}回调.
- * 该方法需要在加入会议后调用.
- *
- * @param attrKey
- * @param attrValue
- * @param aCompletionBlock
- *
- * \~english
- * Set conference attribute,All members in this conference(include myself) will receive a callback
- * in {@link EMConferenceManagerDelegate#conferenceAttributeUpdated:attributeAction:attributeKey:}.
- * this method can only be used after join a conference.
- *
- * @param attrKey
- * @param attrValue
- * @param aCompletionBlock
- */
- - (void)setConferenceAttribute:(NSString *)attrKey
- value:(NSString *)attrValue
- completion:(void(^)(EMError *aError))aCompletionBlock;
- /**
- * \~chinese
- * 删除频道属性,该会议中的所有人(包括自己)都会收到
- * {@link EMConferenceManagerDelegate#conferenceAttributeUpdated:attributeAction:attributeKey:}回调.
- * 该方法需要在加入会议后调用.
- *
- * @param aKey
- * @param aCompletionBlock
- *
- * \~english
- * Delete conference attribute,All members in this conference(include myself) will receive a callback
- * in {@link EMConferenceManagerDelegate#conferenceAttributeUpdated:attributeAction:attributeKey:}.
- * this method can only be used after join a conference.
- *
- * @param aKey
- * @param aCompletionBlock
- */
- - (void)deleteAttributeWithKey:(NSString *)aKey
- completion:(void(^)(EMError *aError))aCompletionBlock;
- /**
- * \~chinese
- * 开启本地伴音功能,请在加入会议成功后调用,该伴音配置只存在于该会议存在期间.
- *
- * @param filePath 文件路径
- * @param loop 指定音频文件循环播放的次数:
- * 正整数:循环的次数
- * -1:无限循环
- * @param isSendMix 是否启动远端伴音 启动后播放的音乐对方也可以听到
- *
- * @return {@link EMError#EM_NO_ERROR} - 成功
- * {@link EMError#CALL_CONFERENCE_NO_EXIST} - 未加入会议
- * {@link EMError#CALL_INVALID_PARAMS} - 路径参数下的音频文件不存在
- *
- * \~english
- * Start local audio mixing, this method can only be used after join a conference and only worked
- * during this conference exists.
- *
- * @param filePath Audio file path.
- * If file path is start with /assets/, we will find in assets/ dir.
- * Otherwise, we will find in absolute path.
- * @param loop loop mode (0 = no loop, -1 = loop forever)
- * @param isSendMix send mixed audio
- *
- * @return {@link EMError#EM_NO_ERROR} - Success
- * {@link EMError#CALL_CONFERENCE_NO_EXIST} - Not in a conference.
- * {@link EMError#CALL_INVALID_PARAMS} - File not exists.
- */
- - (EMError *)startAudioMixing:(NSURL *)aFileURL loop:(int)aLoop sendMix:(BOOL)isSendMix;
- /**
- * \~chinese
- * 关闭本地混音功能,请在加入会议成功后调用
- *
- * @return {@link EMError#EM_NO_ERROR} - 成功
- * {@link EMError#CALL_CONFERENCE_NO_EXIST} - 未加入会议
- *
- * \~english
- * Stop local audio mixing,this method can only be used after join a conference.
- *
- * @return {@link EMError#EM_NO_ERROR} - Success
- * {@link EMError#CALL_CONFERENCE_NO_EXIST} - Not in a conference.
- */
- - (EMError *)stopAudioMixing;
- /**
- * \~chinese
- * 设置伴奏音量,请在加入会议成功后调用
- *
- * @param volume 伴奏音量范围为 0~100。默认 100 为原始文件音量
- *
- * @return {@link EMError#EM_NO_ERROR} - 成功
- * {@link EMError#CALL_CONFERENCE_NO_EXIST} - 未加入会议
- *
- * \~english
- * Adjust audio mixing volume,this method can only be used after join a conference.
- *
- * @param volume scope: 0~100. Default volume is 100, which is the original audio file volume.
- *
- * @return {@link EMError#EM_NO_ERROR} - Success
- * {@link EMError#CALL_CONFERENCE_NO_EXIST} - Not in a conference.
- */
- - (EMError *)adjustAudioMixingVolume:(int)aVolume;
- /**
- * \~chinese
- * mute远端音频
- *
- * @param aStreamId 要操作的Steam id
- * @param isMute 是否静音
- *
- * \~english
- * Mute remote audio
- *
- * @param aStreamId Steam id
- * @param isMute is mute
- */
- - (void)muteRemoteAudio:(NSString *)aStreamId mute:(BOOL)isMute;
- /**
- * \~chinese
- * mute远端视频
- *
- * @param aStreamId 要操作的Steam id
- * @param isMute 是否显示
- *
- * \~english
- * Mute remote video
- *
- * @param aStreamId Steam id
- * @param isMute is mute
- */
- - (void)muteRemoteVideo:(NSString *)aStreamId mute:(BOOL)isMute;
- /**
- * \~chinese
- * 启用统计
- *
- * @param enable 是否启用统计
- *
- * \~english
- * enable statistics
- * @params enable enable statistics
- */
- - (void)enableStatistics:(BOOL)isEnable;
- #pragma mark - 自定义音频数据
- /*!
- * \~chinese
- * 自定义外部音频数据,PCM格式,一个音频采样16bit,每次最大100ms数据
- *
- * @param data 外部音频数据
- *
- * \~english
- * Customize external audio data,PCM format,each audio sample contail 16 bits,the maxinum data durateion is 100ms
- *
- * @param data Custom audio data,format with PCM
- */
- - (int) inputCustomAudioData:(NSData*)data;
- #pragma mark - Watermark
- /*!
- * \~chinese
- * 开启水印功能
- *
- * @param option 水印配置项,包括图片url,marginX,marginY以及起始点
- *
- * \~english
- * Enable water mark feature
- *
- * @param origin the option of watermark picture,include url,margingX,marginY,margin point
- */
- - (void)addVideoWatermark:(EMWaterMarkOption*)option;
- /*!
- * \~chinese
- * 取消水印功能
- *
- * \~english
- * Disable water mark feature
- *
- */
- - (void)clearVideoWatermark;
- #pragma mark - EM_DEPRECATED_IOS 3.5.2
- /*!
- * \~chinese
- * 自定义本地视频数据
- *
- * @param aSampleBuffer 视频采样缓冲区
- * @param aCall 会议实例
- * @param aPubStreamId 调用接口[EMConferenceManager publishConference:streamParam:completion],如果成功则会在回调中返回该值
- * @param aFormat 视频格式
- * @param aRotation 旋转角度0~360,默认0
- * @param aCompletionBlock 完成后的回调
- *
- * \~englishat
- * Customize local video da
- *
- * @param aSampleBuffer Video sample buffer
- * @param aCall EMConference instance
- * @param aPubStreamId [EMConferenceManager publishConference:streamParam:completion], If successful, the value will be returned in the callback
- * @param aFormat Video format
- * @param aRotation Rotation angle 0~360, default 0
- * @param aCompletionBlock The callback block of completion
- */
- - (void)inputVideoSampleBuffer:(CMSampleBufferRef)aSampleBuffer
- conference:(EMCallConference *)aCall
- publishedStreamId:(NSString *)aPubStreamId
- format:(EMCallVideoFormat)aFormat
- rotation:(int)aRotation
- completion:(void (^)(EMError *aError))aCompletionBlock EM_DEPRECATED_IOS(3_2_2, 3_5_2, "Delete, Use -inputVideoSampleBuffer:rotation:conference:publishedStreamId:completion:");
- /*!
- * \~chinese
- * 自定义本地视频数据
- *
- * @param aPixelBuffer 视频像素缓冲区
- * @param aCall 会议实例
- * @param aPubStreamId 调用接口[EMConferenceManager publishConference:streamParam:completion],如果成功则会在回调中返回该值
- * @param aFormat 视频格式
- * @param aRotation 旋转角度0~360,默认0
- * @param aCompletionBlock 完成后的回调
- *
- * \~english
- * Customize local video data
- *
- * @param aPixelBuffer Video pixel buffer
- * @param aCall EMConference instance
- * @param aPubStreamId [EMConferenceManager publishConference:streamParam:completion], If successful, the value will be returned in the callback
- * @param aFormat Video format
- * @param aRotation Rotation angle 0~360, default 0
- * @param aCompletionBlock The callback block of completion
- */
- - (void)inputVideoPixelBuffer:(CVPixelBufferRef)aPixelBuffer
- conference:(EMCallConference *)aCall
- publishedStreamId:(NSString *)aPubStreamId
- format:(EMCallVideoFormat)aFormat
- rotation:(int)aRotation
- completion:(void (^)(EMError *aError))aCompletionBlock EM_DEPRECATED_IOS(3_2_2, 3_5_2, "Delete, Use -inputVideoPixelBuffer:sampleBufferTime:rotation:conference:publishedStreamId:completion:");
- /*!
- * \~chinese
- * 自定义本地视频数据
- *
- * @param aData 视频数据
- * @param aCall 会议实例
- * @param aPubStreamId 调用接口[EMConferenceManager publishConference:streamParam:completion],如果成功则会在回调中返回该值
- * @param aWidth 宽度
- * @param aHeight 高度
- * @param aFormat 视频格式
- * @param aRotation 旋转角度0~360,默认0
- * @param aCompletionBlock 完成后的回调
- *
- * \~english
- * Customize local video data
- *
- * @param aData Video data
- * @param aCall EMConference instance
- * @param aPubStreamId [EMConferenceManager publishConference:streamParam:completion], If successful, the value will be returned in the callback
- * @param aWidth Width
- * @param aHeight Height
- * @param aFormat Video format
- * @param aRotation Rotation angle 0~360, default 0
- * @param aCompletionBlock The callback block of completion
- */
- - (void)inputVideoData:(NSData *)aData
- conference:(EMCallConference *)aCall
- publishedStreamId:(NSString *)aPubStreamId
- widthInPixels:(size_t)aWidth
- heightInPixels:(size_t)aHeight
- format:(EMCallVideoFormat)aFormat
- rotation:(int)aRotation
- completion:(void (^)(EMError *aError))aCompletionBlock EM_DEPRECATED_IOS(3_2_2, 3_5_2, "Delete");
- #pragma mark - EM_DEPRECATED_IOS 3.4.3
- /*!
- * \~chinese
- * 多人会议场景
- *
- * \~english
- * Conference mode
- */
- @property (nonatomic) EMConferenceMode mode EM_DEPRECATED_IOS(3_1_0, 3_4_3, "Use -DELETE");
- /*!
- * \~chinese
- * 创建并加入会议
- *
- * @param aPassword 会议密码
- * @param aCompletionBlock 完成的回调
- *
- * \~english
- * Create and join a conference
- *
- * @param aPassword The password of the conference
- * @param aCompletionBlock The callback block of completion
- */
- - (void)createAndJoinConferenceWithPassword:(NSString *)aPassword
- completion:(void (^)(EMCallConference *aCall, NSString *aPassword, EMError *aError))aCompletionBlock EM_DEPRECATED_IOS(3_1_0, 3_4_3, "Use -[EMConferenceManagerDelegate createAndJoinConferenceWithType:password:completion:]");
- /*!
- * \~chinese
- * 邀请人加入会议
- *
- * @param aCall 会议实例(自己创建的无效)
- * @param aUserName 被邀请人的环信ID
- * @param aPassword 会议密码
- * @param aExt 扩展信息
- * @param aCompletionBlock 完成的回调
- *
- * \~english
- * Invite user join the conference
- *
- * @param aCall EMConference instance (invalid by yourself)
- * @param aUserName The Hyphenate ID of the invited user
- * @param aPassword The password of the conference
- * @param aExt Extended Information
- * @param aCompletionBlock The callback block of completion
- */
- - (void)inviteUserToJoinConference:(EMCallConference *)aCall
- userName:(NSString *)aUserName
- password:(NSString *)aPassword
- ext:(NSString *)aExt
- error:(EMError **)pError EM_DEPRECATED_IOS(3_1_0, 3_4_3, "Use -DELETE, 在demo层自定义实现");
- /*!
- * \~chinese
- * 改变成员角色,需要管理员权限
- *
- * @param aConfId 会议ID(EMCallConference.confId)
- * @param aMemberNameList 成员名列表
- * @param aRole 成员角色
- * @param aCompletionBlock 完成的回调
- *
- * \~english
- * Changing member roles, requires administrator privileges
- *
- * @param aConfId Conference ID (EMCallConference.confId)
- * @param aMemberNameList Member Name list
- * @param aRole The Role
- * @param aCompletionBlock The callback block of completion
- */
- - (void)changeMemberRoleWithConfId:(NSString *)aConfId
- memberNames:(NSArray<NSString *> *)aMemberNameList
- role:(EMConferenceRole)aRole
- completion:(void (^)(EMError *aError))aCompletionBlock EM_DEPRECATED_IOS(3_5_0, 3_6_0, "Use -[changeMemberRoleWithConfId:memberName:role:completion]");
- @end
- #endif /* IEMConferenceManager_h */
|