论文部分内容阅读
随着互联网的飞速发展,网络电台、视频点播、IPTV等流媒体应用的需求品质在不断提高。从音/视频压缩编码、流媒体服务器的传输服务性能到客户端的播放质量,使得流媒体技术的涉及面非常宽广。流媒体中的主要关键技术有:面向流化传输的可扩展视频编码,流媒体服务器的体系结构,端到端的流媒体传输技术。本文针对基于通用计算机的流媒体服务器体系结构,研究了流媒体传输服务的两种模式:顺序流式传输和实时流式传输。以OGG Vorbis/Theora音/视频编码为实例,特别地研究了对两种传输模式中媒体流数据包的组织过程。顺序流式传输是基于HTTP/TCP协议栈的传统C/S网络编程架构的一种具体应用,它的媒体流数据包在传输中以固定长度的文件格式封装形式呈现。可以这样认为:顺序流式传输是播放器对本地文件读取、解码播放的一种扩展,只是多了一个服务器传输的中间环节,且一个源文件可被多个异地播放器所同时利用。OGG page的固定长度包是本文给出顺序流式传输服务器Icecast实例传输服务的对象。实时流式传输模式是流媒体应用需求的进一步发展而出现的,它要求媒体数据包以较小的延迟到达客户端,能充分利用网络带宽提高客户端并发度,能自适应网络状态平滑调整数据包的发送率。为达到这些目的,实时流式传输采用了交互控制信息与数据承载传输相分离的网络编程架构。在媒体流传输过程中,首先,数据源对媒体数据的切割、形成RTP封装包是实现实时流式传输的起点。本文第三章给出了数据源对OGG/Theoras视频媒体数据的切割、形成RTP封装包的过程。根据Theora开源视频压缩编码的特性,提出出了OGG theora视频流的一个固定长度RTP包封装算法,并实现了基于组播传输的定长RTP封装包的实时流式传输原型,进行了数据输出测试,检验了算法的正确性。根据高性能实时流式服务器的需求,本文第四章分析了基于OMS开放流媒体平台的服务器fenice的设计与实现。Fenice流服务器分别采用了RTSP/SDP/TCP协议栈作为控制协议、RTP/RTCP/UDP协议栈作为数据承载协议。服务器从数据源读取已封装完成的RTP数据包,以组播方式发送给众多客户端,利用用从客户端返回的接收报告调整发送速率。