工作。
2. 服务器的主要流程
服务器端的具体流程为:服务器首先根据流的名称和准备传输的文件的类型等信息创建一个会话,并且把这个会话加入到列表中,然后进入监听状态,等待客户端的请求。
当服务器收到客户端的请求时,对请求进行处理,向客户端发送请求响应信息,并且进行传输数据的准备工作。对客户端发出的播放(PLAY)请求中一些字段的值分析完成后,服务器开始向客户端发送数据。
服务器根据得到的客户端的地址,用创建的接收器开始取得数据,这个接收器以字节流模式打开要传输的文件,根据这种文件的特定格式(RTP格式或者Annex B格式)从中读取数据,对头部、数据类型、长度等字段进行计算和解析,然后构建符合RTP标准的数据包,接着通过RTP接口发送到目的地址。这个过程不断继续,直到文件中的数据发送完毕。
数据发送完毕以后,服务器向客户端发送RTCP的“BYE”消息,然后客户端向服务器发送拆除连接的请求,服务器响应这个请求后便结束此次会话。
3. 服务器的实现
根据本文实际传输的H.264的视频文件的具体情况
RTCP用来配合RTP工作,它向发送端提供接收端关于数据包的统计信息,发送端可以利用这些信息进行拥塞控制和流量控制。RTSP协议可以使接收端和发送端进行数据传输过程中的交互,提供诸如播放、暂停、快进、快退等操作。
服务器中与H.264传输有关的几个主要的类为H264ServerMediaSession、(---------->)、H264VideoRTPSink和(-------->)H264VideoStreamFramer
本文设计的传输H.264文件的过程如下:
* 服务器打开要传输的H.264视频文件,把它作为一个数据源;
* H264StreamFramer取出数据源中的NAL单元,作为一个数据帧,递交给H264VideoRTPSink;
* H264VideoRTPSink给NAL单元,加上RTP包头,通过网络接口发送到接收端,然后调度发送下一个RTP包的任务;
* 重复前两步,直到所有的数据发送完毕。
基于H.264的流媒体服务器的设计和实现
最新推荐文章于 2024-04-04 15:59:06 发布