av一区二区三区在线观看_久久久久国产一区二区三区_伊人春色在线播放_欧美亚洲国产一区_九九热在线免费视频_久久视频国产

1、實時對講開發說明

1、實時對講

實時對講功能是語音會議的一種特殊形式,默認最大支持5方,專有云根據選定套餐進行擴展。發言人必須搶麥才能發言,只能有人放麥以后,其他人才能搶麥。

注意:5.0以上的SDK集成的客戶端,測試音視頻功能,音視頻,會議,群組等操作需要,先將在我們控制臺創建的應用上線,才可測試(控制臺提供的測試demo中的應用id和應用token,不能用來測試,需要使用自己在官網控制臺創建的應用的id和應用token)

1.1、接口邏輯:

接口調用是采取“請求回調”和“通知回調”的方式和服務端交互。用戶發出創建對講、搶麥等操作時,在對應的sdk的方法參數中有“請求回調”方法,請求的結果直接在參數的回調方法中處理。會議中的成員收到服務端發送過來的消息通過“通知回調”方法-(void)onReceiveInterphoneMeetingMsg:(ECInterphoneMeetingMsg *)msg;來接收并進行處理。

1.2、業務流程

(1)用戶A創建實時對講,創建的同時選擇用戶B、用戶C加入

(2)用戶A先被加入到實時對講會議室中

(3)用戶B和用戶C收到請求并同意加入,同時用戶A收到用戶B和用戶C加入的通知消息

(4)通過退出接口可以退出實時對講

(5)實時對講只要有一個人,實時對講就不會結束,直到所有人退出實時對講,會議室自動關閉

2、實時對講操作代碼示例

? 創建實時對講—我們假設Tony要和John、Smith建立實時對講,則Tony創建實時會議的代碼如下:

//要邀請的成員數組
NSMutableArray * inviteArray = [[NSMutableArray alloc] initWithObjects:@" John的電話號",@" Smith的電話號", nil];
[[ECDevice sharedInstance].meetingManager createInterphoneMeetingWithMembers:inviteArray completion:^(ECError *error, NSString *meetingNumber) {  // error創建實時對講回調狀態碼
               //meetingNo 創建實時對講回調的會議號
                if(error.errorCode==ECErrorType_NoError){
                 NSLog(@"創建實時對講成功,跳轉到實時對講界面");
                }else {
                  NSLog(@"創建實時對講失敗");
                } 
}];

                    

? 接收到實時對講邀請—John和Smith收到實時對講的邀請(在通知消息中同時上報了已經加入會議的成員),或者當有人加入實時對講時,sdk都通過onReceiveInterphoneMeetingMsg上報相關信息,其代碼如下:

-(void)onReceiveInterphoneMeetingMsg:(ECInterphoneMeetingMsg *)msg{
    ECInterphoneMeetingMsgType type=  msg.type;
   if (type== Interphone_INVITE)
    {
       NSLog(@"邀請加入實時對講");
    }
    else if(type== Interphone_OVER)
    {
       NSLog(@"退出實時對講");
    }
}

                    

注:通常實時對講為了實時的邀請不允許拒絕,可以先進入實時對講,然后再退出。

? 退出實時對講—在實時對講中,Tony、John、Smith三人任何人都可以隨時退出實時對講,代碼如下:

[[ECDevice sharedInstance].meetingManager exitMeeting];
                 
                    

? 實時對講搶麥—搶麥只有在實時對講中才起作用,在語音會議和視頻會議中無效。我們假設Tony在語音會議中搶麥,其示例代碼如下:

NSString* meetingNo =@”所在的實時對講的會議號”;
 [[ECDevice sharedInstance].meetingManager controlMicInInterphoneMeeting: meetingNo completion:^(ECError *error,NSString *memberVoip ){
         // memberVoip當前在麥上的賬號
        if (error.errorCode == ECErrorType_NoError)
           { 
               NSLog(@"控麥成功,請講話"); 
           }
        else
          {
               NSLog(@"控麥失敗,稍后重試"); 

          }
 }];      
        
                    

? 實時對講放麥—放麥只有在實時對講中才起作用,在語音會議和視頻會議中無效。我們假設Tony在語音會議中放麥,其示例代碼如下:

