我們在上一期已經可以獲取視頻或者攝像頭數據,並可以獲取幀數據,那么我們這一期就研究下RTP,並發送數據到目標服務器。
- RTP協議簡介 這位朋友講的很好:http://blog.csdn.net/bripengandre/article/details/2238818
- RTP.NET.dll
- 核心代碼講解
實時傳輸協議RTP(Real-time Transport Protocol)是一個網絡傳輸協議,在我的實現中大致原理如下:
其實RTP就是在UDP傳輸協議上又簡單封裝了一層,更多的關於RTP大家可以百度、谷歌
既然要用.NET實現,那么就得找個相關的類庫,還好有現成的,大家可以去我的百度雲盤下載:RTP.NET.DLL
里面有許多已經實現好的類和接口了可以直接使用,省去了自己去實現RTP了
RTP庫中主要有三個類:
Session = new RTPSession(); Sender = new RTPSender(); Receiver = new RTPReceiver();
第一個Session是會話,第二個是一個發送者,第三個是接受者
public RtpFramer(String RTPipAddress, int RTPport, String RTCPipAddress, int RTCPport, String forwardIP, int forwardPort) { Session = new RTPSession(); Sender = new RTPSender(); Receiver = new RTPReceiver(); var senderEp = new IPEndPoint(IPAddress.Parse(forwardIP), forwardPort); senderParticipant = new RTPParticipant(senderEp); Sender.AddParticipant(senderParticipant); Session.AddSender(Sender); var rtpEp = new IPEndPoint(IPAddress.Parse(RTPipAddress), RTPport); var rtcpEp = new IPEndPoint(IPAddress.Parse(RTCPipAddress), RTCPport); participant = new RTPParticipant(rtpEp, rtcpEp); Session.NewRTPPacket = NewRTPPacket; Session.NewRTCPPacket = NewRTCPPacket; Receiver.AddParticipant(participant); Session.AddReceiver(Receiver); }
代碼下載請前往百度雲:RTPClient