山高志远 行定乾坤

高智商开发园地

对p2p流媒体技术的一些理解

好久没有上来了! 似乎都有些忘记这里了。 今天谈谈对p2p流媒体方面的一点点的见解

p2p流媒体已经走入了我们的世界,很多网友们都在网络上看电视,我也不例外。

国内主流的p2p流媒体软件 好像有 pplive  cciptv  还有什么等等想不起来了。我用的最多的就是pplive.
(想起来了 什么qq阿! 什么mop阿等等都有了!)

先对新手来介绍介绍什么是流媒体吧!


目前,在网络上传输音/视频等多媒体信息有两种解决方案,即http或ftp下载以及流式传输。

http或ftp下载使用标准的http和ftp协议,但由于多媒体信息个头巨大,下载一个多媒体文件一般需要几分钟或几小时的时间,这就造成为了看一个并不知道内容的视频,首先需要耗费可能比整个视频都要长的时间来完成下载。这些被下载的文件还必须在下载前制作完成,放在网络服务器上,这样造成的直接后果就是:网络带宽不断提高,人们下载的等待时间越来越少,但最终还是不能观看网上现场直播。

流式传输时,声音、影像或动画等多媒体信息由流媒体服务器向用户计算机连续、实时传送,它首先在使用者端的电脑上创建一个缓冲区,于播放前预先下载一段资料作为缓冲,用户不必等到整个文件全部下载完毕,而只需经过几秒或十数秒的启动延时即可进行观看。当多媒体信息在客户机上播放时,文件的剩余部分将在后台从服务器内继续下载。如果网络连接速度小于播放的多媒体信息需要的速度时,播放程序就会取用先前建立的一小段缓冲区内的资料,避免播放的中断,使得播放品质得以维持。

流式传输除了能够发送已经制作完成的文件外,还可以通过采集服务器实时采集现场音视频,推送到流媒体服务器端,实时提供给用户。因此,流媒体除了能够更好的承担如下载一样的多媒体点播服务外,更能够应用在现场直播、电视转播、突发事件报道等多种对实时性传输要求较高的领域。

流媒体的传输协议

大家在观看网上电影或者电视时,一般都会注意到这些文件的连接都不是用http或者ftp开头,而是一些rtsp或者mms开头的东西,为什么是这样呢?实际上,这些和http和ftp一样,都是数据在网络上传输的协议,只是它们是专门用来传输流式媒体的协议而已。下面,让我们来看一下现在使用的主要的流媒体协议:

1. RTSP(Real Time Streaming Protocol),实时流媒体协议,它是由RealNetworks和Netscape共同提出的,现在用于RealNetworks的Real Media产品中;

2. PNM(Progressive Networks Audio),这也是Real专用的实时传输协议,它一般采用UDP协议,并占用7070端口,但当你的服务器在防火墙内且7070端口被挡,且你的服务器把SmartingNetwork设为真时,则采用http协议,并占用默认的80端口;

3. MMS(Microsoft Media Server protocol),这是微软的流媒体服务器协议,MMS 是连接 Windows Media 单播服务的默认方法。

介绍了主要的三个,可能您还会问,Apple的QuickTime使用哪种协议呢?在多数情况下,QuickTime使用http协议,但实际上它也由标准的流媒体传输协议,这就是标准RTSP协议,而Real公司使用的RTSP是自己经过开发的。

在流媒体传输中,标准的协议就是RTP(Real time Transport Protocol,实时传输协议)、RTCP(Real-time Transport Control Protocol,实时传输控制协议)、RTSP(Real Time Streaming Protocol,实时流媒体协议)和RSVP(Resource Reserve Protocol, 资源预订协议),厂商们的产品都是在这些协议的基础上进行研究与开发。

 

点播与广播

在架设流媒体服务器之前,我们一定要了解一些点播与广播的知识。

点播是客户端与服务器之间的主动的连接,在点播连接中,用户通过选择内容项目来初始化客户端连接,一个客户端从服务器接收一个媒体流(这个连接是唯一的,其它用户不能占用),并且能够对媒体进行开始、停止、后退、快进或暂停等操作,客户端拥有流的控制权,就像在看影碟一样。这种方式由于每个客户端各自连接服务器,服务器需要给每个用户建立连接,对服务器资源和网络带宽的需求都比较大。