NSString* meetingNo =@”所在的實時對講的會議號”;
 [[ECDevice sharedInstance].meetingManager releaseMicInInterphoneMeeting: meetingNo completion:^(ECError *error,NSString *memberVoip ){
            // memberVoip當前在放麥人的賬號
            if (error.errorCode == ECErrorType_NoError)
           { 
               NSLog(@"放麥成功,請講話"); 
           }
        else
          {
               NSLog(@"放麥失敗,稍后重試"); 
          }
        }];
        
                    

2、語音會議開發說明

1、語音會議

語音會議只是多人參加的基于互聯網、或者基于電話或者網絡和電話混合的會議。Sdk最多支持32方語音會議。

1.1、接口邏輯:

接口調用是采取“請求回調”和“通知回調”的方式和服務端交互。在對應的sdk的方法參數中有“請求回調”方法,請求的結果直接在參數的回調方法中處理。。會議中的成員收到服務端發送過來的消息通過“通知回調”方法-(void)onReceiveMultiVoiceMeetingMsg:(ECMultiVoiceMeetingMsg *)msg來接收并進行處理。

1.2、業務流程

(1)用戶A創建語音會議或者電話會議

(2)會議創建成功之后,邀請其他成員加入會議

(3)其他成員收到邀請,同意或拒絕加入會議

2、語音會議操作代碼示例

? 創建音頻會議或電話會議—我們假設Tony要創建音頻會議,其示例代碼如下:

功能:創建語音、視頻會議。
參數:params 創建語音、視頻會議的參數對象 參考ECCreateMeetingParams對象。
ecMultMeetingType 創建會議的類型、語音、視頻會議二種。 
返回值:無
ECCreateMeetingParams *params =[[ECCreateMeetingParams alloc]init];
            params.meetingType =會議類型
            params.MeetingName= @"會議名稱";
            params.MeetingPwd=@"會議密碼";
            params.Square=@"創建幾路視頻";
            params.AutoClose=@"創建者退出后會議是否解散";
            params.AutoJoin= @"創建后,創建者是否自動加入會議";
            params.AutoDelete= @"是否為永久會議";
            params.VoiceMod= @"背景音樂";
            params.Keywords=@"業務屬性";
           [[ECDevice sharedInstance].meetingManager createMultMeetingByType:params andType:More_Voice completion:^(NSUInteger error,NSString *meetingNo ){
                //meetingNo 創建會議回調的會議號
       if (error.errorCode == ECErrorType_NoError)
           { 
               NSLog(@"會議創建成功,請講話"); 
           }
        else
          {
               NSLog(@"會議創建失敗,稍后重試"); 
          } 
}];

                    

? 邀請成員加入會議—我們假設Tony創建音頻會議成功之后,邀請John和Smith加入音頻會議,其代碼如下:

功能:邀請用戶加入語音會議
參數: meetingNumber 會議號
 isLoadingCall用戶登錄的是電話號或者通訊號碼 
 members被邀請加入語音會議的成員號
返回值:無
NSString* meetingNumber=@”會議號”;
NSMutableArray *selectArray = [[NSMutableArray alloc] initWithObjects:@" John的電話號",@" Smith的電話號", nil];
[[ECDevice sharedInstance].meetingManager   inviteMembersJoinToVoiceMeeting: meetingNumber andIsLoandingCall:(alertView.tag==ChatRoomVIEW_addmember) andMembers: selectArray completion:^(ECError *error, NSString *meetingNumber) {        
       if (error.errorCode == ECErrorType_NoError)
           { 
               NSLog(@"邀請成員成功"); 
           }
        else
          {
               NSLog(@"邀請成員失敗"); 
          } 
}];


                    

? 主動加入會議—我們假設Eric要主動加入會議,其示例代碼如下:

功能:通過會議類型加入會議。
參數:meetingNumber 會議號
      meetingType 會議的類型;
      meetingPwd 會議的密碼。
返回值:無。
NSString* roomNo =@”會議號”;
NSString* pwd =@”會議密碼”;
[[ECDevice sharedInstance].meetingManager joinMeeting:roomNo ByMeetingType:ECMeetingType_MultiVoice andMeetingPwd:pwd completion:^(ECError *error, NSString *meetingNumber) { //meetingNo加入會議回調的會議號
        if (error.errorCode == ECErrorType_NoError)
           { 
               NSLog(@"加入會議成功"); 
           }
        else
          {
               NSLog(@"加入會議失敗"); 
          } 
    }];

                    

