iOS平台如何?跨平台通訊

來源:互聯網
上載者:User

標籤:ios視頻開發   移動視頻開發   手機視頻技術   ios視頻技術   跨平台即時通訊   

蘋果手機帶動了IOS的火熱,一大堆開發人員在搗鼓IOS平台的開發,相信大家也使用過QQ的語音視訊交談功能,但是不知道大家有沒有試過自己來開發一個基於IOS平台的音視頻即時通訊的應用,這個應用必須能夠做到跨平台。現在介紹兩種方法使用IOS與其他平台的音視訊通話。


首先就是使用一個跨平台的音視頻通訊平台即可,這是作為非專業技術人員也可以做到的,下面就先介紹第一種:只需三個條件:


1、手機有網路連接;


2、有AnyChat for iOS SDK;


3、對方PC或手機有以上條件。


    AnyChat音視頻互動開發平台是一套跨平台的即時通訊解決方案,基於先進的H.264視頻編碼通訊協定、AAC音頻編碼通訊協定與P2P技術,特點是:高品質、寬適應性、分布式、模組化。 AnyChatSDK分為用戶端SDK和伺服器SDK兩大部分,其中用戶端SDK用於實現語音、視頻的互動以及其它用戶端相關的功能,而伺服器SDK主要實現業務層邏輯控制,以及與第三方平台的互聯等。用戶端SDK和伺服器SDK均支援C++、C#、VB.Net以及Delphi等開發語言。


    AnyChat for iPhone基於iOS 4.3研發,支援iPhone 3G、iPhone 3GS、以及iPhone4等裝置,同時也支援iPad、iPad2裝置,提供Objective-C介面。AnyChat for iPhone可與其它平台的AnyChat互聯互連,串連同一個伺服器程式,有關伺服器的SDK可參考AnyChat Platform Core SDK開發包。


    談及Anychat,跨平台跟支援高清、P2P等先進技術都是國內領先,上星期更是一舉突破完美解決Android裝置上的迴音問題,本月內,Anychat也將發布新版本。在行動裝置 App方面,Anychat在去年發布了首款在Web上啟動並執行程式,可與同樣其他平台的Anychat的行動裝置進行視訊交談,並體驗移動Web應用中的即時音視頻功能。


    即時視頻通訊日益成為主流服務,但是行動裝置的片段化問題始終困擾著開發人員。但是通過Anychat for iOS SDK,開發人員可以輕鬆地通過開放的API介面調用函數將即時視頻通訊功能快速整合到應用中,大大縮短項目時間,而且無需在測試工作上花費大量成本。


第二種就是利用API介面開發屬於自己的音視頻軟體

想要在IOS平台下實現音視頻通訊,最快捷的方法是尋找開源項目或調用其他公司封裝好的API,接下來小編介紹一款不錯的SDK包給大家,已經上傳到了51CTO的資源上面去,大家放心使用(iOS平台上的音頻即時通訊應用開發)下面是一些關於如何調用相關API介面的方法,大家可以相互交流交流。


view sourceprint?


01.// 初始化SDK 


02.public native int InitSDK(int osver, int flags); 


03.// 串連伺服器 


04.public native int Connect(String serverip, int port); 


05.// 登入系統 


06.public native int Login(String username, String password); 


07.// 進入房間(房間ID) 


08.public native int EnterRoom(int roomid, String password); 


09.// 進入房間(房間名稱) 


10.public native int EnterRoomEx(String roomname, String password); 


11.// 退出房間 


12.public native int LeaveRoom(int roomid); 


13.// 設定視頻顯示位置 


14.public native int SetVideoPos(int userid, Surface surface, int lef, 


15.int top, int right, int bottom); 


16./** 


17.* 功能: 設定視頻顯示位置,或是重新整理視頻顯示 傳回值:0表示成功,否則為出錯代碼  


18.* 參數:  


19.* userid  使用者ID  


20.* surface 視頻顯示介面,android用戶端只需提供SurfaceView控制項,核心自動將視頻顯示在控制項上 


21.* lef,top,right,bottom視頻顯示位置資訊 


22.*/


23.// 登出登入 


24.public native int Logout(); 


25.// 釋放資源 


26.public native int Release();


一、初始化SDK

初始化SDK是首先要完成的,用於設定SDK的一些行為,包括設定對應的回呼函數。代碼如下:

 


view sourceprint?


01.//初始化SDK 


