音视频SDK开发 IP组播技术

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

IP组播是指一个IP报文向一个“主机组”的传送,这个包含零个或多个主机的主机组由一个单独的IP地址标识。主机组地址也称为“组播地址”,或者D类地址。除了目的地址部分,组播报文与普通报文没有区别,网络尽力传送组播报文但是并不保证一定送达。

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

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

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

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

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

客户端有关IP组播的相关接口定义(以JavaScript脚本为例):

1.    //
内核参数定义(API:BRAC_SetSDKOption传入参数)

2.    var BRAC_SO_NETWORK_MULTICASTPOLITIC     =                45;       //
组播策略控制(参数为int型,定义为常量:BRAC_MCPOLITIC_XXXX)

3.

4.    //
组播策略定义

5.    var BRAC_MCPOLITIC_DISABLE              =               0;        //
执行服务器路由策略,禁止所有组播发送[默认]

6.    var BRAC_MCPOLITIC_ONLYLOCALMC          =               1;        //
忽略服务器路由策略,只向客户端本地组播组广播媒体流

7.    var BRAC_MCPOLITIC_SERVERANDLOCALMC      =               2;       //
执行服务器路由策略,同时在客户端本地发送组播数据

8.    var BRAC_MCPOLITIC_ONLYSERVERMC         =                3;       //
忽略服务器路由策略,只向服务器本地组播组广播媒体流

9.    var BRAC_MCPOLITIC_SERVERANDSERVERMC     =               4;       //
执行服务器路由策略,同时在服务器端发送组播数据

10.

11.  //
组播功能标志定义

12.  var BRAC_MCFLAGS_JOINGROUP              =       0x00000001;        //
加入多播组

13.  var BRAC_MCFLAGS_LEAVEGROUP             =       0x00000002;        //
离开多播组

14.  var BRAC_MCFLAGS_SENDDATA               =       0x00000010;        //
数据发送标志,指示该多播组用于发送数据

15.  var BRAC_MCFLAGS_RECVDATA               =       0x00000020;        //
数据接收标志,指示该多播组用于接收数据

16.

17.  //
组播功能控制

18.  functionBRAC_MultiCastControl(lpMultiCastAddr, dwPort, lpNicAddr, dwTTL, dwFlags);

19.

典型应用:A、B、C三个客户端,其中服务器、B、C处于一个组播网络环境下,A本地不支持组播,A的数据希望在服务器端组播传给B、C,而B、C的数据希望通过服务器直接点对点传给A

1、A需要使用组播策略4(SERVERANDSERVERMC),同时通知服务器向组播组发送数据,示例代码如下:

1.    BRAC_SetSDKOption(BRAC_SO_NETWORK_MULTICASTPOLITIC,BRAC_MCPOLITIC_SERVERANDSERVERMC);

2.    BRAC_MultiCastControl("224.2.3.4", 8100, "", 5,BRAC_MCFLAGS_SENDDATA);

2、B、C也需要使用组播策略(SERVERANDSERVERMC),同时需要加入多播组,示例代码如下:

1.    BRAC_SetSDKOption(BRAC_SO_NETWORK_MULTICASTPOLITIC,BRAC_MCPOLITIC_SERVERANDSERVERMC);

2.    BRAC_MultiCastControl("224.2.3.4", 8100, "", 5,BRAC_MCFLAGS_JOINGROUP + BRAC_MCFLAGS_RECVDATA);

相关示例代码(Web)位于Git库\web\src\tools\AnyChatMultiCast目录下(需要安装最新版本Web插件)

时间: 2024-09-29 21:55:06

音视频SDK开发 IP组播技术的相关文章

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

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

IP组播技术介绍及实现例子

引 言 近年来,随着Internet的迅速普及和爆炸性发展,在Internet上产生了许多新的应用,其中不少是高带宽的多媒体应用,譬如网 络视频会议.网络音频/视频广播.AOD/VOD.股市行情发布.多媒体远程教育.CSCW协同计算.远程会诊.这就带来了带宽的急剧消耗和网络拥挤问 题.为了缓解网络瓶颈,人们提出各种方案,归纳起来,主要包括以下四种: ●增加互连带宽: ●服务器的分散与集群,以改变网络流量结构,减轻主干网的瓶颈: ●应用QoS机制,把带宽分配给一部分应用: ●采用IP Multic

iOS音视频SDK开发技术解决方案