? 通過會議類型解散語音、視頻會議—我們假設Tony要解散自己創建的一個語音會議,其示例代碼如下:

功能:通過會議類型加入會議。
參數:meetingNumber會議號
      multMeetingType會議的類型;
返回值:無。
NSString* meetingNo =@”要解散的會議id”;
[[ECDevice sharedInstance].meetingManager deleteMultMeetingByMeetingType:ECMeetingType_MultiVoice andMeetingNumber: meetingNo completion:^(ECError *error, NSString *meetingNumber) {          
        if (error.errorCode == ECErrorType_NoError)
           { 
               NSLog(@"解散會議成功"); 
           }
        else
          {
               NSLog(@"解散會議失敗"); 
          }
}];

                    

? 退出會議—有人退出會議,其示例代碼如下:

功能:退出會議 
參數:無。
[[ECDevice sharedInstance].meetingManager exitMeeting];

                    

? 從語音會議踢出會議成員—只有會議創建者才能踢出成員,我們假設Tony要踢出John,其示例代碼如下:

功能:從語音、視頻會議移除成員 
參數:
      meetingNumber會議號
      multMeetingType會議的類型; 會議的類型 、語音或者視頻。
      membervVoip被移除成員的手機號碼
返回值:無.
NSString* curRoomNo =@”當前的會議id”;
NSString* meetingnumber =@”要踢出的成員”;
[[ECDevice sharedInstance].meetingManager removeMemberFromMultMeetingByMeetingType:ECMeetingType_MultiVoice andMeetingNumber: curRoomNo andMember: meetingnumber completion:^(ECError *error, ECVoIPAccount *membervVoip) { //member被移除會議成員的號碼
        if (error.errorCode == ECErrorType_NoError)
           { 
               NSLog(@"踢出會議成員"); 
           }
        else
          {
               NSLog(@"踢出會議成員失敗"); 
          }
}];

                    

? 音頻會議通知消息—當對音頻會議進行操作(如邀請,主動加入、退出、解散、踢出成員)時,會議室中的相關成員通過音頻會議的“通知回調”接口 onReceiveMultiVoiceMeetingMsg接收相關信息,并進行處理,其代碼示例如下:

- (void)onReceiveMultiVoiceMeetingMsg:(ECMultiVoiceMeetingMsg *)msg
{
     ECMultiVoiceMeetingMsgType *msgType= msg.type;
    if(msgType== MultiVoice_JOIN)
    {
        NSLog(@"有人加入");
    }
    else if(msgType== MultiVoice_EXIT)
    {
        NSLog(@"有人退出"); 
    }
    else if(msgType== MultiVoice_DELETE)
    {
        NSLog(@"房間被刪除退出");
    }
    else if(msgType== MultiVoice_REMOVEMEMBER)
{
   NSLog(@"有人被移除");
    } else if(msgType== MultiVoice_REFUSE)
{ 
NSLog(@"會議釋放掉");
}
}

                    

? 獲取語音、視頻會議列表—通過“獲取音頻會議列表”接口,可以獲得應用下的所有音頻會議列表,其示例代碼如下:

功能:獲取應用下面的語音或視頻會議列表。
參數: 
Keywords業務屬性
multMeetingType會議的類型
返回值:無
NSString* keywords =@”業務屬性”;

[[ECDevice sharedInstance].meetingManager listAllMultMeetingsByMeetingType:(ECMeetingType)multMeetingType andKeywords:(NSString *)keywords completion:(void(^)(ECError *error, NSArray * meetingList))completion  {   
       if (error.errorCode == ECErrorType_NoError)
           { 
               NSLog(@"獲取列表成功"); 
           }
        else
          {
               NSLog(@"獲取列表失敗"); 
          }
}];

                    

? 查詢當前音頻會議成員—用戶加入會議后,需要獲取當前音頻會議中的所有成員,接口和獲取視頻會議成員的接口一致,傳入會議類型參數不同,其示例代碼如下:

功能:根據會議類型查詢當前會議的成員 
參數: meetingNumber,會議號
meetingtype會議的類型,
l 回調監聽 根據傳入的會議類型回調不同的方法。
返回值:無
NSString *meetingNumber =@”當前的會議id”;
[[ECDevice sharedInstance].meetingManager queryMeetingMembersByMeetingType:(ECMeetingType)meetingtype andMeetingNumber:(NSString *)meetingNumber completion:(void(^)(ECError *error, NSArray* members))completion {
//members參與會議的成員數組
        if (error.errorCode == ECErrorType_NoError)
           { 
               NSLog(@"查詢會議成員成功"); 
           }
        else
          {
               NSLog(@"查詢失敗"); 
          }
}];

                    

? 禁言禁聽功能—管理員有權限決定會議成員是否可聽可講,當不需要某一成員說話或者可聽時,此接口可以幫助用戶實現。

/**
 @brief 設置會議某成員是否可聽可講
 @param memberVoip    成員通訊賬號
 @param speakListen   是否可聽可講 1、禁言 2、可講 3、禁聽 4、可聽
 @param meetingType   會議房間的類型
 @param meetingNumber 房間號
 @param completion    執行結果回調block
 */
ECVoIPAccount *account = “是否是通訊賬號”
NSInteger speakListen = “是否可聽可講 1、禁言 2、可講 3、禁聽 4、可聽”
ECMeetingType meetingType = “會議的類型”
NSString *meetingNumber = “會議號”
[[ECDevice sharedInstance].meetingManager setMember:account 
speakListen: speakListen ofMeetingType: meetingType andMeetingNumber: meetingNumber 
completion:^(ECError *error, NSString *meetingNumber) {
        }];

                    

禁言禁聽設置后,服務器會下發一條通知消息,通知所有人,誰被禁言禁聽了。通知消息體增加屬性speakListen,語音群聊的通知是-(void)onReceiveMultiVoiceMeetingMsg:(ECMultiVoiceMeetingMsg *)msg

? 分頁獲取音頻會議列表

/**
 @brief 獲取音頻會議列表
 @param multMeetingType 會議房間的類型
 @param keywords        房間關鍵字
 @param page            頁碼
 @param pageSize        房間數
 @param isAsc           是否升序
 @param completion      執行結果回調block
 */
[[ECDevice sharedInstance].meetingManager listAllMultMeetingsByMeetingType: ECMeetingType_MultiVoice 
  andKeywords:nil page:(NSInteger)page pageSize:(NSInteger)pageSize isAsc:(BOOL)isAsc completion: 
   (ECError *error, NSArray * meetingList) {
        if (error.errorCode == ECErrorType_NoError)
           {
               NSLog(@"獲取列表成功");
           }
        else
          {
               NSLog(@"獲取列表失敗");
          }
}];
                    

3、視頻會議開發說明

1、視頻會議

視頻會議只是多人參加的基于互聯網、或者基于電話或者網絡和電話混合的會議。

1.1、接口邏輯:

接口調用是采取“請求回調”和“通知回調”的方式和服務端交互。在對應的sdk的方法參數中有“請求回調”方法,請求的結果直接在參數的block回調中處理。會議中的成員收到服務端發送過來的消息通過“通知回調”方法onReceiveMultiVideoMeetingMsg來接收并進行處理。

1.2、業務流程

(1)用戶A創建視頻會議。

(2)會議創建的時候有兩種方式:

根據參數設置創建者自動加入,如果創建者選擇自動加入,則創建會議成功后,創建者直接加入會議。

根據參數設置創建者不自動加入會議,則會議創建成功后,創建者需要調用“加入會議接口”加入會議。

(3)其他成員獲取視頻會議列表,選擇對應的會議加入。

(4)用戶加入視頻會議的同時,需要調用publishSelfVideoFrameInVideoMeeting:(NSString*)meetingNumber completion:(void(^)(ECError *error, NSString *meetingNumber))completion接口發布自己的視頻。

(5)會議室成員收到有人加入會議通知,調用requestMemberVideoWithAccount:(NSString*)username andDisplayView:(UIView*)displayView andVideoMeeting:(NSString*)meetingNumber andPwd:(NSString*)meetingPwd andPort:(NSInteger)port completion:(void(^)(ECError *error, NSString *meetingNumber,NSString *member))completion請求該用戶的視頻數據。

(6)多路視頻會議,涉及到消息體類包括:ECCreateMeetingParams、ECMeetingRoom、ECMeetingMember、ECMultiVideoMeetingMsg、ECError等,消息體類的相關屬性,請參照SDK里面的說明。

2、視頻會議操作代碼示例

