SharpStreaming项目开发纪实:构建基本的服务器及客户端应用(五)——总体结构设计(客户端)

来源:互联网 发布:淘宝扣48分有什么影响 编辑:程序博客网 时间:2024/05/18 03:08

    本篇文章介绍客户端的总体结构设计。相对于服务器而言,客户端的总体结构相对简单一点,当然对于播放模块可能是个例外,因为目前对这一块还存在很多的未知部分。

    客户端的主要工作就是连接上服务器,然后向服务器发送各种请求并等待服务器的响应,再之后就是不断地接收来自服务器的数据流并在适当时候向服务器反馈接收状况。

    下面是客户端的思维导图:

    与服务器一样,客户端也由两个项目(SharpStreamingClient.UI和SharpStreamingClient.Core)组成一个解决方案SharpStreamingClient。前者负责处理与用户的交互等工作,后者处理客户端的后台工作(如发出请求、接收数据流、写数据到文件等)。

    客户端的核心部分同样划分为几大块:RtspClient类、MediaSession类、公共或工具类、事件处理类、RTP/RTCP处理类。其中RtspClient类是核心类,负责连接服务器、向服务器发送各种请求指令(如PLAY、PAUSE、TEARDOWN等)并等待服务器的响应,它是与UI交互的窗口。MediaSession类主要用来解析SDP协议内容并提取诸如正常播放时长、RTP PayloadType等信息,并以此构建用于接收数据的RtpSource。而RtpSource在接收到数据后经过解包等工作将原始文件数据块交由FileSink处理,FileSink实现将文件数据块写入指定文件。

    此外,随着开发的深入,客户端亦可能存在一些目前未知的类,这需要后续加入。

    客户端的项目工程构建亦可以根据上面的思维导图来完成基本构建。