安卓平台的音視頻互動開發平台

來源:互聯網
上載者:User

標籤:手機視頻開發包   音視頻解決方案   音視頻技術   音視頻 sdk   android視頻開發技術   

  • 相容Google、HTC、小米、Samsung、華為等主流硬體裝置

  • 支援iOS、Web、PC等裝置和Android之間的互聯互連

  • 視頻會話時,預設開啟自拍;

  • 能夠有Java音視頻採集、顯示驅動,相容更多Android裝置;

  • 想要在Android平台下實現音視頻通訊,最快捷的方法是尋找開源項目或調用其他公司封裝好的API,接下來小編介紹一款不錯的SDK包給大家,(安卓平台的音視頻互動開發平台)下面是一些關於如何調用相關API介面的方法,大家可以相互交流交流。


Android通訊平台相關API方法

    // 初始化SDK      public native int InitSDK(int osver, int flags);      // 串連伺服器      public native int Connect(String serverip, int port);      // 登入系統      public native int Login(String username, String password);      // 進入房間(房間ID)      public native int EnterRoom(int roomid, String password);      // 進入房間(房間名稱)      public native int EnterRoomEx(String roomname, String password);      // 退出房間      public native int LeaveRoom(int roomid);      // 設定視頻顯示位置      public native int SetVideoPos(int userid, Surface surface, int lef,              int top, int right, int bottom);      /**       * 功能: 設定視頻顯示位置,或是重新整理視頻顯示 傳回值:0表示成功,否則為出錯代碼        * 參數:        * userid  使用者ID        * surface 視頻顯示介面,android用戶端只需提供SurfaceView控制項,核心自動將視頻顯示在控制項上       * lef,top,right,bottom視頻顯示位置資訊       */     // 登出登入      public native int Logout();      // 釋放資源      public native int Release();
一、初始化SDK

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

    //初始化SDK      private void InitialSDK() {          if (anychat == null) {              anychat = new AnyChatCoreSDK();              //設定基本事件回呼函數              anychat.SetBaseEvent(this);              if (configEntity.useARMv6Lib != 0)                  anychat.SetSDKOptionInt(AnyChatDefine.                          BRAC_SO_CORESDK_USEARMV6LIB, 1);            //使用ARMv6指令集              anychat.InitSDK(android.os.Build.VERSION.SDK_INT, 0);   //初始化SDK 的一個參數是android API版本              bNeedRelease = true;          }      }
二、登入系統

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

        //串連伺服器          anychat.Connect("211.155.25.90", 8906);          //登入系統          anychat.Login("android","");

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

三、進入房間

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

1、進入房間

//進入1號房間  anychat.EnterRoom(1, "");

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

2、文字交談

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

        //發送文字交談訊息          String message = messageEditText.getText().toString();          anychat.SendTextMessage(-1, 0,message);

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

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

        // 請求對方的視頻流           anychat.UserCameraControl(userID, 1);          // 請求對方的音頻流           anychat.UserSpeakControl(userID, 1);

4、音視頻的顯示與播放

       //判斷遠端使用者視頻是否已開啟          if (!bOtherVideoOpened) {              if (anychat.GetCameraState(userID) == 2                     && anychat.GetUserVideoWidth(userID) != 0) {                  SurfaceHolder holder = otherView.getHolder();   //獲得SurfaceView控制項                  holder.setFormat(PixelFormat.RGB_565);          //設定顯示格式                  holder.setFixedSize(anychat.GetUserVideoWidth(userID),                          anychat.GetUserVideoHeight(userID));    //設定視頻顯示寬高                  Surface s = holder.getSurface();                //獲得視頻畫面                  anychat.SetVideoPos(userID, s, 0, 0, 0, 0);     //調用API顯示視頻畫面                  bOtherVideoOpened = true;              }          }          //判斷本地視頻是否已開啟          if (!bSelfVideoOpened) {              if (anychat.GetCameraState(-1) == 2                     && anychat.GetUserVideoWidth(-1) != 0) {                  SurfaceHolder holder = myView.getHolder();      //獲得SurfaceView控制項                  holder.setFormat(PixelFormat.RGB_565);          //設定顯示格式                  holder.setFixedSize(anychat.GetUserVideoWidth(-1),                          anychat.GetUserVideoHeight(-1));        //設定視頻顯示寬高                  Surface s = holder.getSurface();                //獲得視頻畫面                  anychat.SetVideoPos(-1, s, 0, 0, 0, 0);         //調用API顯示視頻畫面                  bSelfVideoOpened = true;              }          }

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

四、釋放資源

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

    protected void onDestroy() {      //離開房間      anychat.LeaveRoom(-1);      //登出登入      anychat.Logout();      //釋放資源 關閉SDK 不再返回登入介面      anychat.Release(); }

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


安卓平台的音視頻互動開發平台

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.