? 創建視頻會議—創建視頻會議和創建音頻會議是同一個接口,主要是類型不同,同時注意在創建視頻會議前創建視頻顯示窗口,現在我們假設Tony要創建視頻會議,其示例代碼如下:

功能:創建語音、視頻會議。
參數:params 創建語音、視頻會議的參數對象 參考ECCreateMeetingParams對象。
ecMultMeetingType 創建會議的類型、語音、視頻會議二種。
        
返回值:無
ECCreateMeetingParams *params =[[ECCreateMeetingParams alloc]init];
            
            params.MeetingName= @"會議名稱";
            params.meetingType = ECMeetingType_MultiVideo;
            params.Square=@"創建幾路視頻";
            params.AutoClose=@"創建者退出后會議是否解散";
            params.AutoJoin= @"創建后,創建者是否自動加入會議";
            params.AutoDelete= @"是否為永久會議";
            params.VoiceMod= @"背景音樂";
            params.Keywords=@"業務屬性";
           [[ECDevice sharedInstance].meetingManager createMultMeetingByType:params completion: (ECError* error, NSString *meetingNumber) {
            //meetingNo 創建會議回調的會議號
           if (error.errorCode == ECErrorType_NoError)
             { 
                 NSLog(@"會議創建成功,請講話"); 
                 如果選擇的是創建者自動加入的話,在會議創建成功之后就應該創建好多路視頻的View,創建過程如下:
                 1.在跳轉的頁面的初始化中,直接定義好view,在view調用底層sdk里面的方法,設置本地視頻窗口、然后調用創建視頻會議接口。
                 2.設置視頻通話碼率[[ECDevice sharedInstance].voIPManager setVideoBitRates:@” 視頻碼流,kb/s,范圍30-300”];
                 3.設置視頻通話顯示的view [[ECDevice sharedInstance].voIPManager setVideoView:@” 對方顯示視圖” andLocalView:@” 本地顯示視圖”];
                 4.設置視頻會議地址[[ECDevice sharedInstance].meetingManager setVideoConferenceAddr:@”會議地址”];
                 5.詳細過程請參考demo中,MultiVideoConfViewController頁面。
             }
          else
            {
                 NSLog(@"會議創建失敗,稍后重試"); 
            } 
}];

                    

? 主動加入視頻會議—主動加入視頻會議和加入音頻會議是同一個接口,只是傳入參數的類型不同,同時需要注意視頻窗口的創建,我們假設Eric要主動加入視頻會議,其示例代碼如下:

功能:通過會議類型加入會議。
參數:meetingNo 會議號
           meetingType 會議的類型;
           meetingPwd 會議的密碼。
返回值:無。
如果選擇不是自動加入的話,需要在自動加入前設置多路視頻view,創建過程與自動加入的過程一致。
NSString* meetingNo =@”會議號”;
NSString* meetingpwd =@”會議密碼”;
[[ECDevice sharedInstance].meetingManager joinMeeting: meetingNo ByMeetingType: ECMeetingType_MultiVideo andMeetingPwd: meetingpwd completion: (ECError* error, NSString *meetingNumber) {
       //meetingNo加入會議回調的會議號
        if (error.errorCode == ECErrorType_NoError)
           { 
               NSLog(@"加入會議成功"); 
           }
        else
          {
               NSLog(@"加入會議失敗"); 
          } 
    }];

                    

? 解散視頻會議—解散視頻會議我們假設Tony要解散自己創建的一個會議,其示例代碼如下:

功能:通過會議類型加入會議。
參數:meetingNo 會議號
           meetingType 會議的類型
           appId 應用id
返回值:無。
NSString* meetingNo =@”要解散的會議id”;
[[ECDevice sharedInstance].meetingManager deleteMultMeetingByMeetingType: ECMeetingType_MultiVideo e andMeetingNumber: meetingNo completion: (ECError *error, NSString *meetingNumber) {
          if (error.errorCode == ECErrorType_NoError)
           { 
               NSLog(@"解散會議成功"); 
           }
        else
          {
               NSLog(@"解散會議失敗"); 
          }
}];

                    

? 管理員主動邀請成員加入視頻會議—視頻會議邀請成員加入,只有會議創建者才能邀請成員,我們假設Tony要邀請John,其示例代碼如下:

功能: 邀請成員加入視頻會議 
參數:meetingNo 會議號
          type 會議的類型視頻。
          Member 被移除成員的通訊賬號或者手機號碼
