【RTP.NET入门系列 一】接收第一个RTP包。

首先下载组件下载地址:http://streamcoders.com/pub/RTP.NET.1.0.981.zip

文件目录如下:

很容易理解:

RtpNetCsharp是它的简单的例子,例子是命令行的,很简单。

RTP.NET.DLL就是它的类库,把它拷贝到你项目里面然后引入到项目中。

RTP.NET.HELP.CHM是它的帮助文件,很想MSDN的格式,没有任何示例代码仅仅是类及成员的说明。

将RTP.NET.DLL引入项目中,如图:

image
官网上下载显示的版本号是1.0.981。加载到.netl里面显示版本号为:1.5.981.29483。不要奇怪刚才说了,这个组件是MediaSuite.NET里面一个组件,而1.5.981.29483这个版本号实际上是MediaSuite.NET这个版本号。

说说它的使用,其实网站上有相关代码提示,我也是说一下。
RTP.Net核心几个类:

RTPSession 管理RTP会话的

RTPReceiver 负责接收RTP包,通过一个类似事件的机制。

RTPSender 负责发送RTP包

RTPParticipant 设置你要通信的RTP伙伴

 

下面我们就来接受我们第一个RTP包。

它工作的流程是:

首先创建一个RTP会话,

然后指定一个RTP伙伴,即你的接收端,创建一个RTP接收类,将刚才RTP伙伴加入接收类中

再者创建接受函数并将RTP会话的接受包代理指向此函数

最后把接收者类加入到RTP会话中就行了。RTP.NET就会启动它后台线程自动接受RTP包了。

通过类似事件的方式获取RTP包的。确实很简单,如下:

session.NewRTPPacket = NewRTPPacket;
bool NewRTPPacket(RTPPacket packet, byte[] rawBuffer)
{
       Console.WriteLine(packet.ToString());
       
return true;
}

所有接收代码如下:

	RTPSession session;
        RTPReceiver receiver;
        RTPParticipant participant;

        public Form1()
        {
            InitializeComponent(); 
        }

        private void button1_Click(object sender, EventArgs e)
        {
            session = new RTPSession();
            receiver = new RTPReceiver();
IPEndPoint rtpEp= new IPEndPoint(IPAddress.Parse("192.168.0.203"), 10000); IPEndPoint rtcpEp = new IPEndPoint(IPAddress.Parse("192.168.0.203"), 10001); participant = new RTPParticipant(rtpEp,null,null,null);
session.NewRTPPacket = NewRTPPacket; session.NewRTCPPacket = NewRTCPPacket; receiver.AddParticipant(participant); session.AddReceiver(receiver); }
bool NewRTPPacket(RTPPacket packet, byte[] rawBuffer) { Console.WriteLine(packet.ToString()); return true; } void NewRTCPPacket(RTCPCompoundPacket packet) { Console.WriteLine(packet.ToString()); }

其中我要说明的是participant = new RTPParticipant(rtpEp,null,null,null);
这个函数的具体有四个参数具体声明如下:

public RTPParticipant(IPEndPoint rtpLocalEndpoint, IPEndPoint rtpRemoteEndpoint, IPEndPoint rtcpLocalEndpoint, IPEndPoint rtcpRemoteEndpoint);

从声明中可以看到分为四个IP节点分别为本地rtp、远程rtp、本地rtcp、远程rtcp

从上面的代码可以看出,这个RTP.NET的使用是比较简单的。

当然它的功能是比较多,我这里只是一个引入,大家可以自己深入研究。

=========================================
目录页连接:【RTP.NET入门系列 前言】微软推荐的最好用的RTP组件,免费哦。
原文地址:https://www.cnblogs.com/edzjx/p/1702922.html