随着iOS的强势面世,伴随着其出色的应用,一大堆开发人员在捣鼓IOS平台的开发,而基于iOS的音视频二次开发应用也为更多的程序员猛攻猛打.相信大家也使用过QQ的语音视频对话功能,但是不知道大家有没有试过自己来开发一个基于IOS平台的音视频即时通讯的应用,这个应用必须能够做到跨平台 ·                      支持iOS平台设备上的音频即时通讯应用开发 ·                      提供Objective-C语言API接口,开放示例源代码 ·           

如何在AnyChat中使用IP组播接口

AnyChat Platform Core SDK V4.0新增了对IP组播技术的支持,下面介绍如何使用相关的API接口,典型的加入多播组,并向多播组发送数据的代码如下: 1.// 设置本地组播策略 2.DWORD dwMultiCastPolitic = 1; 3.BRAC_SetSDKOption(BRAC_SO_NETWORK_MULTICASTPOLITIC,(const char*)&dwMultiCastPolitic,sizeof(DWORD)); 4.  5.// 加入多播组 6

音视频SDK包 手机视频开发方案

"SDK即时通讯平台"是一套跨平台的即时通讯解决方案,基于先进的H.264视频编码标准.AAC音频编码标准与P2P技术,支持高清视频,整合了佰锐科技在音视频编码.多媒体通讯领域领先的开发技术和丰富的产品经验而设计的高质量.宽适应性.分布式.模块化的网络音视频互动平台. "SDK即时通讯平台"包含了音视频处理模块(采集.编解码).流媒体管理模块(丢包重传.抖动平滑.动态缓冲).流媒体播放模块(多路混音.音视频同步)以及P2P网络模块(NAT穿透.UPnP支持.IP组播

从零到一,使用实时音视频 SDK 一起开发一款 Zoom 吧

zoom(zoom.us) 是一款受到广泛使用的在线会议软件.相信各位一定在办公.会议.聊天等各种场景下体验或者使用过,作为一款成熟的商业软件,zoom 提供了稳定的实时音视频通话质量,以及白板.聊天.屏幕共享.PPT放映等常用功能.但是在当今浏览器成为端上主流的时代,实时音视频又怎甘于落后呢?相比于需要安装包的 Zoom,直接在网页上开发一款类似的会议软件肯定会受到更多的关注.当需要开会的时候,直接通过一个链接,大家就可以接入并开始会议了.现在,使用七牛实时音视频的 Web SDK,我们可以将

音视频SDK解决方案对比

目前音视频开发市场琳琅满目,市场占有率最大的当属于RTX,视高等大公司.但是随着科技的日新月异,一些新型的公司逐渐崭露头角,市场上用户群体的多样化,,也将使用户的选择变得多样性,同时带来的是音视频厂商之间进一步的激烈竞争. 音视频的开发区域涵盖了多个领域,如可以开发具有企业特色的即时通讯系统.视频游戏系统.视频会议系统.网络教学系统.语音视频聊天系统.专家咨询平台以及政府应急指挥平台等.进入2010年以来,音视频开发商面对着更加严格的要求,而往往的像AnyChat.华途及视高等一系列有科技实力的

H3C组播系列之IP组播概述

一.组播的基本介绍 组播指发送源将产生的单一IP数据包通过网络发送给一组特定接收者的网络传输方式.组播结合了单播和广播的优点,在进行点到多点传输时,发送源不需要关心接受者的数目,仅需要发送一份报文:路由器仅关心接口下是否有接收者,同样不需要关心接收者的数量,所以在路由器之间的链路上也仅传送一份报告. 和单播相比,组播减轻了发送源的负担,并且提高了链路的有效利用率.此外,发送源可以同时发送报文给多个接收者,可以满足低延时应用的需求. 和广播相比,组播方式下路由器仅在有接收者的接口复制报文,报文最终

iOS音视频项目开发(跨平台)

苹果手机带动了IOS的火热,一大堆开发人员在捣鼓IOS平台的开发,相信大家也使用过QQ的语音视频对话功能,但是不知道大家有没有试过自己来开发一个基于IOS平台的音视频即时通讯的应用,这个应用必须能够做到跨平台.现在介绍两种方法使用IOS与其他平台的音视频通话. 首先就是使用一个跨平台的音视频通讯平台即可,这是作为非专业技术人员也可以做到的,下面就先介绍第一种:只需三个条件: 1.手机有网络连接: 2.有AnyChat for iOS SDK: 3.对方PC或手机有以上条件. AnyChat音视频