在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門限值(TTL Threshold),路由器將不再轉發該報文。
  單個數據流可以發送到多個客戶端的組播能力已成為大多數多媒體應用的傳輸手段。組播技術利用一個IP地址使IP數據報文 發送到用戶組。IP組播采用了特殊定義的目的IP地址和目的MAC地址。IGMP為客戶端提供加入和離開組播組的方式。CGMP使路由器為交換機配置組播 轉發表,并告訴交換機當前的組播成員。指派路由器根據對網絡中的組播成員的分布和使用的不同采用密集模式DM或稀疏模式SM組播路由協議來構造組播的分布 樹,而這個分布樹將在源子網和組播組之間確定一條唯一路徑以提高數據傳輸效率。
  IP組播技術需要三層交換機,或路由器支持,通常應用于專用網絡,如:教育網、廣電網以及企業內部網等,使用IP組播技術可以極大的降低數據發送方的帶寬要求,最大的好處是可以讓數據接收方的數量成千上萬,而不會造成網絡的阻塞。
~~~
// 內核參數定義(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);
~~~
- 一、系統概述
- 1.1系統介紹
- 1.2系統特性
- 1.2.1 視頻技術
- 1.2.2 音頻技術
- 1.2.3 P2P技術
- 二、開發指南
- 2.1 客戶端SDK概述
- 2.1.1 Web
- 2.1.2 Android
- 2.1.3 iOS
- 2.1.4 Windows
- 2.1.5 Linux
- 2.1.6 Mac
- 2.2 客戶端SDK的引用及升級
- 2.3 函數調用順序
- 2.4 初始化
- 2.4.1 Web
- 2.4.2 Android
- 2.4.3 iOS
- 2.4.4 Windows
- 2.4.5 Linux
- 2.4.6 Mac
- 2.5 鏈接與登陸
- 2.5.1 Web
- 2.5.2 Android
- 2.5.3 iOS
- 2.5.4 Windows
- 2.5.5 Linux
- 2.5.6 Mac
- 2.6 進入房間
- 2.6.1 Web
- 2.6.2 Android
- 2.6.3 iOS
- 2.6.4 Windows
- 2.6.5 Linux
- 2.6.6 Mac
- 2.7 音視頻操作
- 2.7.1 用戶視頻控制
- 2.7.2 用戶語音控制
- 2.7.3 設置視頻顯示位置
- 2.7.4 設置指定用戶音視頻流相關參數
- 2.7.5 設置外部輸入視頻格式
- 2.7.6 外部視頻數據輸入
- 2.7.7 設置外部輸入音頻格式
- 2.7.8 外部音頻數據輸入
- 2.8 查詢狀態
- 2.8.1 查詢攝像頭的狀態
- 2.8.2 查詢用戶音頻設備采集狀態
- 2.8.3 查詢用戶昵稱
- 2.8.4 查詢用戶狀態
- 2.9 普通功能
- 2.9.1 獲取SDK版本信息
- 2.9.2 獲取當前房間在線用戶列表
- 2.9.3 獲取指定房間在線用戶列表
- 2.9.4 傳送文本消息
- 2.9.5 透明通道傳送緩沖區
- 2.9.6 傳送文件
- 2.9.7 查詢傳輸任務相關信息
- 2.9.8 取消傳輸任務
- 2.9.9 發送SDK Filter通信數據
- 2.9.10 音視頻錄制
- 2.9.11 圖像抓拍(拍照)
- 2.9.12 組播功能控制
- 2.9.13 虛擬背景
- 2.10 離開房間
- 2.11 注銷系統
- 2.12 系統設置
- 2.12.1 枚舉本地采集設備
- 2.12.2 選擇指定采集設備
- 2.12.3 獲取當前采集設備
- 2.12.4 獲取音頻設備當前音量
- 2.12.5 設置指定音頻設備音量
- 2.12.6 查詢SDK內核參數
- 2.12.7 SDK內核參數設置
- 2.13 媒體播放
- 2.13.1 流媒體播放初始化
- 2.13.2 流媒體播放控制
- 2.13.3 設置流媒體播放視頻顯示位置
- 2.13.4 流媒體播放獲取參數信息
- 2.13.5 流媒體播放釋放資源
- 三、參數設置與說明
- 3.1 基礎視頻概念
- 3.1.1 分辨率與碼率
- 3.1.2 幀率
- 3.1.3 H.264編解碼
- 3.1.4 分辨率、幀率、碼率之間的關系
- 3.2 基礎音頻概念
- 3.2.1 音頻采樣率及大小
- 3.2.2 音頻聲道
- 3.2.3 AAC編解碼
- 3.3 視頻質量調優
- 3.4 視頻通話對帶寬的需求
- 3.4.1 帶寬的影響因素
- 3.4.2 視頻場景的帶寬要求
- 四、音視頻交互示例代碼
- 4.1 修改視頻參數
- 4.2 如何自動打開對方的視頻
- 4.3 打開多路音視頻
- 五、常見問題
- 1、視頻模糊有馬賽克
- 2、視頻卡頓
- 3、攝像頭亮燈但本地視頻無顯示
- 4、雙向視頻,聽不見對方聲音
- 5、雙向視頻,看不見對方視頻
- 6、內網正常,外網無法音視頻
- 7、聲音有嘯叫和雜音
- 8、同網段正常、不同網段無法音視頻
- 9、進入房間失敗,返回錯誤代碼-1
- 10、本地視頻方向不正確
- 11、手機本地正常,Web看手機端有裁剪
- 12、雙方視頻出現綠屏、花屏
- 13、閃屏
- 14、IP攝像頭的支持
- 15、服務器日志采集自定義文件夾不生效
- 16、特殊3D攝像頭無法打開
- 17、音視頻不同步
- 18、簽名服務器部署后點登陸拋空指針異常
- 19、iOS 按HOME鍵進入后臺 聽不到 對方的聲音了,對方能聽到自己的(已開啟音頻后臺模式)