广播指的是用户被动接收流。在广播过程中,客户端接收流,但不能控制流,用户不能暂停、快进或后退该流,广播使用的数据发送手段有单播与广播。使用单播发送时,服务器需要将数据包复制多个拷贝,以多个点对点的方式分别发送到需要它的那些用户,而使用广播方式发送,数据包的单独一个拷贝将发送给网络上的所有用户,而不管用户是否需要,上述两种传输方式会非常浪费网络带宽和服务器资源,因此产生了组播(多播)技术。

组播(多播)吸收了上述两种发送方式的长处,克服了上述两种发送方式的弱点,将数据包的单独一个拷贝发送给需要的那些客户,组播不会复制数据包的多个拷贝传输到网络上,也不会将数据包发送给不需要它的那些客户,保证了网络上多媒体应用占用网络的最小带宽。但组播不仅需要服务器端支持,更需要有多播路由器乃至整个网络结构的支持。

单播与组播(多播)

在上面我们已经了解了一些单播和组播的概念,这也是现在流媒体方面讨论的焦点之一。以我的认识,点播与广播是一组概念,它们和客户端媒体交互的手段;单播和组播又是另外一组概念,它们是流媒体数据在服务器端和网络上的传输方式。

单播发送时,需要在客户端与媒体服务器之间需要建立一个单独的数据通道,从一台服务器送出的每个数据包只能传送给一个客户机,每个用户必须分别对媒体服务器发送单独的查询,而服务器必须向每个用户发送所申请的数据包拷贝。这种巨大冗余会造成服务器沉重和网络带宽的沉重负担,响应需要很长时间,甚至出现不能服务的情况。单播可以用在点播和广播上。

组播发送时,服务器将一组客户请求的流媒体数据发送到支持组播技术的路由器上,然后由路由器一次将数据包根据路由表复制到多个通道上,再向用户发送。这时候,媒体服务器只需要发送一个信息包,所有发出请求的客户端都共享同一信息包,并且信息可以发送到任意地址的客户机,没有请求的客户机不会收到信息包,网络上传输的信息包的总量没有广播那么多,大大提高了服务器和网络线路的利用率。不过组播也有自己的特点,首先是必须要开始支持组播技术的路由器,另外就是一般只能用作广播,因为用作点播会存在用户控制问题。

 

 那么p2p流媒体技术是什么呢 ! 大体的意思就通过p2p的协议来进行数据传输的流媒体技术。

我今天要谈的就是,p2p流媒体技术是如何进行时时传送的。这个技术其实很简单三两句话就可以说完,但是,我希望如果您要是读完希望能给我一些建议或对您的思路有些启发。

比如说我们在收看一个p2p流媒体软件上正在播放的电视节目,这个节目信号是由服务器发出的,服务器的信号来自于电视卡,电视卡的信号来自电视台,那么这里就有个问题了,如何进行数据的时时接受与时时发送呢?怎么我们就可以在网络上看到基本同步了的电视信号呢?
BT我们知道,一个数据传送的,通过BT这些软件可以把服务器上不“动”的数据文件下载回来。原理我就不多说了!
流媒体的数据是动态的阿!怎么传?
这样传阿!大体意思就是,需要客户端先进行缓冲,把一部分数据读入,产生缓冲区,这个缓冲区是有一定长度的阿! 服务器持续发送数据,通过p2p的方式,客户端把数据不断的接受到缓冲区,当缓冲区满了,下个一个数据又进来了,使得缓冲区内第一块数据被顶出了缓冲区,然后开始被视频程序解码,然后开始播放,第一个没有播放完的时候,可能第二个数据就被顶入到视频播放程序的缓冲区内缓冲了。就这样我们在客户端上看到了和现场基本同步了的视频了。

预约:下次我们再谈论下p2p如何实现看的人越多速度就越快的问题。

posted on 2006-05-12 10:02 徐立 阅读(999) 评论(1)  编辑 收藏 引用

Feedback

# re: 对p2p流媒体技术的一些理解 2006-05-29 09:09 vince

徐二教授的讲座...  回复  更多评论   


只有注册用户登录后才能发表评论。

My Links

Blog Stats

常用链接

留言簿(1)

随笔档案(3)

文章档案(1)

相册

搜索

最新评论

阅读排行榜

评论排行榜