返回值:無.
NSString* meetingNo =@”當前的會議id”;
NSString* meetingnumber =@”邀請的成員通訊賬號”;
BOOL isLoadingCall = YES/NO; //用戶登錄的是手機號或者通訊賬號,YES是手機號,NO是通訊賬號
[[ECDevice sharedInstance].meetingManager inviteMembersJoinMultiMediaMeeting: meetingNo andIsLoandingCall: isLoadingCall andMembers: meetingnumber completion:^(ECError *error, NSString *meetingNumber) {// meetingNumber加入會議成員的號碼
        if (error.errorCode == ECErrorType_NoError)
           { 
               NSLog(@"邀請會議成員成功"); 
           }
        else
          {
               NSLog(@"邀請會議成員失敗"); 
          }
}];


邀請成員(通訊賬號或者電話號),被邀請方需要處理的事件,在-(NSString*)onMeetingCallReceived:(NSString*)callid withCallType:(CallType)calltype withMeetingData:(NSDictionary*)meetingData;的方法中需要做處理。這個方法只有音視頻會議邀請成員才會調用。具體事例如下:
功能:有會議呼叫邀請
參數; callid      會話id
        calltype    呼叫類型
        meetingData 會議的數據
-(NSString*)onMeetingCallReceived:(NSString*)callid withCallType:(CallType)calltype withMeetingData:(NSDictionary*)meetingData {

    if ([DemoGlobalClass sharedInstance].isCallBusy) {//當有邀請呼入或者正在通話過程中,需要告知對方,線路處于忙碌狀態需要等待。
        [[ECDevice sharedInstance].VoIPManager rejectCall:callid andReason:ECErrorType_CallBusy];
        return @"";
    }
    
    UIViewController *incomingCallView = nil;
    if (calltype == VIDEO) {//當多路視頻會議邀請時,需要處理的事件,彈出來電窗口
       
    } else {// 當音頻會議邀請時,彈出來電窗口
       
    }
[DemoGlobalClass sharedInstance].isCallBusy = YES;//有來電呼入時,需要先把狀態置為忙碌狀態。
    return nil;
}

                    

? 退出會議—和音視頻退出會議的接口是同一個,其示例代碼如下:

[[ECDevice sharedInstance].meetingManager exitMeeting];

                    

? 從視頻會議踢出會議成員—視頻會議踢出會議成員和音頻會議踢出會議成員是同一個接口,只是傳入會議類型不同。只有會議創建者才能踢出成員,我們假設Tony要踢出John,其示例代碼如下:

功能:從語音、視頻會議移除成員 
參數:
meetingNo 會議號
type 會議的類型 、語音或者視頻。
Member 被移除成員的通訊賬號或者手機號碼
返回值:無.
NSString* meetingNo =@”當前的會議id”;
NSString* meetingnumber =@”要踢出的成員”;
ECVoIPAccount *membervVoip = [[ECVoIPAccount alloc] init];
membervVoip.account =  meetingnumber;
membervVoip.isVoip = YES;
[[ECDevice sharedInstance].meetingManager removeMemberFromMultMeetingByMeetingType:ECMeetingType_MultiVideo andMeetingNumber: meetingNo andMember: membervVoip completion: (ECError *error, ECVoIPAccount *membervVoip) {
//member被移除會議成員的號碼
        if (error.errorCode == ECErrorType_NoError)
           { 
               NSLog(@"踢出會議成員"); 
           }
        else
          {
               NSLog(@"踢出會議成員失敗"); 
          }
}];

                    

? 視頻會議通知消息—當對視頻會議進行操作(如主動加入、退出、解散、踢出成員)時,會議室中的相關成員通過視頻會議的“通知回調”接口onReceiveMultiVideoMeetingMsg接收相關信息,并進行處理,其代碼示例如下:

-(void)onReceiveMultiVideoMeetingMsg:(ECMultiVideoMeetingMsg *)msg
{
ECVideoMeetingMsgType type=  msg.type;
   if(msgType==Video_JOIN)
    {
        NSLog(@"有人加入");
    }
    else if(msgType== Video_EXIT)
    {
        NSLog(@"有人退出"); 
    }
    else if(msgType== Video_DELETE)
    {
        NSLog(@"房間被刪除退出");
    }
    else if(msgType== Video_REMOVEMEMBER)
   {
        NSLog(@"有人被踢出會議");
    }
    else if(type==Video_PUBLISH)
   {
        NSLog(@"發布視頻");
   }
   else if(type==Video_UNPUBLISH)
   {
       NSLog(@"取消發布視頻");
    }
}

                    

? 獲取視頻會議列表—獲取視頻會議列表和可以獲得應用下的所有音頻會議,和獲取音頻會議列表是同一個接口,其示例代碼如下:

功能:獲取應用下面的語音或視頻會議列表。
參數: 
Keywords業務屬性
meetingType會議的類型
返回值:無

[[ECDevice sharedInstance].meetingManager listAllMultMeetingsByMeetingType: ECMeetingType_MultiVideo andKeywords:nil completion: (ECError *error, NSArray * meetingList) {
        if (error.errorCode == ECErrorType_NoError)
           { 
               NSLog(@"獲取列表成功"); 
           }
        else
          {
               NSLog(@"獲取列表失敗"); 
          }
}];

                    

? 查詢當前視頻會議成員—用戶加入會議后,需要獲取當前視頻會議中的所有成員,接口和獲取音頻會議成員的接口一致,傳入會議類型參數不同,其示例代碼如下:

功能:根據會議類型查詢當前會議的成員 
參數: meetingNo,會議號
            meetingType 會議的類型,
回調監聽 根據傳入的會議類型回調不同的方法。
返回值:無
NSString* meetingNo =@”當前的會議id”;
[[ECDevice sharedInstance].meetingManager queryMeetingMembersByMeetingType: ECMeetingType_MultiVideo andMeetingNumber: meetingNo completion: (ECError *error, NSArray* member){
        //members參與會議的成員數組
        if (error.errorCode == ECErrorType_NoError)
           { 
               NSLog(@"查詢會議成員成功"); 
           }
        else
          {
               NSLog(@"查詢失敗"); 
          }
}];

                    

? 視頻會議發布自己的視頻—創建或加入視頻會議后,需要首先發布自己的視頻,其示例代碼如下:

NSString* meetingNo =@”當前的會議id”;
 [[ECDevice sharedInstance].meetingManager publishSelfVideoFrameInVideoMeeting:meetingNo completion:^(ECError *error, NSString *meetingNumber){
       if (error.errorCode == ECErrorType_NoError)
           { 
               NSLog(@"發布視頻成功"); 
           }
        else
          {
               NSLog(@"發布失敗"); 
          }
}]; 

                    

? 視頻會議取消發布自己的視頻—用戶想關閉自己的視頻(可以看到會議室中其他成員視頻,),其示例代碼如下:

NSString* meetingNo =@”當前的會議id”;
 [[ECDevice sharedInstance].meetingManager cancelPublishSelfVideoFrameInVideoMeeting:meetingNo completion:^(ECError *error, NSString *meetingNumber){
        if (error.errorCode == ECErrorType_NoError)
           { 
               NSLog(@"取消發布成功"); 
           }
        else
          {
               NSLog(@"取消發布失敗"); 
          }
}];

                    

? 視頻會議請求某端視頻—請求某端視頻是要顯示會議室中某位成員的視頻。我們假設Tony請求John的視頻,其示例代碼如下:

NSString* meetingNo =@”當前的會議id”;
NSString* meetingPwd =@”所在的會議密碼”;
NSString* memberNumber =@”John的通訊賬號”;
XXXXXX displayView=當成功請求時,展示該成員的窗口
[[ECDevice sharedInstance].meetingManager requestMemberVideoWithAccount: memberNumber andDisplayView: displayView andVideoConference: meetingNo andPwd: meetingPwd andPort:port.integerValue completion:^(ECError *error, NSString *meetingNumber, NSString *member) {
       if (error.errorCode == ECErrorType_NoError)
           { 
               NSLog(@"請求成功"); 
           }
        else
          {
               NSLog(@"請求失敗"); 
          }

}];
說明:
視頻時(包含點對點和會議),設置遠端UIView的屬性contentMode:(DisplayView: displayView)
UIViewContentModeScaleToFill //view默認值,圖像數據顯示,填充view,但不等比例拉伸
UIViewContentModeScaleAspectFit //圖像等比例拉伸,完全顯示內容
UIViewContentModeScaleAspectFill //圖像等比例拉伸,填充view,部分內容可能不顯示

                    

? 視頻會議中取消某一端視頻—取消某端視頻是在自己的視頻會議窗口中不在顯示某位成員的視頻。我們假設Tony請求John的視頻,其示例代碼如下:

NSString* meetingNo =@”當前的會議id”;
NSString* meetingPwd =@”所在的會議密碼”;
NSString* memberNumber =@”John的通訊賬號”;
XXXXXX displayView=當成功請求時,展示該成員的窗口

[[ECDevice sharedInstance].meetingManager
 cancelConferenceMemberVideoWithAccount: memberNumber
 andVideoConference: meetingNo andPwd: meetingPwd completion:^(ECError *error, NSString *meetingNumber, NSString *member) {
if (error.errorCode == ECErrorType_NoError)
           { 
               NSLog(@"取消成功"); 
           }
        else
          {
               NSLog(@"取消失敗"); 
          }
}]; 

                    

? 禁言禁聽功能—管理員有權限決定會議成員是否可聽可講,當不需要某一成員說話或者可聽時,此接口可以幫助用戶實現。

/**
 @brief 設置會議某成員是否可聽可講
 @param memberVoip    成員通訊賬號
 @param speakListen   是否可聽可講 1、禁言 2、可講 3、禁聽 4、可聽
 @param meetingType   會議房間的類型
 @param meetingNumber 房間號
 @param completion    執行結果回調block
 */
ECVoIPAccount *account = “是否是通訊賬號”
NSInteger speakListen = “是否可聽可講 1、禁言 2、可講 3、禁聽 4、可聽”
ECMeetingType meetingType = “會議的類型”
NSString *meetingNumber = “會議號”
[[ECDevice sharedInstance].meetingManager setMember:account 
speakListen: speakListen ofMeetingType: meetingType andMeetingNumber: meetingNumber 
completion:^(ECError *error, NSString *meetingNumber) {
        }];

                    

禁言禁聽設置后,服務器會下發一條通知消息,通知所有人,誰被禁言禁聽了。通知消息體增加屬性speakListen,視頻會議通知是-(void)onReceiveMultiVideoMeetingMsg:(ECMultiVideoMeetingMsg *)msg

? 分頁獲取視頻會議列表

/**
 @brief 獲取音頻會議列表
 @param multMeetingType 會議房間的類型
 @param keywords        房間關鍵字
 @param page            頁碼
 @param pageSize        房間數
 @param isAsc           是否升序
 @param completion      執行結果回調block
 */
[[ECDevice sharedInstance].meetingManager listAllMultMeetingsByMeetingType: ECMeetingType_MultiVideo 
  andKeywords:nil page:(NSInteger)page pageSize:(NSInteger)pageSize isAsc:(BOOL)isAsc completion: 
   (ECError *error, NSArray * meetingList) {
        if (error.errorCode == ECErrorType_NoError)
           {
               NSLog(@"獲取列表成功");
           }
        else
          {
               NSLog(@"獲取列表失敗");
          }
}];
                    

文檔更新時間:2016年12月4日

主站蜘蛛池模板: 天天射网站| 成人欧美一区二区三区在线观看 | 一本一道久久a久久精品蜜桃 | 国产资源在线视频 | 成人网av | 欧美日韩午夜精品 | 国产一区三区视频 | 欧美精品一区二区蜜桃 | 九九色综合 | 日韩欧美国产精品 | 伊人久久在线 | 国产精品高潮呻吟 | 91久色 | 成人在线看片 | a级在线免费 | www.47久久青青 | 一区二区三区四区国产 | 国产最好的av国产大片 | 欧美日韩亚洲视频 | 日韩精品一区二区三区四区视频 | 精品毛片视频 | 国产精品一区二区三区四区 | 天天操夜夜操免费视频 | 久草精品视频 | 成人午夜精品 | 一级免费毛片 | 亚洲精品电影 | 中文字幕高清av | 亚洲一区综合 | 国产精品久久久久久久久久久久久 | 日韩中文字幕一区二区 | www.xxxx欧美| 国产欧美日韩精品一区二区三区 | 亚洲精品av在线 | 九九热视频这里只有精品 | 欧美成人自拍视频 | 狠狠干狠狠操 | 黄色片免费看视频 | 香蕉超碰| 亚洲一级毛片 | 亚洲免费视频播放 |