02.private void InitialSDK() { 


03.if (anychat == null) { 


04.anychat = new AnyChatCoreSDK(); 


05.//設定基本事件回呼函數 


06.anychat.SetBaseEvent(this); 


07.if (configEntity.useARMv6Lib != 0) 


08.anychat.SetSDKOptionInt(AnyChatDefine. 


09.BRAC_SO_CORESDK_USEARMV6LIB, 1);            //使用ARMv6指令集 


10.anychat.InitSDK(android.os.Build.VERSION.SDK_INT, 0);   //初始化SDK 的一個參數是android API版本 


11.bNeedRelease = true; 


12.} 


13.}


二、登入系統

當初始化SDK完成之後,便可以實現串連伺服器、驗證使用者身份、使用者登入等。

 


view sourceprint?


1.//串連伺服器 


2.anychat.Connect("211.155.25.90", 8906); 


3.//登入系統 


4.anychat.Login("android","");


串連伺服器和登入系統都是一個非同步過程,調用後會立即返回。在回呼函數中根據傳回碼判斷伺服器是否串連成功和登入成功。

三、進入房間

登入成功後就可進入相應的房間,只有在相同房間的使用者才能進行音視頻通訊。代碼如下

1、進入房間

 


view sourceprint?


1.//進入1號房間 


2.anychat.EnterRoom(1, "");   


進入房間後系統會將該房間線上使用者發送給用戶端,只有在同一個房間使用者才能進行音視頻互交、文字交談、檔案傳輸等。當新使用者進入房間或使用者下線,都會觸發非同步訊息通知上層應用更改狀態。

2、文字交談

成功進入房間後,便可調用API介面向指定使用者或房間中所有線上使用者發送文字 聊天訊息。

 


view sourceprint?


1.//發送文字交談訊息 


2.String message = messageEditText.getText().toString(); 


3.anychat.SendTextMessage(-1, 0,message);


其他使用者收到文字交談訊息會觸發相應的回呼函數並將聊天訊息顯示在介面上。

3、請求其他使用者的音視頻

 


view sourceprint?


1.// 請求對方的視頻流  


2.anychat.UserCameraControl(userID, 1); 


3.// 請求對方的音頻流  


4.anychat.UserSpeakControl(userID, 1);


4、音視頻的顯示與播放

 


view sourceprint?


01.//判斷遠端使用者視頻是否已開啟 


02.if (!bOtherVideoOpened) { 


03.if (anychat.GetCameraState(userID) == 2


04.&& anychat.GetUserVideoWidth(userID) != 0) { 


05.SurfaceHolder holder = otherView.getHolder();   //獲得SurfaceView控制項 


06.holder.setFormat(PixelFormat.RGB_565);          //設定顯示格式 


07.holder.setFixedSize(anychat.GetUserVideoWidth(userID), 


08.anychat.GetUserVideoHeight(userID));    //設定視頻顯示寬高 


09.Surface s = holder.getSurface();                //獲得視頻畫面 


10.anychat.SetVideoPos(userID, s, 0, 0, 0, 0);     //調用API顯示視頻畫面 


11.bOtherVideoOpened = true; 


12.} 


13.} 


14.//判斷本地視頻是否已開啟 


15.if (!bSelfVideoOpened) { 


16.if (anychat.GetCameraState(-1) == 2


17.&& anychat.GetUserVideoWidth(-1) != 0) { 


18.SurfaceHolder holder = myView.getHolder();      //獲得SurfaceView控制項 


19.holder.setFormat(PixelFormat.RGB_565);          //設定顯示格式 


20.holder.setFixedSize(anychat.GetUserVideoWidth(-1), 


21.anychat.GetUserVideoHeight(-1));        //設定視頻顯示寬高 


22.Surface s = holder.getSurface();                //獲得視頻畫面 


23.anychat.SetVideoPos(-1, s, 0, 0, 0, 0);         //調用API顯示視頻畫面 


24.bSelfVideoOpened = true; 


25.} 


26.}


Android程式中,當收到使用者的媒體流資料時,Android用戶端只需提供一個SurfaceView控制項,核心自動將視頻媒體流資料顯示在該控制項上並播放聲音。

四、釋放資源

與前面講的串連伺服器、登入系統、進入房間對應的的是離開房間、登出系統、釋放資源。代碼如下: www.it165.net

 


view sourceprint?


1.protected void onDestroy() { 


2.//離開房間 


3.anychat.LeaveRoom(-1); 


4.//登出登入 


5.anychat.Logout(); 


6.//釋放資源 關閉SDK 不再返回登入介面 


7.anychat.Release();


8.}


離開房間後可再進入房間,但是登出登入和釋放資源後,SDK將不再工作。在Activity生命週期結束的時候可以將佔用資源釋放,程式退出。


iOS平台如何?跨平台通訊

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.