操屁眼的视频在线免费看,日本在线综合一区二区,久久在线观看免费视频,欧美日韩精品久久综

新聞資訊

    里來詳細了解一下Sip協議。以下內容大致分為以下幾個部分:

    • 協議簡介
    • 兩種Sip會話模式Session Model與Pager Model;
    • Sip 消息體結構
    • Sip 消息舉例

    一、Sip協議簡介:

    SIP(Session Initiation Protocol,會話初始協議)是由IETF(Internet Engineering Task Force,因特網工程任務組)制定的多媒體通信協議。廣泛應用于CS(Circuit Switched,電路交換)、NGN(Next Generation Network,下一代網絡)以及IMS(IP Multimedia Subsystem,IP多媒體子系統)的網絡中,可以支持并應用于語音、視頻、數據等多媒體業務,同時也可以應用于Presence(呈現)、Instant Message(即時消息)等特色業務。可以說,有IP網絡的地方就有SIP協議的存在。
    SIP是類似于HTTP,SIP可以減少應用特別是高級應用的開發時間。由于基于IP協議的SIP利用了IP網絡,固定網運營商也會逐漸認識到SIP技術對于他們的原意義。

    二、Sip消息的兩種會話模式

    在Sip IM通信應用過程中,一般存在著兩種會話模式:

    • Session Model
    • Pager Model

    2.1、Session Model

    會話中,對于消息體內容大于1300字節時,一般采用Session Model。其會話建立過程如下圖所示:

    主叫方A呼叫被叫方B:

    • 步驟1:主叫方A發送INVITE請求到代理服務器
    • 步驟2:代理服務器發送100 Trying 響應主叫方A
    • 步驟3~6:代理服務器搜索被叫方B的地址,獲取地址后轉發INVITE請求;
    • 步驟7~9:被叫方B生成的180 振鈴響應,返回給主叫方A
    • 步驟10~12:被叫方B生成的200 OK響應,返回給主叫方A
    • 步驟13~17:主叫方A收到被叫方B200 OK響應后,向被叫方B發送一個ACK,會話建立;
    • 步驟18~20:會話結束后,任何參與者(A或B)都可以發送一個BYE請求來終止會話;
    • 步驟21~23:主叫方A發送200 OK響應來確認BYE,會話終止。

    注:以上的整個流程稱之為一個Dialog

    2.2、Pager Model

    在Sip消息中,對于消息體不大于1300字節時,一般采用Pager Model。Sip消息通信中采用MESSAGE方法,MESSAGE方法本身并不建立Dialog,在多數應用中,每條IM消息都是獨立的,頗似分頁消息。

    2.2.1 MESSAGE方法的由來

    RFC3428對Sip協議進行了擴展,在Sip協議中增加了MESSAGE請求方法。采用Pager Model進行通信,傳遞不超過1300字節的數據。MESSAGE方法詳細可參考 “SIP-RFC3428” https://tools.ietf.org/html/rfc3428。

    2.2.2 MESSAGE方法消息體

    當User1想給User2發送IM消息時,只需構造一個MESSAGE,發出去即可。
    對于其消息體
    body可以是任何MIME格式。但必須支持plain/text格式,可以選擇支持message/cpimmessage/sdp格式,可能用message/cpim會好一點,因為已有的IM系統標準是message/cpim格式。

    注:想了解CPIM消息格式的同學可參考:CPIM 消息格式:https://xiaxl.blog.csdn.net/article/details/104718006
    注:想了解SDP消息格式的同學可參考:SDP 消息格式:https://xiaxl.blog.csdn.net/article/details/104723834

    2.2.3 Pager Model請求流程如下

    以User1向User2發送MESSAGE消息為例:

    • 步驟1:User1發送MESSAGE請求到代理服務器
    • 步驟2:代理服務器轉發User1的MESSAGE請求給USER2
    • 步驟3:User2收到User1的消息后,回復200 OK給代理服務器
    • 步驟7~9:代理服務器轉發200 OK回復給User1

    三、SIP消息體格式

    SIP消息體結構Http協議結構相似,均由三部分組成:

    • 請求行(request-line) or 狀態行(status-line)
    • 消息頭(header)
    • 正文(body)

    3.1、請求行

    請求行格式:Method Request-URI SIP-Version CRLF
    請求行舉例:INVITE sip:bob@zte.com SIP/2.0 /r/n

    Method
    以下列出了幾種消息
    Method方法

    Method

    方法說明

    REGISTER

    注冊聯系信息

    INVITE

    發起會話請求

    ACK

    INVITE 請求的響應的確認

    CANCEL

    取消請求

    BYE

    終結會話

    OPTIONS

    查詢服務器能力

    MESSAGE

    RFC3428對Sip協議的擴展,增加了MESSAGE方法。采用Pager Model進行通信,傳遞不超過1300字節的數據。MESSAGE方法詳細可參考 “SIP-RFC3428” https://tools.ietf.org/html/rfc3428

    Request-URI
    指示請求的用戶或者服務的地址信息

    SIP-Version
    請求和響應消息都需要包含SIP版本信息

    3.2、狀態行

    狀態行格式: SIP-Version Status-Code Reason-Phrase CRLF
    狀態行舉例:SIP/2.0 200 OK /r/n

    Status-Code狀態碼:
    狀態代碼由3位數字組成,表示請求是否被理解或被滿足。
    狀態代碼的第一個數字定義了響應的類別,后面兩位沒有具體的分類

    第一個數字有五種可能的取值:

    狀態碼

    含義

    1xx:

    臨時響應、表示請求消息正在被處理

    2xx

    成功響應、表示請求已被成功接收完全理解并接收

    3xx

    重定向響應、表示需采取進一步完成請求

    4xx

    客戶機錯誤、表示請求消息中包含語法錯誤信息或服務器無法完成客戶機的請求

    5xx

    服務器錯誤、表示服務器無法合法完成請求

    6xx

    全局故障 、表示任何服務器都無法完成該請求

    常用的狀態碼舉例:

    狀態碼

    msg

    含義

    100

    Trying

    試呼叫

    180

    Ringing

    振鈴

    181

    Call is Being Forwarded

    呼叫正在前轉

    200

    OK

    成功響應

    302

    Moved Temporarily

    臨時遷移

    400

    Bad Request

    錯誤請求

    401

    Unauthorized

    未授權

    403

    Forbidden

    禁止

    404

    Not Found

    用戶不存在

    408

    Request Timeout

    請求超時

    480

    Temporarily Unavailable

    暫時無人接聽

    486

    Busy Here

    線路忙

    504

    Server Time-out

    服務器超時

    600

    Busy Everywhere

    全忙

    3.3、消息頭

    發送MESSAGE消息給user2

    MESSAGE sip:user2@domain.com SIP/2.0
    Via: SIP/2.0/TCP user1pc.domain.com;branch=z9hG4bK776sgdkse
    Max-Forwards: 70
    From: sip:user1@domain.com;tag=49583
    To: sip:user2@domain.com
    Call-ID: asd88asd77a@1.2.3.4
    CSeq: 1 MESSAGE
    Content-Type: text/plain
    Content-Length: 18
    
    user2, come here.
    

    Header 字段含義說明:

    Header

    含義說明

    舉例

    Call-ID

    由本地設備(Client)生成,全局唯一,每次呼叫這個值唯一不變

    Call-ID: asd88asd77a@1.2.3.4

    From

    表示請求的發起者

    From: sip:user1@domain.com;tag=49583

    To

    表示請求的接受者

    To: sip:user2@domain.com

    Via

    Via頭域是被服務器插入request中,用來檢查路由環的,并且可以使response根據via找到返回的路

    Via: SIP/2.0/TCP user1pc.domain.com;branch=z9hG4bK776sgdkse

    Max-Forwards

    用于表示這個包最多可以傳送多少跳,每經過一跳都會減一檔Max-Forwards==0系統會返回483。默認為70

    Max-Forwards: 70

    Contact

    包含源的URI信息,用來給響應方直接和源建立連接用

    Contact: sip:192.168.100.1:1111

    Content-Type

    指明消息體的類型 (SDP會話描述協議)

    Content-Type: text/plain;Content-Type: application/sdp; Content-Type: application/cpim;

    Content-Length

    指明消息體的字節大小

    Content-Length: 18

    四、SIP消息舉例

    這里舉兩個例子:

    • MESSAGE消息(Pager Mode)
    • REGISTER消息

    4.1、MESSAGE消息(Pager Model)

    User1發送MESSAGE消息給user2為例:

    步驟1:User1發送MESSAGE請求到代理服務器

    MESSAGE sip:user2@domain.com SIP/2.0
    
    Via: SIP/2.0/TCP user1pc.domain.com;branch=z9hG4bK776sgdkse
    Max-Forwards: 70
    From: sip:user1@domain.com;tag=49583
    To: sip:user2@domain.com
    Call-ID: asd88asd77a@1.2.3.4
    CSeq: 1 MESSAGE
    Content-Type: text/plain
    Content-Length: 18
    
    user2, come here.
    

    步驟2:代理服務器轉發User1的MESSAGE請求給USER2

    代理服務器收到步驟1請求,到數據庫中查找User2(注冊過程中生成數據庫),隨后生成步驟2的數據。

    
    MESSAGE sip:user2@domain.com SIP/2.0
    Via: SIP/2.0/TCP proxy.domain.com;branch=z9hG4bK123dsghds
    Via: SIP/2.0/TCP user1pc.domain.com;branch=z9hG4bK776sgdkse;
                                                  received=1.2.3.4
    Max-Forwards: 69
    From: sip:user1@domain.com;tag=49394
    To: sip:user2@domain.com
    Call-ID: asd88asd77a@1.2.3.4
    CSeq: 1 MESSAGE
    Content-Type: text/plain
    Content-Length: 18
    
    user2, come here.
    

    步驟3:User2收到User1的消息后,回復200 OK給代理服務器

    直接回應(200-OK) 沒有Body,也不攜帶Contact頭域

    SIP/2.0 200 OK
    Via: SIP/2.0/TCP proxy.domain.com;branch=z9hG4bK123dsghds;
                                                received=192.0.2.1
    Via: SIP/2.0/TCP user1pc.domain.com;;branch=z9hG4bK776sgdkse;
                                                   received=1.2.3.4
    From: sip:user1@domain.com;tag=49394
    To: sip:user2@domain.com;tag=ab8asdasd9
    Call-ID: asd88asd77a@1.2.3.4
    CSeq: 1 MESSAGE
    Content-Length: 0
    

    步驟4:代理服務器轉發200 OK回復給User1

    代理服務器收到回復后,去掉最頂端的Via,轉發如下消息給User1

    SIP/2.0 200 OK
    
    Via: SIP/2.0/TCP user1pc.domain.com;branch=z9hG4bK776sgdkse;
                                                  received=1.2.3.4
    From: sip:user1@domain.com;;tag=49394
    To: sip:user2@domain.com;tag=ab8asdasd9
    Call-ID: asd88asd77a@1.2.3.4
    CSeq: 1 MESSAGE
    Content-Length: 0
    

    4.2、REGISTER消息

    首先舉例一個非鑒權注冊消息。

    4.2.1 非鑒權注冊消息

    192.168.2.161機器發送注冊消息給192.168.2.89服務器:

    REGISTER sip:192.168.2.89 SIP/2.0
    
    Via: SIP/2.0/UDP 192.168.2.161:10586
    Max-Forwards: 70
    From: <sip:01062237496@192.168.2.89>;tag=ca04c1391af3429491f2c4dfbe5e1b2e;epid=4f2e395931
    To: <sip:01062237496@192.168.2.89>
    Call-ID: da56b0fab5c54398b16c0d9f9c0ffcf2@192.168.2.161
    CSeq: 1 REGISTER
    Contact: <sip:192.168.2.161:10586>;methods="INVITE, MESSAGE, INFO, SUBSCRIBE, OPTIONS, BYE, CANCEL, NOTIFY, ACK, REFER"
    User-Agent: RTC/1.2.4949 (BOL SIP Phone 1005)
    Event: registration
    Allow-Events: presence
    Content-Length: 0
    

    當注冊成功(回送200 OK)時,服務器發送的res消息參考如下:

    SIP/2.0 200 OK
    
    Via: SIP/2.0/UDP 192.168.2.161:10586
    From: <sip:01062237496@192.168.2.89>;tag=ca04c1391af3429491f2c4dfbe5e1b2e;epid=4f2e395931
    To: <sip:01062237496@192.168.2.89>;tag=-00834-14d0805b62bc026d
    Call-ID: da56b0fab5c54398b16c0d9f9c0ffcf2@192.168.2.161
    CSeq: 1 REGISTER
    Allow: INVITE,ACK,OPTIONS,BYE,CANCEL,REGISTER,INFO,UPDATE,PRACK,REFER,SUBSCRIBE,NOTIFY,MESSAGE
    Contact: sip:192.168.2.161:10586
    Content-Length: 0
    Expires: 3600
    

    4.2.2 鑒權注冊消息

    當需要鑒權注冊時

    • 請求端192.168.2.161發送注冊消息給192.168.2.89服務器
    • 服務器對192.168.2.161發送“401 Unauthorized”信息給請求端,提示請求端需要帶上鑒權信息重新注冊
    • 請求端帶上鑒權信息后(帶有“Authorization”頭字段)重新向服務器注冊
    • 服務器驗證鑒權頭的正確性,如果鑒權成功,給請求端發送200 OK消息。若失敗,繼續發送401消息

    SIP 協議,即 會話初始協議(Session Initiation Protocol),是一個應用層的 點對點協議,用于初始、管理和終止網絡中的語音和視頻會話,是 GB28181 的核心之一。

    按照 IETFRFC2543 的定義:

    SIP是一個基于文本的應用層控制協議,獨立于底層傳輸協議 TCP/UDP/SCTP,用于建立、修改和終止IP網上的雙方或多方多媒體會話。SIP協議借鑒了HTTP、SMTP等協議,支持代理、重定向及登記定位用戶等功能,支持用戶移動。通過與RTP/RTCP、SDP、RTSP等協議及DNS配合,SIP支持語音、視頻、數據、E-mail、狀態、IM、聊天、游戲等。SIP協議可在TCP或UDP之上傳送,由于SIP本身具有握手機制,可首選UDP。

    SIP 用于設備管理,其中有兩個要素 - SIP用戶代理 和 SIP網絡服務器。

    SIP 協議雖然屬于應用層協議,然而 SIP 本身并不提供任何服務。但是 SIP 是通信的基礎,在 SIP 這個通信的基礎上可以用來構建不同的服務。SIP 協議在建立和維持多媒體會話中,主要支持如下 5 個功能:

    1)檢查終端用戶的位置。無論被叫方在哪里均能確保呼叫達到被叫方,進行任何描述信息到定位信息的轉換;

    2)檢查用戶參與會話的意愿程度。參與者在呼叫中能夠引入其他用戶加入或者取消其他用戶的連接;

    3)檢查媒體和媒體參數,允許與呼叫有關的組在支持特性上保持一致;

    4)在呼叫與被叫雙方建立會話;

    5)發送和終止會話,修改會話參數,激活服務等會話管理操作;

    GB28181流傳輸幾種模式

    UDP

    服務端監聽UDP端口,通過INVITE信令告知設備端口,設備主動向服務端發起流傳輸

    TCP 被動

    服務端監聽TCP端口,通過INVITE信令告知設備端口,設備向服務端發起流傳輸

    TCP 主動

    設備端告知服務端監聽的TCP端口情況,服務端主動向設備拉流,此種場景較少,且設備所在網絡可以被服務所在網絡訪問(如下級設備與上級GB28181服務在同一個局域網,或者都在公網上能相互訪問)。

    smarteye 流媒體服務軟件: 提供用戶管理及Web可視化頁面管理; 提供設備狀態管理,可實時查看設備是否掉線等信息; 實時流媒體處理,PS(TS)轉ES; 設備狀態監測、云臺控制、錄像檢索、回放; 提供RTSP、RTMP、HTTP-FLV、HLS等多種協議流輸出; 對外提供服務器獲取狀態、信息,控制等HTTP restful API接口。

    支持本地、內網、私有云部署;為企業視頻能力建設,提供了視頻點播轉碼、手機直播推流、云端錄像存儲計劃、RTMP拉流推流服務、RTSP拉流推流服務、設備GB28181接入、Onvif云臺控制等等能力,同時提供性能強大穩定的RTMP/HLS/RTSP/HTTP-FLV分發,支持H5頁面無插件直播,強大的后臺管理,詳細的二次開發接口文檔,服務搭建簡單解壓后一鍵啟動,支持Windows和Linux環境部署

    視頻監控安防平臺-GB28181_2016版本-INVITE請求視頻(UDP、TCP active、 TCP passive)

    在GB28181里面,視頻請求是最重要的環節,GB28181 2016版本最主要的新增內容 估計就是請求視頻的時候支持tcp active和tcp passive, 其實早在GB28181 2014版本的時候都已經定義了tcp傳輸碼流,tcp最大的好處就是對下載的時候能保證不丟包,下面簡要說一下INVITE請求視頻的流程.

    GB/T28181

    國標GB/T28181協議全稱《安全防范視頻監控聯網系統信息傳輸、交換、控制技術要求》,是一個定義視頻聯網傳輸和設備控制標準的白皮書,由公安部科技信息化局提出,該標準規定了城市監控報警聯網系統中信息傳輸、交換、控制的互聯結構、通信協議結構,傳輸、交換、控制的基本要求和安全性要求,以及控制、傳輸流程和協議接口等技術要求。解決了視頻間互聯互通,數據共享,以及設備控制的問題,這個問題從頂層解決了視頻信息各自為戰的問題,打通了視頻聯網的信息孤島。

    優勢:GB28181相對RTMP,支持TCP和UDP模式,信令流負責session交互,數據流負責數據傳輸,適合標準協議規范的平臺級產品對接。

    除了支持常規的數據接入外,還支持針對攝像機的PTZ控制,支持標準28181服務對接。

    劣勢:外部支持GB28181的服務器不多,開源如SRS服務器針對GB28181的支持暫不夠商用級,期待后續版本升級支持更好。

    以海康攝像頭對接28281平臺為例,具體交互流程如下:

    REGISTER sip:34020000002000000001@3402000000 SIP/2.0

    Via: SIP/2.0/UDP 192.168.0.120:15068;rport;branch=z9hG4bK1624213340

    From: <sip:34020000001110000044@3402000000>;tag=2045629479

    To: <sip:34020000001110000044@3402000000>

    Call-ID: 1367363228

    CSeq: 1 REGISTER

    Contact: <sip:34020000001110000044@192.168.0.120:15068>

    Max-Forwards: 70

    User-Agent: IP Camera

    Expires: 3600

    Content-Length: 0

    SIP/2.0 200 OK

    Via: SIP/2.0/UDP 192.168.0.120:15068;rport=15068;received=192.168.0.120;branch=z9hG4bK1624213340

    From: <sip:34020000001110000044@3402000000>;tag=2045629479

    To: <sip:34020000001110000044@3402000000>;tag=993246605

    CSeq: 1 REGISTER

    Call-ID: 1367363228

    User-Agent: LiveGBS v210723

    Contact: <sip:34020000001110000044@192.168.0.120:15068>

    Content-Length: 0

    Date: 2021-08-13T10:14:11.789

    Expires: 3600

    MESSAGE sip:34020000001110000044@3402000000 SIP/2.0

    Via: SIP/2.0/UDP 192.168.0.199:15060;rport;branch=z9hG4bK796247609

    From: <sip:34020000002000000001@3402000000>;tag=180247609

    To: <sip:34020000001110000044@3402000000>

    Call-ID: 807247609

    CSeq: 2 MESSAGE

    Content-Type: Application/MANSCDP+xml

    Max-Forwards: 70

    User-Agent: LiveGBS v210723

    Content-Length: 157

    <?xml version="1.0" encoding="GB2312"?>

    <Query>

    <CmdType>Catalog</CmdType>

    <SN>552247609</SN>

    <DeviceID>34020000001110000044</DeviceID>

    </Query>

    SIP/2.0 200 OK

    Via: SIP/2.0/UDP 192.168.0.199:15060;rport=15060;branch=z9hG4bK796247609

    From: <sip:34020000002000000001@3402000000>;tag=180247609

    To: <sip:34020000001110000044@3402000000>;tag=1518451596

    Call-ID: 807247609

    CSeq: 2 MESSAGE

    User-Agent: IP Camera

    Content-Length: 0

    MESSAGE sip:34020000002000000001@3402000000 SIP/2.0

    Via: SIP/2.0/UDP 192.168.0.120:15068;rport;branch=z9hG4bK138770826

    From: <sip:34020000001110000044@3402000000>;tag=2116434170

    To: <sip:34020000002000000001@3402000000>

    Call-ID: 111408894

    CSeq: 20 MESSAGE

    Content-Type: Application/MANSCDP+xml

    Max-Forwards: 70

    User-Agent: IP Camera

    Content-Length: 590

    <?xml version="1.0" encoding="GB2312"?>

    <Response>

    <CmdType>Catalog</CmdType>

    <SN>552247609</SN>

    <DeviceID>34020000001110000044</DeviceID>

    <SumNum>1</SumNum>

    <DeviceList Num="1">

    <Item>

    <DeviceID>34020000001320000001</DeviceID>

    <Name>Camera 01</Name>

    <Manufacturer>Hikvision</Manufacturer>

    <Model>IP Camera</Model>

    <Owner>Owner</Owner>

    <CivilCode>CivilCode</CivilCode>

    <Address>Address</Address>

    <Parental>0</Parental>

    <ParentID>34020000001110000044</ParentID>

    <SafetyWay>0</SafetyWay>

    <RegisterWay>1</RegisterWay>

    <Secrecy>0</Secrecy>

    <Status>ON</Status>

    </Item>

    </DeviceList>

    </Response>

    SIP/2.0 200 OK

    Via: SIP/2.0/UDP 192.168.0.120:15068;rport=15068;received=192.168.0.120;branch=z9hG4bK138770826

    From: <sip:34020000001110000044@3402000000>;tag=2116434170

    To: <sip:34020000002000000001@3402000000>;tag=514247616

    CSeq: 20 MESSAGE

    Call-ID: 111408894

    User-Agent: LiveGBS v210723

    Content-Length: 0

    MESSAGE sip:34020000002000000001@3402000000 SIP/2.0

    Via: SIP/2.0/UDP 192.168.0.120:15068;rport;branch=z9hG4bK1946244729

    From: <sip:34020000001110000044@3402000000>;tag=1705757152

    To: <sip:34020000002000000001@3402000000>

    Call-ID: 1030239866

    CSeq: 20 MESSAGE

    Content-Type: Application/MANSCDP+xml

    Max-Forwards: 70

    User-Agent: IP Camera

    Content-Length: 177

    <?xml version="1.0" encoding="GB2312"?>

    <Notify>

    <CmdType>Keepalive</CmdType>

    <SN>11</SN>

    <DeviceID>34020000001110000044</DeviceID>

    <Status>OK</Status>

    <Info>

    </Info>

    </Notify>

    SIP/2.0 200 OK

    Via: SIP/2.0/UDP 192.168.0.120:15068;rport=15068;received=192.168.0.120;branch=z9hG4bK1946244729

    From: <sip:34020000001110000044@3402000000>;tag=1705757152

    To: <sip:34020000002000000001@3402000000>;tag=334251619

    CSeq: 20 MESSAGE

    Call-ID: 1030239866

    User-Agent: LiveGBS v210723

    Content-Length: 0

    MESSAGE sip:34020000002000000001@3402000000 SIP/2.0

    Via: SIP/2.0/UDP 192.168.0.120:15068;rport;branch=z9hG4bK1402863583

    From: <sip:34020000001110000044@3402000000>;tag=754663007

    To: <sip:34020000002000000001@3402000000>

    Call-ID: 187348500

    CSeq: 20 MESSAGE

    Content-Type: Application/MANSCDP+xml

    Max-Forwards: 70

    User-Agent: IP Camera

    Content-Length: 177

    <?xml version="1.0" encoding="GB2312"?>

    <Notify>

    <CmdType>Keepalive</CmdType>

    <SN>12</SN>

    <DeviceID>34020000001110000044</DeviceID>

    <Status>OK</Status>

    <Info>

    </Info>

    </Notify>

    SIP/2.0 200 OK

    Via: SIP/2.0/UDP 192.168.0.120:15068;rport=15068;received=192.168.0.120;branch=z9hG4bK1402863583

    From: <sip:34020000001110000044@3402000000>;tag=754663007

    To: <sip:34020000002000000001@3402000000>;tag=959261639

    CSeq: 20 MESSAGE

    Call-ID: 187348500

    User-Agent: LiveGBS v210723

    Content-Length: 0

    RTSP推送

    rtsp推送相關的資料和測試軟件比較少,支持RTSP TCP模式和UDP模式,除非對接第三方平臺,不建議使用RTSP推送。

    具體流程如下:

    1. rtsp推送流程.

    主要分兩部分:第一部分先發送信令;第二部分發送rtp包。

    信令流程:

    1.1 先發送OPTIONS, OPTIONS比較常用,就不做詳細說明了。

    1.2 發送ANNOUNCE, 發送ANNOUNCE主要是把要推送的音視頻信息通過sdp格式傳給服務器。關于sdp信息如何構造,對于h264請參考rfc6184. h265請參考rfc7798. 下面舉兩個例子.

    h264+aac ANNOUNCE:

    ANNOUNCE rtsp://192.168.0.188:554/livexxxx.sdp RTSP/1.0

    Content-Type: application/sdp

    CSeq: 2

    User-Agent: xxxyyy

    Content-Length: 489

    v=0

    o=- 0 0 IN IP4 127.0.0.1

    s=dddookkk

    c=IN IP4 192.168.0.188

    t=0 0

    m=video 0 RTP/AVP 96

    a=rtpmap:96 H264/90000

    a=fmtp:96 packetization-mode=1; sprop-parameter-sets=Z00AKp2oHgCJ+WbgICAoAAADAAgAAAMBlCA=,aO48gA==; profile-level-id=4D002A

    a=control:streamid=0

    m=audio 0 RTP/AVP 97

    a=rtpmap:97 MPEG4-GENERIC/44100/1

    a=fmtp:97 profile-level-id=1;mode=AAC-hbr;sizelength=13;indexlength=3;indexdeltalength=3; config=1208

    a=control:streamid=1

    h265(hevc) + aac ANNOUNCE:

    ANNOUNCE rtsp://192.168.0.174:554/live3.sdp RTSP/1.0

    Content-Type: application/sdp

    CSeq: 2

    User-Agent: mmmmd

    Content-Length: 364

    v=0

    o=- 0 0 IN IP4 127.0.0.1

    s=uvsdewewe

    c=IN IP4 192.168.0.174

    t=0 0

    m=video 0 RTP/AVP 96

    a=rtpmap:96 H265/90000

    a=control:streamid=0

    m=audio 0 RTP/AVP 97

    a=rtpmap:97 MPEG4-GENERIC/44100/1

    a=fmtp:97 profile-level-id=1;mode=AAC-hbr;sizelength=13;indexlength=3;indexdeltalength=3; config=1208

    a=control:streamid=1

    1.3 發送 SETUP,這個和播放基本一樣,請參考播放流程.

    1.4 發送 RECORD,record之后,信令流程完成, 接下來發送rtp包即可。

    關于rtp包的構造,h264 參考rfc6184。 h265參考 rfc7798。

    以Android平臺為例,相關接口設計如下:

    /*+++++++++++++++推送rtsp相關接口+++++++++++++++*/

    /*

    * 設置推送rtsp傳輸方式

    *

    * @param transport_protocol: 1表示UDP傳輸rtp包; 2表示TCP傳輸rtp包. 默認是1, UDP傳輸. 傳其他值SDK報錯。

    *

    * @return {0} if successful

    */

    public native int SetPushRtspTransportProtocol(long handle, int transport_protocol);

    /*

    * 設置推送RTSP的URL

    *

    * @param url: 推送的RTSP url

    *

    * @return {0} if successful

    */

    public native int SetPushRtspURL(long handle, String url);

    /*

    * 啟動推送RTSP流

    *

    * @param reserve: 保留參數,傳0

    *

    * @return {0} if successful

    */

    public native int StartPushRtsp(long handle, int reserve);

    /*

    * 停止推送RTSP流

    *

    * @return {0} if successful

    */

    public native int StopPushRtsp(long handle);

    /*---------------推送rtsp相關接口---------------*/

    RTMP推送

    RTMP采用的是TCP傳輸,采用全自研框架,易于擴展,自適應算法讓延遲更低、采集編碼傳輸效率更高。延遲配合大牛直播SDK(官方)的播放器,依然可以實現毫秒級。

    跨平臺設計如下:

    [本地預覽]Windows平臺支持攝像頭/屏幕/合成數據實時預覽功能,Android/iOS平臺支持本地前后置攝像頭預覽;

    [攝像頭反轉/旋轉]Windows平臺支持攝像頭水平反轉、垂直反轉、0°/90°/180°/270°旋轉;

    [攝像頭采集]除常規YUV格式外,Windows平臺還支持MJPEG格式的攝像頭采集;

    [麥克風/揚聲器采集]Windows平臺音頻輸入端支持麥克風、揚聲器,或麥克風和揚聲器混音輸入;

    [RTMP推流]超低延時的RTMP協議直播推流SDK(Windows/Android/iOS支持RTMP擴展H.265推送);

    [視頻格式]Windows/Android平臺支持H.264/H.265編碼(Android H.265硬編碼),iOS平臺支持H.264編碼;

    [音頻格式]Windows/Android/iOS平臺支持AAC編碼,Windows/Android平臺支持Speex編碼;

    [音頻編碼]Windows/Android平臺支持Speex推送、Speex編碼質量設置;

    [音量調節]Windows/Android平臺采集端支持實時音量調節(其中,Windows平臺混音模式下支持單獨控制麥克風、揚聲器音量);

    [H.264硬編碼]Windows/Android/iOS平臺支持H.264特定機型硬編碼;

    [H.265硬編碼]Android/iOS平臺支持H.265特定機型硬編碼;

    [硬編碼自適應]Android/iOS平臺支持硬編碼自適應,如檢測到硬編碼不支持,自動切換到軟編(iOS如H.265硬編,先切換到H.264硬編碼,如不支持再嘗試H.264軟編);

    [軟硬編碼參數配置]支持gop間隔、幀率、bit-rate設置;

    [軟編碼參數配置]支持軟編碼profile、軟編碼速度、可變碼率設置;

    [多實例推送]支持多實例推送(如同時推送屏幕/攝像頭和外部數據);

    [RTMP擴展H.265]Windows/Android/iOS推送SDK支持RTMP擴展H.265推送,Windows針對攝像頭采集軟編碼,使用H.265可變碼率,帶寬大幅節省,效果直逼傳統H.265編碼攝像頭,Android/iOS平臺支持H.265硬編碼;

    [橫豎屏推流]Android/iOS平臺支持支持橫屏、豎屏推流;

    [多分辨率支持]支持攝像頭或屏幕多種分辨率設置;

    [Windows推屏]Windows平臺支持屏幕裁剪、窗口采集、屏幕/攝像頭數據合成等多種模式推送;

    [移動端推屏]Android平臺支持后臺service推送屏幕(推送屏幕需要5.0+版本);

    [移動端推屏]iOS平臺支持后臺推送屏幕(基于ReplayKit,需要iOS 10.0+版本);

    [事件回調]支持各種狀態實時回調;

    [水印]Windows平臺支持文字水印、png水印、實時遮擋,Android平臺支持文字水印、png水印;

    [RTMP推送模式]支持RTMP推送 live|record模式設置(需服務器支持);

    [鏡像]Android/iOS平臺支持前置攝像頭實時鏡像功能;

    [前后攝像頭實時切換]Android/iOS平臺支持采集過程中,前后攝像頭切換;

    [復雜網絡處理]支持斷網重連等各種網絡環境自動適配;

    [動態碼率]支持根據網絡情況自動調整推流碼率;

    [實時靜音]支持推送過程中,實時靜音/取消靜音;

    [實時快照]支持推流過程中,實時快照;

    [純音頻推流]支持僅采集音頻流并發起推流功能;

    [純視頻推流]支持特殊場景下的純視頻推流功能;

    [降噪]Windows/Android平臺支持環境音、手機干擾等引起的噪音降噪處理、自動增益、VAD檢測;

    [回音消除]Android平臺支持實時傳遞遠端PCM數據,方便回音消除處理;

    [外部編碼前視頻數據對接]支持YUV數據對接;

    [外部編碼前音頻數據對接]支持PCM對接;

    [外部編碼后視頻數據對接]支持外部H.264數據對接;

    [外部編碼后音頻數據對接]外部AAC/PCMA/PCMU/SPEEX數據對接;

    [推送端休眠設置]Windows平臺支持休眠接口(設置成休眠模式后CPU會適當降低);

    [編碼后數據輸出]Android平臺支持輸出編碼后的H264/AAC數據到上層,方便對接第三方平臺(如GB28181)對接;

    [擴展錄像功能]完美支持和錄像SDK組合使用,錄像相關功能,可參見”Windows/Android/iOS錄像SDK“;

    [裁剪模式]Android/iOS平臺支持特定分辨率攝像頭裁剪模式設置;

    [服務器兼容]支持自建服務器(如Nginx、SRS)或CDN。

網站首頁   |    關于我們   |    公司新聞   |    產品方案   |    用戶案例   |    售后服務   |    合作伙伴   |    人才招聘   |   

友情鏈接: 餐飲加盟

地址:北京市海淀區    電話:010-     郵箱:@126.com

備案號:冀ICP備2024067069號-3 北京科技有限公司版權所有