【RTP.NET入门系列 前言】微软推荐的最好用的RTP组件,免费哦。
streamCoders出品的。微软的MSDN的第三方插件库里面有。(最近用C#开发RTP视频方面东西,第一次接触RTP,.net里面库好少了啊,开始时在codeproject.com上找,是找了几个,发现不行,后来还是在微乳的MSDN上找了到了这个)
这个RTP.NET库是它的MediaSuite.NET库里面的一个组件,MediaSuite.NET是要收费的,看他名字也知道这个库是处理多媒体的(这个里面有整套视频流发送接受),有兴趣可以上它的官方主页上看看相关介绍。这里我主要介绍RTP.NET.首先这个组件是免费的,包括最基本的RTP收发功能。简单好用。
下载地址:http://streamcoders.com/pub/RTP.NET.1.0.981.zip
官方对它的介绍如下(本人自己翻译的,英语不行请多见谅):http://streamcoders.com/products/rtpnet.html
RTP.NET 完全遵循RFC 3550(全称应该是:RTP-RFC 3550/3551(javaeye一片博客有具体的说明)),在.NET框架中拥有非常健全的RTP与RTCP使用方式。
提供详细的说明文档包括类、方法(函数)、事件、数据类型的具体说明。同时包括简单的C#示例代码和C++的调用方式(不知道是否这么翻译,因为我不怎么用C++所以下面文章里不会介绍这个)
提供最简单方式来实现:配置及开始一个会话,通过会话伙伴类实现添加接收端和发送端。完全自动地分析和处理底层的传输工作。
背景知识(我自己翻译别人的另外一RTP组件,如何通过RTP接口类,在.Net中创建你自己的广播系统(原创翻译,有源码) )
RTP是怎么工作的?
发送端负责将采集音视频数据并转化成RTP数据包(注:通过接收端反馈的信息,发送端也需要参与到数据校正与流量控制)。数据传送前,数据侦会被装入到RTP包中。如果数据帧很大话,它们会被分割装入到几个RTP包中,同样如果数据帧很小,它们会被一起装入同一RTP包中。根据纠错规则,信道编码器(channel coder)产生纠错的包或者是可重发的包。当RTP数据包被发送时,那些用于纠错或者可重发包将最后被释放。发送端不需要立刻丢弃才发送数据包,因为这个数据包要和它相关联的数据包一起用于数据纠错或者其他处理。发送端必须缓冲那些相互关联的数据包,直到它们全部发送出去。这些跟使用的编码器与纠错规则有关。由于同步的需求,发送端负责生成它生成的数据的状态报告用于同步功能。发送端从其他客户端上获取接收质量的反馈,来调节它数据的传送。
接收端负责从网络上接收RTP包,校正丢失的包,恢复时间,解码媒体,将媒体数据展示给用户。它发送接收质量反馈给发送端,让发送端调节数据传输。接收端还需要管理一个数据库,这个数据库存储会话中其他接收端的信息。一个显示接收进度的进度框^^。当然可以根据需要添加相应的功能。
虽然RTP.NET只提供RTP的封装,个人觉得已经够用。国内对于这个库的资源几乎没有。所以我决定写一个系列文章入门文章,介绍的RTP.NET的基本使用方式。
有问题欢迎询问指正。
文章目录: