流媒體協議之RTSP服務端的實現20180629


RtspServer是參考了live555和jrtplib實現的,但代碼全部是重新書寫的,所以不依賴於任何第三方庫即可編譯和運行,

目前僅支持h264和G711格式,這是rtp打包時決定的,后續將不斷迭代優化,加入對其他格式的支持。

 

RtspServer的功能是接收輸入的流,然后推流到客戶端,

用戶參考main.cpp,就可以把RtspServer當作庫來使用。

 

RtspServer的流程是,會開啟兩個線程,一個線程監聽客戶端的鏈接,一旦有鏈接則保存到鏈表里。同時,有另外一個

線程不斷的去輪詢這個鏈表,然后處理鏈表中的每一個連接對應的rtsp命令,處理命令時使用了正則表達式,簡化了字符串解析流程。

另外,當SETUP時,會建立rtp會話的鏈接,然后當PLAY時,會將接收到的音視頻流打包成RTP包,然后通過rtp鏈接推送到客戶端

 

全部的源碼可訪問:https://github.com/fengweiyu/RTSP/tree/master/RtspServer  ,目前的版本是V1.0.1,

下載完源碼后,先查看ReadMe.txt,然后執行make,再運行程序即可。

 

關於源碼的介紹,主要用的就5個類,

類的說明:

RtspServer:對客戶端請求的RTSP命令的回應處理,以及推流操作。

TcpSocket: RtspServer的父類,主要是用於與客戶端命令通信的TCP鏈路的相關操作

RtpSession:對RTP會話的操作,內部主要是發送RTP包

UdpSocket::主要是RTP會話會使用UDP的方式,這里提供UDP鏈路的相關操作

RtpPacket:對接收到的音視頻數據進行RTP打包

類的關系是:

RtspServer繼承TcpSocket,RtspServer會調用RtpPacket進行打包,打包后再通過RtpSessio向客戶端推流。

 

關於RTSP協議的介紹可以參考我的博客:http://www.cnblogs.com/yuweifeng/p/7567846.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM