首先下载组件下载地址:http://streamcoders.com/pub/RTP.NET.1.0.981.zip
很容易理解:
RtpNetCsharp是它的简单的例子,例子是命令行的,很简单。
RTP.NET.DLL就是它的类库,把它拷贝到你项目里面然后引入到项目中。
RTP.NET.HELP.CHM是它的帮助文件,很想MSDN的格式,没有任何示例代码仅仅是类及成员的说明。
将RTP.NET.DLL引入项目中,如图:
官网上下载显示的版本号是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包的。确实很简单,如下:
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的使用是比较简单的。
当然它的功能是比较多,我这里只是一个引入,大家可以自己深入研究。
=========================================
目录页连接: