IOS如何开发音视频通讯功能?

IOS如何开发音视频通讯功能?

前言

虽然市面上有很多免费的音视频即时通讯的软件,但作为一枚新手,还是希望可以自己尝试开发的,音视频这方面的编程真心比较复杂,还要搞清楚参数和方法,不然写代码就会很乱和走无数弯路,于是我采用了迂回的方式,利用一些有一定基础的开发包进行二次开发。特别在时间紧迫的时候,可以尝试采用这种方法,在论坛里多问问技术人员,利用开发包进行开发后调整,最后尝试真正 编写代码开发。

 

以下说说以使用AnyChat开发包进行IOS音视频相关开发的例子:(转anychat论坛)

1,首先下载最新的AnyChat foriOS SDK

2,解压缩下载的SDK包,如下图所示:

wKioL1WWS_LD7MCEAACDT1FL2LM167.jpg

3,iOS工程本身必须要引用5个框架。

xcode软件菜单的Project-->BuildPhases-->Link Binary With Libraryes里面增加库,如图:

wKioL1WWTAaxbN8UAAEUaWHySz8356.jpg

引用的5个库具体,如图所示:

wKioL1WWTCbgG0qoAABciImtaUo039.jpg

(有不少同学,出现编译Undefined symbols for architecturei386:"_AVCaptureSessionPreset1280x720", referenced from:……等类似错误,是因为忘记添加所示的iOS Framework.)

4,进入刚下载的官方SDK包里面,目录是【sdk\libs\】,也是要全部添加到你的工程里面。

可以通过在xcode的左下角如图:

wKioL1WWTDyC3PelAAA2O04Q1U0959.jpg

地方添加引用工程外的库文件,

(别忘了【sdk\libs\audioprocess】目录下还有几个.a静态库文件。下图中库文件数量和最新 SDK包里的库文件数量会有所不同,以最新 SDK 包为标准),

wKioL1WWTFWj8OjNAAGFF5Yo1xQ467.jpg


在添加完成库的时候编译下,如果按流畅走,应该是有一个小警告,不影响正常运行的.警告如下:

(warning: ignoring file/Users/bairuitech/Desktop/AnyChatIOS/libvad.a, file was built for archive whichis not the architecture being linked (i386):/Users/bairuitech/Desktop/AnyChatIOS/libvad.a) ,

这个libvad.a 文件可以先删除,这项目真是没需要到.


5,另外需要配置C++环境,以下两个步骤解决:

第一步:Build Settings-->Apple LLVM 5.1 - Language - C++ --> C++Standard Library

设置为:libstdc++(GNU C++ standard library)

wKioL1WWTHOhOr7VAAEPrg3hZCc946.jpg

 

第二步:Project-->Build Phases-->Link Binary With Libraryes里面增加库:libstdc++.dylib

wKiom1WWSrjTJvHIAABdulS4S1U451.jpg

 

第三步:“Project-->Build Phases-->Link Binary With Libraryes”里面添加库“libstdc++.6.dylib”,如下图所示:

wKiom1WWSsLTP1Z2AAByWIPlI8I717.jpg

然后Clean工程,然后重新Build

如果没有配置C++环境,就会在编译时候出现类似 Undefined symbols for architecturei386:"std::_List_node_base::hook(std::_List_node_base*)",referenced from:…….等类似错误,是因为在链接(Link)过程中出错,缺少c++静态库或不兼容.


6,配置调试器环境。

7,SDK解压包的【sdk\include】目录里面是AnyChatObjective-cSDK协议文件

在制作过程中,工程都需要引用此协议到代码.h头文件处。

#import "AnyChatPlatform.h"

#import "AnyChatDefine.h"

#import "AnyChatErrorCode.h"

 

8, 在应用程序启动时(AppDelegate),设置默认端口和IP地址参数(为了连接服务器做准备)。

ServerIP          : “demo.anychat.cn”

ServerPort         : “8906”


9,程序加载前,做初始化系统和配置登录连接,主要以下方法:

[AnyChatPlatform InitSDK:0];  // 初始化系统

[AnyChatPlatform Connect: ServerIP : ServerPort;  // 连接服务器参数

[AnyChatPlatform Login: UserName : @""];  // 登录系统   UserName参数:登录自定义的用户名)

(以上步骤完成后,运行登录成功会在控制台打印显示 Connection to streaming media serversuccessfully!

[AnyChatPlatform EnterRoom:1 :@""];  //进入房间

EnterRoom的值在例子中是设置了第一个房间,目前有6个房间可以自己重新选择)

 

通过[AnyChatPlatform GetOnlineUser]方法,获取返回值是一个远程用户ID的列表数组

(可以通过此数组获取第一用户ID与他视频聊天。)


10,

1),在显示视图中需要添加AnyChatNotifyMessageDelegate协议,必须实现以下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;

 

(注意两个事件处理:1当有用户进出房间时触发的事件,2用户自己进房间先后顺序的事件处理。)




2),工程里实现了SDK状态改变事件协议AnyChatStateChangeDelegate,以此为案例和同学们复习一下iOS开发语法,怎样实现协议与委托的三部曲.(ios开发老手可略过,此协议对于视频聊天不是必须实现的)

 

首先是在实现协议的类.h头文件中添加,你要引用的协议<AnyChatStateChangeDelegate>.

然后该协议里面有5个委托方法必须实现在类的.m文件中(在AnyChatPlatform.h中可以查到那5个方法),

最后这步是很多iOS初学者忘记的,就是设置委托代理是谁 (:_cxsAnyChatPlatform.stateChangeDelegate = self;)


你可能感兴趣的:(ios,新手,音视频开发)