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了解。

时间: 2024-10-10 09:37:38

IOS视频软件开发流程以及源码的相关文章

iOS开发-博客导出工具开发教程(附带源码)

前言: 作为一名学生, 作为一名iOS开发学习者, 我个人浏览信息包括博客, 更多的选择移动终端.然而, csdn并没有现成的客户端(不过有个web版的). 之前曾经看到一款开源的导出工具, 但是它是基于Windows平台的.导出的也仅仅是PDF格式.而且, 对于文章的导出, 需要精确URL.无法做到边浏览别导出. 另外, 我想实现的是, 可以在没有网络的情况下, 浏览自己收藏的文章.并且, 对于自己收藏的文章, 可以分类管理. 最关键的是, 对于自己的文章, 可以做一个备份.我曾经遇到过这样一

开发一款一对一视频社交APP,成品源码*付费社交平台搭建,为你定制

开发一款一对一视频社交APP,成品源码*付费社交平台搭建,为你定制 互联网时代,风云变化,你永远不知道下一秒将会有什么事情发生 日前,布谷鸟科技宣布现已推出多种直播系统,针对直播场景做了诸多优化,彻底解决了直播行业的多个技术痛点.此消息给中国的网络直播行业敲响了警钟,缺乏良好直播技术支撑的平台,将在未来面临用户粘着度下降.竞争力逐渐丧失的风险. 延迟.卡顿是网络直播头号公敌 对于直播平台来说,直播过程中出现的延迟和卡顿是头号公敌. 尽管中国的直播行业正在飞速增长,但75%的受访从业者表示,延迟和

【OpenHW12参赛手记】ZedBoard-自定义IP核实现+PS成功调用【详细步骤+流程介绍+源码】 转载

文章来源 图片无法复制,请看原文 http://www.eefocus.com/jefby1990/blog/13-03/291975_490bc.html [OpenHW12参赛手记]ZedBoard-自定义IP核实现+PS成功调用[详细步骤+流程介绍+源码] 2013-03-07 17:56:30 分享: (图片请点击查看原图) 软件环境:WIN7_64 + ISE 14.4 (system_edition) 硬件:Zedboard.USB-Cable线 搭建图: 经过前几天的学习,查看数据

软件开发流程(转载)

软件开发流程 迭代化软件开发技术 1. 传统开发流程的问题 传统的 软件开发流程是一个文档驱动的流程,它将整个软件开发过程划分为顺序相接的几个阶段,每一个阶段都必需完毕所有规定的任务(文档)后才可以进入下一个阶段. 如必须完毕所有的系统需求规格说明书之后才可以进入概要设计阶段,编码必需在系统设计完毕之后才可以进行.这就意味着仅仅有当所有的系统模块所有开发完毕之 后,我们才进行系统集成,对于一个由上百个模块组的复杂系统来说,这是一个很艰巨而漫长的工作. 随着我们所开发的软件项目越来越复杂,传统的瀑

.NET软件防破解方法源码混淆

其实我们只要在软件设计的关键几个环节,利用专业的控件进行保护,就可以保证软件的安全.我们可以在软件设计时和运行时对软件代码进行保护.在设计时的保护,主要的保护手段是,混淆源码:在运行时的保护主要的手段是加壳程序和授权控制.下面我们分别对混淆.加壳.授权控制的方法和采用的控件做一一讲解. 源码混淆 源码混淆就是通过对程序源码的分析,改变源码的原始面貌,降低源码可读性,可对函数甚至流程进行混淆.虽然目前很多开发工具都能进行简单的混淆,不过实用性不大,采用专业的混淆控件对程序源码能起到有效的保护,有些

Android源码开发利器——Java源码调试(基于4.1.2)

原文地址:http://blog.csdn.net/jinzhuojun/article/details/8868038 调试Android Java源码 草帽的后花园--Neo 写在之前的话:这里主要是以调试Java源码为主,应该说是在system_process之后的源码,这对于调试和修改frameworks层的人来说真是一个利器,但至于为什么在system_process之后,我还在分析,如果有结果我会更新此文章,并正在尝试调试C++的代码,就是native中的代码,如果这个可行那将会大大

yum方式软件管理及进阶源码编译安装

1. yum简介2. yum组成结构3. yum配置使用4. yum命令详解5. yum源变量6. yum仓库创建7.进阶源码编译安装 1. yum简介YUM: Yellowdog Updater Modifed, 是由Duke University团队修改Yellow Dog Linux的Yellow Dog Updater开发而来的,是一个基于RPM包管理器的字符前端软件管理器(依赖于RPM包).能够从指定的服务器自动下载RPM包并且安装,可以处理RPM包的依赖关系,并且一次安装所有依赖的软

Android应用层View绘制流程与源码分析

Android应用层View绘制流程与源码分析 1 背景 还记得前面<Android应用setContentView与LayoutInflater加载解析机制源码分析>这篇文章吗?我们有分析到Activity中界面加载显示的基本流程原理,记不记得最终分析结果就是下面的关系: 看见没有,如上图中id为content的内容就是整个View树的结构,所以对每个具体View对象的操作,其实就是个递归的实现. 前面<Android触摸屏事件派发机制详解与源码分析一(View篇)>文章的3-1

智能家居项目(1):软件开发流程

结合公司开发过的产品以及对自学知识的总结,整理出此系列文章  .侧重点还是在软件部分. 公司开发某个项目,肯定是为了盈利赚钱.开发的项目无非就是自己的产品或者承接甲方的开发任务. 大体的流程可以分为几个部分或阶段: 1.需求说明书 预期想要一个什么功能,达到什么样的效果.有的客户也说不明白具体的东西,描述不清.需要加强沟通交流,确定最终的模型.一般情况下是甲方就提供好了的.关键部分大致如下: 监控功能 监控室内温度,监控红外传感器,以阻塞或异步的方式对红外传感器进行检测,如果红外传感器探测到有不