论文部分内容阅读
最近几年,由于各种用户终端和无线网络的普及,内容分享服务已经成为了一个最流行的服务之一。内容分享服务意味着同样的内容会在同一时间或者不同时间被许多终端设备分享。而流媒体已经是成为内容分享服务中非常显著的趋势。基于流的内容分享系统会将多媒体内容从流媒体服务器通过网络媒介传输到终端用户,客户端接收到流媒体数据后,通过解码器解码后显示。但由于无线网络的不稳定、易受干扰等特性,客户端播放质量会受到很大的影响,因此需要一个调整机制来根据网络的状况进行调整,以保证客户端良好的收看体验。论文中提出了一种基于流媒体服务的自适应调整方案,根据客户端反馈回来的网络状况参数,如带宽、丢包率等,进行动态调整服务端的发送速率或者视频流的码率,以适应当前网络变化,从而保证了客户端的播放流畅性。最后实现了一个基于开源Dss(达尔文流媒体服务器)框架的流媒体系统,包括流媒体服务器和客户端。流媒体服务器主要负责响应客户端的请求、媒体流数据的传输和根据网络状况的自适应调整功能。服务端分别使用了RTSP实时流传输协议、RTP实时传输协议和RTCP实时传输控制协议来实现。RTSP协议主要实现了客户端与流媒体服务器之间的RTSP会话交互,使得客户端能够远程控制流媒体服务器端的数据传输等工作,满足客户端播放、暂停和回放等操作的实时交互。RTP协议主要负责服务端向客户端的实时流数据的传输。RTCP是一个控制协议,它和RTP一起提供流量控制和拥塞控制服务,主要负责管理传输质量,为正确传输数据包提供可靠的传输机制。客户端主要负责媒体流数据的接收、网络状况的反馈和流数据的解码显示。客户端使用了开源JRTPLIB库实现了媒体流数据接收和网络状况的反馈。开源JRTPLIB是一个基于C++语言实现的面向对象的RTP库,其实现了RTP实时数据传输协议和RTCP协议控制协议。流数据的解码和显示使用FFMPEG开源库实现。FFMPEG是一个可以音视频编解码的开源框架,并且具有很好的移植性和高质量的编解码程序代码库。因此客户端采用将FFMPEG移植到Android系统上,实现对媒体流视频数据的解码显示。最后,通过实验测试,自适应调整机制能够很好的适应网络状况的变化,保证了客户端能够流畅的接收流数据和解码显示。