现在IOS很是火热,一大堆开发人员在捣鼓IOS平台的开发,相信大家也使用过QQ的语音视频对话功能,但是不知道大家有没有试过自己来开发一个基于IOS平台的音视频即时通讯的应用,这个应用必须能够做到跨平台
  • 支持iOS平台设备上的音频即时通讯应用开发
  • 提供Objective-C语言API接口,开放示例源代码
  • 集成H.264、AAC、AMR等编解码技术
  • 封装音视频的采集、编解码、传输、显示和播放等模块
  • 支持Android、Web、PC等设备和iOS之间的互联互通
  • 想要在IOS平台下实现音视频通信,最快捷的方法是寻找开源项目或调用其他公司封装好的API,接下来小编介绍一款不错的SDK包给大家,已经上传到了51CTO的资源上面去,大家放心使用(iOS平台上的音频即时通讯应用开发)下面是一些关于如何调用相关API接口的方法,大家可以相互交流交流。
1.       // 初始化SDK  
2.       public native int InitSDK(int osver, int flags);  
3.       // 连接服务器  
4.       public native int Connect(String serverip, int port);  
5.       // 登录系统  
6.       public native int Login(String username, String password);  
7.       // 进入房间(房间ID)  
8.       public native int EnterRoom(int roomid, String password);  
9.       // 进入房间(房间名称)  
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的一些行为,包括设置对应的回调函数。代码如下:
1.       //初始化SDK  
2.       private void InitialSDK() {  
3.           if (anychat == null) {  
4.               anychat = new AnyChatCoreSDK();  
5.               //设置基本事件回调函数  
6.               anychat.SetBaseEvent(this);  
7.               if (configEntity.useARMv6Lib != 0)  
8.                   anychat.SetSDKOptionInt(AnyChatDefine.  
9.                           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完成之后,便可以实现连接服务器、验证用户身份、用户登录等。
1.           //连接服务器  
2.           anychat.Connect("211.155.25.90", 8906);  
3.           //登录系统  
4.           anychat.Login("android",""); 
连接服务器和登录系统都是一个异步的过程,调用后会立即返回。在回调函数中根据返回代码判断服务器是否连接成功和登录成功。
三、进入房间
登录成功后就可进入相应的房间,只有在相同房间的用户才能进行音视频通信。代码如下
1、进入房间
1.   //进入1号房间  
2.   anychat.EnterRoom(1, "");    
进入房间后系统会将该房间在线用户发送给客户端,只有在同一个房间用户才能进行音视频互交、文字聊天、文件传输等。当新用户进入房间或用户下线,都会触发异步消息通知上层应用更改状态。
2、文字聊天
成功进入房间后,便可调用API接口向指定用户或房间中所有在线用户发送文字 聊天消息。
1.           //发送文字聊天消息  
2.           String message = messageEditText.getText().toString();  
3.           anychat.SendTextMessage(-1, 0,message); 
其他用户收到文字聊天消息会触发相应的回调函数并将聊天消息显示在界面上。
3、请求其他用户的音视频
1.           // 请求对方的视频流   
2.           anychat.UserCameraControl(userID, 1);  
3.           // 请求对方的音频流   
4.           anychat.UserSpeakControl(userID, 1); 
4、音视频的显示与播放
1.          //判断远程用户视频是否已打开  
2.           if (!bOtherVideoOpened) {  
3.               if (anychat.GetCameraState(userID) == 2 
4.                       && anychat.GetUserVideoWidth(userID) != 0) {  
5.                   SurfaceHolder holder = otherView.getHolder();   //获得SurfaceView控件  
6.                   holder.setFormat(PixelFormat.RGB_565);          //设置显示格式  
7.                   holder.setFixedSize(anychat.GetUserVideoWidth(userID),  
8.                           anychat.GetUserVideoHeight(userID));    //设置视频显示宽高  
9.                   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控件,内核自动将视频媒体流数据显示在该控件上并播放声音。
四、释放资源
与前面讲的连接服务器、登录系统、进入房间对应的的是离开房间、注销系统、释放资源。代码如下:
1.       protected void onDestroy() {  
2.       //离开房间  
3.       anychat.LeaveRoom(-1);  
4.       //注销登录  
5.       anychat.Logout();  
6.       //释放资源 关闭SDK 不再返回登录界面  
7.       anychat.Release(); 
8.   }
离开房间后可再进入房间,但是注销登录和释放资源后,SDK将不再工作。在Activity生命周期结束的时候可以将占用资源释放,程序退出。

转载于:https://blog.51cto.com/6359515/1186580

iOS平台上的音视频即时通讯应用开发相关推荐

  1. 安卓平台下的音视频即时通讯应用的开发

    现在安卓很是火热,一大堆开发人员在捣鼓安卓平台的开发,相信大家也使用过QQ的语音视频对话功能,但是不知道大家有没有试过自己来开发一个基于安卓平台的音视频即时通讯的应用,这个应用必须能够做到跨平台 兼容 ...

  2. 在linux系统下实现音视频即时通讯的部分代码

    由于使用习惯,Linux在中国受欢迎程度远不如windows,相应的软件也比较少,尤其是音视频类的软件,但是,这并不代表就完全没有.下面介绍一款强大的音视频即时通讯平台给大家,它就是--Anychat ...

  3. Linux平台上的音视频互动开发平台

    由于使用习惯,Linux在中国受欢迎程度远不如windows,相应的软件也比较少,尤其是音视频类的软件,但是,这并不代表就完全没有.下面介绍一款强大的音视频即时通讯平台给大家,它就是--Anychat ...

  4. 音视频即时通讯的介绍与前景

    音视频即时通讯是目前最为时尚.流行的通讯方式.可以实现一对一.一对多.多对多的通讯.而各种各样的即时通讯软件也层出不穷:服务提供商越来越丰富的通讯服务功能.随着社会的发展与网络技术的进步,音视频即时通 ...

  5. 从三网融合看音视频即时通讯的市场与挑战

    一.市场渗透力以及存在问题 第一,有需求就有市场,有市场就有商机.利字当头,当仁不让.众多服务商就是盯准了即时通讯市场潜在的无限商机,才会不遗余力地开发各类新的即时通讯软件. 第二,即时通讯软件的特点 ...

  6. 2014年音视频即时通讯市场的割据

    当腾讯微信几年下来获取了几亿用户量之后,上个月双11晚上,腾讯微信正式推出"微信电话本"应用,利用网络通信技术,微信一键登录之后使用流量便可与微信好友直接通话,整体交互界面.流程和 ...

  7. 音视频即时通讯领域的发展

    网络的融合与业务应用的融合,以及IP基础架构在通信核心网络上的实施,正在使视讯业发生着多元化的变革.在这里,我们将从应用.运营.行业.技术以及市场价格竞争的角度来观测视频通信领域新的发展趋势. 应用趋 ...

  8. 【幻灯片分享】iOS平台上开发音视频处理 | 盛大微酷 赵志猛 | iOS DevCamp

    专业视频处理算法在移动开发中的优化:<iOS平台上开发音视频处理>| 盛大微酷赵志猛 | iOS DevCamp 主题简介:视频处理技术,已经在专业设备上得到了几十年的发展.但是这些处理方 ...

  9. iPhone4平台上实时音视频对话(经验)

    经过两个多月的奋战,从无到有,现在iPhone4平台上实时音视频对话已取得初步成果.其间查阅了很多资料,感谢这些信息的提供者.继往开来,我写下此文.我只列出要点,具体编码以及平台移植各位自己去努力吧. ...

  10. 音视频即时通讯二次开发

    用于二次开发企业即时通讯源码(C++/MFC),现在,做一个普通的即时通讯软件不是一件难事,网上有很多很好的这类软件的源代码可以拿来使用.今天就介绍一个我用过,觉得不错的给大家.软件叫 ANYCHAT ...

最新文章

  1. linux 分区克隆软件 partclone 简介
  2. 第一周 从C走进C++ 008 函数缺省参数
  3. Chapter 7:Statistical-Model-Based Methods
  4. 计算机网络之网络层:1、网络层功能、路由算法和路由选择概述
  5. python图像处理:一福变五福
  6. 【蓝桥杯嵌入式】【STM32】2_KEYBOARD(主循环扫描+外部中断)
  7. 怎样追求一个你喜欢的人?
  8. 一定质量的封闭气体被压缩后_螺杆压缩机转子型线设计原则及发展过程
  9. 使用EasyRecovery轻松修复损坏的照片
  10. shell基础之case应用
  11. 计算机专业英语1500词TXT,计算机专业英语词汇1500词(一)
  12. 小白都会的一键软件搬家?你还不会吗?
  13. 电脑ATX电源接口定义详解
  14. ftp访问命令 linux,linux访问ftp服务器命令
  15. AICamera of Caffe2
  16. 利用计算机网络实现OA的功能,中小企业oa办公系统解决方案怎么做?
  17. ACE初学者使用指南
  18. 视频基础知识—720P/1080i/1080P
  19. MySQL limit后面加变量
  20. 华为鲲鹏ARM云服务器搭建网站服务器教程

热门文章

  1. ubuntu 修改IP,网关等
  2. 2008-03-17 淋湿的心情
  3. Dev--Config Files
  4. 搭建一个简单的SpringBoot项目
  5. POJ2806 Square
  6. 团队-科学计算器-开发环境搭建过程
  7. ElasticSearch 5学习(2)——Kibana+X-Pack介绍使用(全)
  8. pl/sql远程连接oracle总结
  9. iOS NSString的常用用法
  10. Java并发编程:Lock(下)