音视频二次开发 IP组播技术

原创 2014年12月05日 11:39:11

Internet上,多媒体业务诸如:流媒体,视频会议和视频点播等,正在成为信息传送的重要组成部分。点对点传输的单播方式不能适应这一类业务传输特性--单点发送多点接收,因为服务器必须为每一个接收者提供一个相同内容的IP报文拷贝,同时网络上也重复地传输相同内容的报文,占用了大量资源。在这种情况下组播(multicast)应运而生,它的出现解决了一个主机向特定的多个接收者发送消息的方法。1989年,IETF通过RFC1112,定义了Internet上的组播方式。

   主机组的成员可以动态变化,主机有权选择加入或者退出某个主机组。主机可以加入多个主机组,也可以向自己没有加入的主机组发送数据。主机组有两种:永久组和临时组。永久组的IP地址是周知的,由Internet管理机构分配,是保留地址。临时组的地址则使用除永久组地址外的非保留D类地址。

      IP组播分组在互联网上的转发由支持组播的路由器来处理。主机发出的IP组播分组在本子网内被所有主机组成员接收,同时与该子网直接相连的组播路由器会把组播报文 转发到所有包含该主机组成员的网络上。组播报文传递的范围由报文的生存期值(TTL, Time-to-Live)决定,如果TTL值等于或者小于设置的路由器端口TTL门限值(TTL Threshold),路由器将不再转发该报文。

单个数据流可以发送到多个客户端的组播能力已成为大多数多媒体应用的传输手段。组播技术利用一个IP地址使IP数据报文 发送到用户组。IP组播采用了特殊定义的目的IP地址和目的MAC地址。IGMP为客户端提供加入和离开组播组的方式。CGMP使路由器为交换机配置组播 转发表,并告诉交换机当前的组播成员。指派路由器根据对网络中的组播成员的分布和使用的不同采用密集模式DM或稀疏模式SM组播路由协议来构造组播的分布 树,而这个分布树将在源子网和组播组之间确定一条唯一路径以提高数据传输效率。

IP组播技术需要三层交换机,或路由器支持,通常应用于专用网络,如:教育网、**网以及企业内部网等,使用IP组播技术可以极大的降低数据发送方的带宽要求,最大的好处是可以让数据接收方的数量成千上万,而不会造成网络的阻塞。

AnyChatPlatform Core SDK V4.0新增了对IP组播技术的支持,下面介绍如何使用相关的API接口,典型的加入多播组,并向多播组发送数据的代码如下:

 

1.//设置本地组播策略

2.DWORD dwMultiCastPolitic = 1;

3.BRAC_SetSDKOption(BRAC_SO_NETWORK_MULTICASTPOLITIC,(constchar*)&dwMultiCastPolitic,sizeof(DWORD));

4. 

5.//加入多播组

6.DWORD dwFlags = BRAC_MCFLAGS_JOINGROUP | BRAC_MCFLAGS_SENDDATA |BRAC_MCFLAGS_RECVDATA;

7.BRAC_MultiCastControl("224.2.3.4",9810, "",5, dwFlags);

 

上面的代码中“dwFlags”标志指示加入多播组“224.2.3.4:9810”,本地的数据通过该多播组进行传输,同时,自己也从该多播组接收其它用户的音视频数据。

 

当需要本地发送组播数据时,设置本地组播策略是必须的,因为系统默认是采用服务器所配置的网络数据传输策略(AnyChatCoreServer.ini中的“RoutingPolicy”配置项)进行数据发送,如不设置本地组播策略,则不会向组播地址发送数据,设置之后,可以将本地的数据发送多个组播地址和端口,如下面的代码表示音视频数据将向“224.2.3.4:9810”“224.2.3.4:9812”两个组播端口广播数据:

 

1.//设置本地组播策略

2.DWORD dwMultiCastPolitic = 1;

3.BRAC_SetSDKOption(BRAC_SO_NETWORK_MULTICASTPOLITIC,(constchar*)&dwMultiCastPolitic,sizeof(DWORD));

4. 

5.//加入多播组

6.DWORD dwFlags = BRAC_MCFLAGS_JOINGROUP | BRAC_MCFLAGS_SENDDATA;

7.BRAC_MultiCastControl("224.2.3.4",9810, "",5, dwFlags);

8.BRAC_MultiCastControl("224.2.3.4",9812, "",5, dwFlags);

当系统有多块网卡,而需要向其中某一块网卡连接的网络进行组播时,可通过“BRAC_MultiCastControl”的第三个参数来指定即可,第三个参数是指定网卡的IP地址。

相关文章推荐

音视频SDK开发 IP组播技术

在Internet上,多媒体业务诸如:流媒体,视频会议和视频点播等,正在成为信息传送的重要组成部分。点对点传输的单播方式不能适应这一类业务传输特性--单点发送多点接收,因为服务器必须为每一个接收者提供...

音视频技术 IP组播

在Internet上,多媒体业务诸如:流媒体,视频会议和视频点播等,正在成为信息传送的重要组成部分。点对点传输的单播方式不能适应这一类业务传输特性--单点发送多点接收,因为服务器必须为每一个接收者提供...

音视频即时通讯二次开发

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

IP组播技术在视频中的应用(3)

IP组播技术在视频中的应用六、 IP 组播在视频中的应用 如果要将组播通信应用在视频网络中,网络里的发送和接收主机、网络路由器以及它们之间的网络结构必须支持组播,防火墙设置成允许组播通过。 如图 2 ...

IP组播技术在视频中的应用(2)

IP组播技术在视频中的应用四、 IP 组播技术的特点IP 组播技术具有以下特点。 1. 群地址 在组播网中,每个组播群组拥有惟一的组播地址( D 类地址),一部分 IP 组播地址是由 Internet...

Piwik收集IP信息的二次开发

1,在应用技术方面:分析技术主要有:HTTP协议头信息技术,第一方COOKIE,第三方COOKIE,P3P协议COOKIE,LSO技术以及Web Beacons和javascript技术。 2,系统...

海康威视IP摄像头基于OPENCV的二次开发

Vide 最近玩了一下海康的IPcamera,与普通的WEBcamera输出RGB图像不同,其解码后输出的图像格式为YV12,这使得我们不能用熟悉的两行代码 就获得可以用opencv直接处理的源...

ecshop二次开发--视频上传

1.前台展示效果: 2.后台展示效果: 3.代码实现: 后台实现过程: 1.在languages/zh_cn/admin/goods.php中插入 $_LANG['tab_vide...

ecshop二次开发之视频上传

1.前台展示效果: 2.后台展示效果: 3.代码实现: 后台实现过程: 1.在languages/zh_cn/admin/goods.PHP中插入 [python] ...

ecshop二次开发--视频上传

1.前台展示效果: 2.后台展示效果: 3.代码实现: 后台实现过程: 1.在languages/zh_cn/admin/goods.php中插入 $_LANG['tab...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:音视频二次开发 IP组播技术
举报原因:
原因补充:

(最多只允许输入30个字)