为了尽可能接收到所有网络电台,系统设计兼容两种传输协议。针对系统的特殊性,适用于该方案的系统设计框图如图3所示。
系统通过解析用户输入的网络电台网址,分辨出所访问电台支持的流媒体传输协议,针对两类不同协议作出实时响应,接收数据并播放。
2.3.1 实时流式传输RTSP协议
实时流协议RTSP,用于建立和控制时间同步的连续媒体流,以及控制具有实时特征的数据发送。RTSP提供控制机制,能够处理更高层的问题(例如会话建立和注册),在体系结构上工作在RTP、TCP、UDP等协议的上层。正因为如此,RTSP可以很好地利用人们对现有工业标准的改善和提高,而不需要额外的优化工作。
本系统采用开源软件LIVE库来实现RTP/RTCP协议,包括RTP/RTCP会话的建立、数据的接收。其主要任务是解析RTSP协议,通过DESCRIBE、SETUP、PLAY请求来获得音频数据格式,并将RTP包解包获得MP3帧数据,写入数据接收缓冲区。
LIVE库仅包含4个基本的类:BasicUsageEnvironment、UsageEnvironment、groupsock以及livemedia。BasicUsageEnvironment和UsageEnvironment负责任务的调度和环境的配置;groupsock负责socks套接字的创建以及相应信息(询问信息和数据信息)的发送接收;Livemedia是整个工程的核心,负责rtsp、session(subsession)和rtcpinstance的运转。
在数据传输过程中,LIVE库根据RTSP协议来建立会话描述。RTSP会话的建立分为以下几个步骤:
① 建立使用环境对象,创建客户端。
② 由RTSPClient对象向服务器发送OPTION消息并接收回应。