admin 发表于 2015-1-5 16:23:23

2015-01-05 AnyChat提供完整的IP组播解决方案

IP组播的介绍可参考:什么是IP组播技术,有什么作用?

自AnyChat r4424版本开始,AnyChat支持客户端组播,同时还支持服务器组播。音视频数据可以在客户端本地发送到IP组播组,也可以由客户端上传到服务器,然后由服务器发送到IP组播组。

客户端有关IP组播的相关接口定义(以JavaScript脚本为例):// 内核参数定义(API:BRAC_SetSDKOption传入参数)
var BRAC_SO_NETWORK_MULTICASTPOLITIC   =               45;      // 组播策略控制(参数为int型,定义为常量:BRAC_MCPOLITIC_XXXX)

// 组播策略定义
var BRAC_MCPOLITIC_DISABLE               =                0;      // 执行服务器路由策略,禁止所有组播发送[默认]
var BRAC_MCPOLITIC_ONLYLOCALMC         =                1;      // 忽略服务器路由策略,只向客户端本地组播组广播媒体流
var BRAC_MCPOLITIC_SERVERANDLOCALMC      =                2;      // 执行服务器路由策略,同时在客户端本地发送组播数据
var BRAC_MCPOLITIC_ONLYSERVERMC          =                3;      // 忽略服务器路由策略,只向服务器本地组播组广播媒体流
var BRAC_MCPOLITIC_SERVERANDSERVERMC   =                4;      // 执行服务器路由策略,同时在服务器端发送组播数据

// 组播功能标志定义
var BRAC_MCFLAGS_JOINGROUP               =      0x00000001;      // 加入多播组
var BRAC_MCFLAGS_LEAVEGROUP            =      0x00000002;      // 离开多播组
var BRAC_MCFLAGS_SENDDATA                =      0x00000010;      // 数据发送标志,指示该多播组用于发送数据
var BRAC_MCFLAGS_RECVDATA                =      0x00000020;      // 数据接收标志,指示该多播组用于接收数据

// 组播功能控制
function BRAC_MultiCastControl(lpMultiCastAddr, dwPort, lpNicAddr, dwTTL, dwFlags);
典型应用:A、B、C三个客户端,其中服务器、B、C处于一个组播网络环境下,A本地不支持组播,A的数据希望在服务器端组播传给B、C,而B、C的数据希望通过服务器直接点对点传给A
1、A需要使用组播策略4(SERVERANDSERVERMC),同时通知服务器向组播组发送数据,示例代码如下:BRAC_SetSDKOption(BRAC_SO_NETWORK_MULTICASTPOLITIC, BRAC_MCPOLITIC_SERVERANDSERVERMC);
BRAC_MultiCastControl("224.2.3.4", 8100, "", 5, BRAC_MCFLAGS_SENDDATA);2、B、C也需要使用组播策略(SERVERANDSERVERMC),同时需要加入多播组,示例代码如下:BRAC_SetSDKOption(BRAC_SO_NETWORK_MULTICASTPOLITIC, BRAC_MCPOLITIC_SERVERANDSERVERMC);
BRAC_MultiCastControl("224.2.3.4", 8100, "", 5, BRAC_MCFLAGS_JOINGROUP + BRAC_MCFLAGS_RECVDATA);相关示例代码(Web)位于Git库\web\src\tools\AnyChatMultiCast目录下(需要安装最新版本Web插件)。

参考:AnyChat IP组播示例程序及文档
页: [1]
查看完整版本: 2015-01-05 AnyChat提供完整的IP组播解决方案