IOS視頻軟件開發流程

IOS 下的音視頻解決方案

 

    因爲工作需要製作一個帶即時音視頻通話功能的 iOS項目APP,藉此機會和大家分享心得。

    早前忙於工作都沒時間去研究音視頻通話這方面的技術,對音視頻通話技術一無所知,不知道從何入手。然後我就上網搜索了一番,網上的信息真是“海量”啊,我要花很大的力氣去查看和要去試用它,看它的功能和實用性是否適合我這類菜鳥型用戶。

    經過網上搜索篩選了有幾種音視頻通話品牌,例如ArrowIM 的,奇普嘉的,AnyChat 的,JST 即時通訊的等等。

    我查看很多他們相關的信息,覺得選用 AnyChat品牌的比較好,我選擇他是因爲我對音視頻方面知識不懂,AnyChat 公司獨有的一個技術論壇,解答用戶使用的一些技術問題,回覆又快又專業,最適合我這種對音視頻沒基礎的,據說技術論壇版主就是AnyChat的高管技術很牛,什麼平臺技術都精通能及時迴應你問題,真是個活字典,不信?試過就知曉。

    AnyChat能輕鬆地將音視頻通話功能嵌入到自己的應用中。此外,開發時在自己的應用中嵌入該音視頻通話引擎時無需像嵌入某 XXQ通話一樣必須首先擁有XXQ賬號。做到了通話功能與賬號認證的分離,因此該音視頻引擎可以與開發者自有的用戶賬號體系集成,而不依賴於任何第三方賬號。說這麼多,就是簡單易用支持多平臺,最重要是有我想要的 iOS 平臺,而且相關教程 API 解說等等都很齊全,數數手指頭就那麼幾個簡單API使用,就能創造呈現出複雜的功能,這使我更加堅信選擇它是對的。廢話不多說,馬上貼上我在使用AnyChat SDK For iOS 的步驟和方法。

    在 iOS 上,用AnyChat SDK 開發音視頻功能,只需要準備一個 Mac 系統和 xcode開發軟件就可以了,那事情當然要先下載好 AnyChat SDK 開發包。最新官方下載地址:http://www.anychat.cn/download.html

    開發包裏面提供了幾個簡單的工程案例Demo 模板在src 目錄下面,bin 目錄下是演示程序APP的安裝包, API 開發接口說明文檔在 doc 裏,最後開發引用到的庫文件和協議文件都在sdk 文件夾。瞭解AnyChat SDK 開發包結構後就開始搭建開發環境和配置。

 

一、     環境搭建配置

1)   首先在工程裏面添加用到的系統框架,如下:

    AVFoundation.framework

    AudioToolbox.framework

    QuartzCore.framework

    CoreMedia.framework

    CoreVideo.framework

    CoreAudio.framework

    (不懂那添加庫的,可以在Xcode軟件菜單的PROJECT—>General—>LinkFrameworks and Libraries 裏面,點擊“+”號增加系統框架)

 

2)   然後在同一個地方(添加系統框架的地方)下面有個“Add other”選項 添加 AnyChat 開發的庫,庫文件在之前說得AnyChatSDK 開發包的 /sdk / libs 目錄下。全部都添加進去,見下圖:

 

 

3)   AnyChat SDK 底層是 c++ 所以還需要添加 libstdc++.dylib 和 libstdc++.6.dylib 的支持庫,和配置C++編譯環境: Build Settings-->Apple LLVM 5.1- Language - C++ --> C++ Standard Library 爲:libstdc++(GNUC++ standard library)  見下圖:

 

 

4)   爲了兼容不同設備的內核,最後配置調試器環境,具體有兩個方法:

a)   修改Build Active Architecture Only選項爲 Yes

b)   或者修改Valid Architectures選項爲 armv7

見下圖:

 

 

 

5)   開發需要用到的 API 引用頭文件,在 AnyChatSDK 包的 /sdk/include  目錄裏面,分別是:

 AnyChatPlatform.h

 AnyChatDefine.h

 AnyChatErrorCode.h

 

    在工程的頭文件代碼中記得添加他們:

#import "AnyChatPlatform.h"

#import "AnyChatDefine.h"

#import "AnyChatErrorCode.h"

    個別需要顯示獲取本地視頻圖像的界面,還需要在頭文件中添加引用 #import "AVFoundation.h" 。

    按照這幾步配置,基本環境就搭建好,可以打開 AnyChatSDK 包裏面的 演示工程Demo,運行下,仿照他們的 Demo代碼,把 AnyChat 音視頻實現功能嵌入到自己的項目中。

 

二、     HelloWorld模式簡易流程

        現在對照這官方 helloAnyChat 工程,簡單介紹下實現音視頻功能的業務邏輯與當中使用到的主要的API接口。

1)    設置通知中心監聽回調事件:

[[NSNotificationCenter defaultCenter] addObserver:selfselector:@selector(AnyChatNotifyHandler:) name:@"ANYCHATNOTIFY"object:nil];

實現方法:

- (void)AnyChatNotifyHandler:(NSNotification*)notify

{

    NSDictionary*dict = notify.userInfo;

    [AnyChat OnRecvAnyChatNotify:dict];

}

 

2)    初始化 AnyChat SDK 進行與服務器鏈接,實現的API:

    [AnyChatPlatformInitSDK:0];

 

3)    在登陸 AnyChat 服務器大廳前需要用到<AnyChatNotifyMessageDelegate>協議API。協議裏有7個方法都必須實現的,分別是:

- (void) OnAnyChatConnect:(BOOL) bSuccess;

- (void) OnAnyChatLogin:(int) dwUserId : (int)dwErrorCode;

- (void) OnAnyChatEnterRoom:(int) dwRoomId : (int)dwErrorCode;

- (void) OnAnyChatOnlineUser:(int) dwUserNum : (int)dwRoomId;

- (void) OnAnyChatUserEnterRoom:(int) dwUserId;

- (void) OnAnyChatUserLeaveRoom:(int) dwUserId;

- (void) OnAnyChatLinkClose:(int)dwErrorCode;

 

4)    正式登陸 AnyChat 音視頻大廳,實現 API:

          [AnyChatPlatform Connect: ServerIP :ServerPort];

        [AnyChatPlatformLogin:serName : @""];

 

                (ServerIP變量:官方測試服務器IP是demo.AnyChat.cn,

                也可以用自己部署的服務器IP。

   ServerPort變量:官方測試服務器端口是8906

    serName變量:登陸的用戶名。 )

 

5)    進入大廳裏的房間,實現 API:

  [AnyChatPlatformEnterRoom:roomNO :@""];

  (roomNO變量:官方測試房間分配了有4個,直接設置roomNO=1的房間就可以了)

 

6)    獲取房間裏的用戶列表,實現API:

 [AnyChatPlatformGetOnlineUser];

 

7)    選擇用戶進行音視頻會話,實現 API:

 [AnyChatPlatform UserSpeakControl:userid:YES];

 [AnyChatPlatformSetVideoPos:userid:theUIImageView:0:0:0:0];

 [AnyChatPlatformUserCameraControl:userid : YES];

(userid變量:用戶列表中的,被選擇獲取音視頻對象的用戶 ID,

  theUIImageView對象:獲取視頻圖像顯示的載體)

 

      經過以上幾個重要 API 就能簡單實現複雜的音視頻會話功能。效果和官網所示的一樣,使用一點都不復雜,各位有需要的“程序猿”可以上www.anychat.cn瞭解。

 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章