




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、多协议流服务器设计说明书V1.0.0修订记录:时间修改者版本 号备注V1.0.0完成整个系统的模块和类对象层设计目录1 简介 11.1 目的 11.2 软件名称 11.3 软件功能 12 第 0层设计描述 12.1 软件系统上下文定义 12.2 外部接口描述 12.2.1 HLS 13 第一层设计描述 13.1 系统结构 23.1.1 HTTP 23.1.2 HLS VOD 23.1.3 HLS LIVE 23.1.4 DISK IO 23.1.5 INDEX 23.1.6 SOCKET 23.1.7 LOG 33.1.8 THREAD 34 第二层设计描述 34.1 Log 34.1.1 系
2、统结构 34.1.2 接口描述 34.1.3 详细设计 44.2 Event 44.2.1 系统结构 44.2.2 接口描述 54.2.3 详细设计 54.3 EventEx 64.3.1 系统结构 64.3.2 接口描述 64.3.3 详细设计 64.4 Thread 64.4.1 系统结构 64.4.2 接口描述 74.4.3 详细设计 74.5 Server 74.5.1 系统结构 74.5.2 接口描述 74.5.3 详细设计 81 简介1.1 目的本流服务器是基于 Redhat6.2平台开发的,提供了 Apple公司 HLS协议的接口支持,可对接 Apple 公司 现有手持终端设备或
3、其它兼容 HLS 协议的客户端,可以提供标清及高清的视频点播服务。1.2 软件名称多协议流媒体服务器1.3 软件功能在本文档描述的 V1.0 版本中,流服务器可以提供视频点播服务,并可支持点播时的拖动操作。在客 户端与服务器间链接速度出现变化时客户端可根据流服务器的媒资情况实现码流自适应。2 第 0层设计描述2.1 软件系统上下文定义ClientHLSSS2.2 外部接口描述2.2.1 HLS通过HLS协议, SS服务器可向标准 APPLE客户端提供视频流推送服务。但该HLS服务器提供的 HLS索引描述文件仅限于以下参数的子集。EXTM3U标志着 M3U 文件的开始EXT-X-TARGETDU
4、RATION 标志着最大文件分片的播放时长EXT-X-MEDIA-SEQUENCE在该M3U 文件内第一个文件片的序号减一,后面分片文件序号递增1。EXTINF主要用来指出媒体分片的播放时长EXT-X-STREAM-INF指出具体码率下的不同 M3U 的URL ,可携带节目号、码率等参数信息。EXT-X-ENDLIST表明该 M3U 文件的结束,如果是直播文件的话便不包含该参数。3 第一层设计描述3.1 系统结构HTTPHLS VOD HLS LIVEDISK IO INDEXSOCKET LOG THREAD3.1.1 HTTP该服务器的对外协议是 HTTP ,所以一个高效的 HTTP 模块
5、是系统性能提升的重要基础。该模块在解 析请求后,初步探测视频请求协议,然后将请求向下传递。并在获取请求数据后由该协议处理器自动进 行数据传输。3.1.2 HLS VOD此模块负责处理经 HTTP 协议层解析后的 URL 请求,能够生成所有 HLS 视频点播请求的相关文件。3.1.3 HLS LIVE此模块会处理经 HTTP协议层解析后的 URL 请求,能够生成所有 HLS直播请求所需的数据文件。3.1.4 DISK IO提供高效的磁盘 IO服务,此磁盘 IO属于异步处理模式,对 CPU 消耗较低,属于系统基础模块。3.1.5 INDEX此模块会处理其它系统为流文件生成的描述文件,可由该模块得到
6、流的 GOP 等信息,上层模块可调 用该模块获得用于生成文件切片及m3u所需的数据。3.1.6 SOCKET提供了网络相关函数的封装,属于较底层的函数。3.1.7 LOG封装了 log4cplus 的库调用,用处整个系统的日志打印报务,基本上被其它所有模块所调用3.1.8 THREAD此模块封装了系统 pthread 类的部分函数,提供了线程及锁支持。4 第二层设计描述类间的继承关系图如下:4.1 Log4.1.1 系统结构此模块在系统中处于最低层,实现中只是简单封装了开源代码的 log4cplus 。此模块基本被其它的任 何模块所调用,系统中的日志服务都是由该模块来提供的。4.1.2 接口描
7、述1. 任何有打印日志需求的类都要继承于 CLogger 。2. 在默认情况下该类的子类使用的是默认打印设置,该模式的打印输出设备是当前终端。3. 当然该类也可以通过 SetLog 来改变输出选项。4. 该类的子类也可以通过 SetTitle 来改变每行打印的前缀。5. 每个该类的子类都通过一个 LOG_XXXX 的宏来实现打印输出。1)LOG_TRACE用于打印 TRACE 级别的日志。2)LOG_DEBUG用于打印 TRACE 级别的日志。3)LOG_INFO用于打印 TRACE 级别的日志。4)LOG_WARN用于打印 TRACE 级别的日志。5)LOG_ERROR用于打印 TRACE
8、级别的日志。6)LOG_FATAL用于打印 TRACE 级别的日志。4.1.3 详细设计1. CLog1 ) 简介该类实现了对 log4cplus 的封装,在默认情况下该类含有一个全局静态的实例,该实例提 供了前台打印的功能,在 CLogger-SetLog() 中需要提供一个该类的指针做为参数。2 ) 类定义static void SetRootLevel(LogLevel level);该函数可以用来设置全局的打印级别static CLog* GetDefaultLog();该函数可以用来获取一个全局唯一的被默认打印选项设置的类。void Initialize(const string &
9、name, const string &path=, size_t size=100, size_t count=5);该函数用来把一个 CLog 的实例初始化为以 name 名标识的,存于 path 目录的文件, size的大小是该日志文件的最大尺寸,而 count 指定了该日志文件的最多备份文件数。void SetLevel(LogLevel level);该函数可以用来设置本实例的打印级别,关于 LogLevel 的定义可以在 log4cplus 的相 关头文件中查找。Logger GetLog() return m_Logger;该函数会返回 log4cplus 中定义的类实例4.2
10、Event4.2.1 系统结构该模块的类是以接口形式出现,主要是抽象了 epoll 中的事件模型。整个系统都是由 epoll来驱动的, 而每个被 epoll驱动的事件中,如 socket和aio等,都要继承于 CEvent 。用于继承此类的子类中不建议出现 阻塞函数调用,同时所提供的描述符要求必须做非阻塞处理,同时禁止使用sleep等阻塞线程运行的系统 调用。4.2.2 接口描述1. CEvent(CEventEngin*, CEvent*) 构造函数中的第一个参数指定了用于驱动该事件的引擎指针,而第二个参数是该事件处 理结束后要通知的上级事件指针,此参数为空时表明上层事件不想判断该事件的处理
11、过程。2. virtual int GetFd() = 0;每个子类必须重载这个函数用于返回特定的描述符。当用于 CEventEngin 注册事件回调 时,该函数会被调用,以获取要被检查的描述符句柄。3. virtual void OnRead() = 0; 当指定的描述符句柄有可读事件时该函数会被调用,子类可根据需要实现此函数。4. virtual void OnWrite() = 0; 当指定的描述符句柄有可写事件时该函数会被调用,子类可根据需要实现此函数。5. virtual void OnError() = 0; 当指定的描述符句柄有异常事件时该函数会被调用,子类可根据需要实现此函数。
12、此回 调函数无需进行显式的注册监听。6. virtual void OnSubEvent(void *obj=NULL) = 0; 当前实例调用了其它有异步操作的类实例的方法后,当该子异步操作返回时,子事件会 回调该函数。其实 obj 是该子事件类实例的内存地指。7. bool RegisterRD(); 该方法会将当前描述符注册到构造函数指定的驱动引擎中,表示希望监听可读事件。8. bool RegisterWR(); 该方法会将当前描述符注册到构造函数指定的驱动引擎中,表示希望监听可写事件。9. bool RegisterRW(); 该方法会将当前描述符注册到构造函数指定的驱动引擎中,表示
13、希望监听读写事件。10. bool Unregister(); 该方法会删除已经注册到驱动引擎中的所有事件类型。4.2.3 详细设计1. CEventImplement1 ) 简介该类实现了 CEvent 中的大部分纯虚函数,以方便不希望处理所有回调函数的子类。不过 该类的函数中都有一句失败的断言,只要调用了程序便会退出。2. CEventEngin1 ) 简介该类封装了 epoll 中的各系统函数调用,同时自带了线程支持。2 ) 类定义bool Initialize(ssize_t affinity = -1); 该函数是初始化引擎的自身变量,另外会启动一个线程来等待 epoll_wait
14、。bool Add(CEvent *event, int tag); 该函数用于注册新的监听事件 bool Mod(CEvent *event, int tag);该函数用于修改已监听事件的类型bool Del(CEvent *event); 该函数用于删除已注册的监听事件bool Uninitialize(); 该函数会停止线程的运行,并释放请求的资源。4.3 EventEx4.3.1 系统结构该模块的类是以接口形式出现,它继承自 Event ,在原事件处理的基础之上增加了定时器设置功。4.3.2 接口描述1. virtual bool SetTimer(size_t val, size_t
15、 inter) = 0;此函数用于设置定时器, val指定定时器的启动时间, inter 设置该定时器在第一次启动后 每隔多久再产生一次事件。两个时间参数的单位都是微秒,当两个参数都为 0时就要关闭定时 器。4.3.3 详细设计1. CEventImplementEx1 ) 简介该类以 timerf 族函数实现了 CEventEx 中的定时器功能,同时实现了除 GetFd 外CEvent 的 各纯虚函数。4.4 Thread4.4.1 系统结构此模块在系统中处于底层,简单封装了pthread的函数族。4.4.2 接口描述1. CThread(ssize_t setaffinity=-1); 在
16、构造函数中可以指定该线程要绑定到哪个cpu 上。2. bool Run(); 用于启动线程3. bool SetAffinity(ssize_t setaffinity); 线程启动后也可以调用该方法来修改绑定的 cpu4. bool Stop(); 用于停止线程4.4.3 详细设计1. CMutex1 ) 简介 该类简单封装了 pthread_mutex 系统函数。2. CAutoMutex1 ) 简介 该类在构造时会传入一个 CMutex 的类实例指针,该对象只做栈空间使用,可以析构中自 动释放锁。3. CRWLock1 ) 简介 该类简单封装了 pthread_rwlock 系统函数。4
17、.5 Server4.5.1 系统结构这个模块是系统中目前唯一一个控制Socket 监听的任务的地方。4.5.2 接口描述1. bool Run(size_t port, const string &ip=);该函数是启动服务器的命令, port 指明了要监听的端口, ip指明了要监听的地址,当 ip为 空时,服务会监听本地的所有可用 IP 地址。2. static void AddPath(const string &path);用于添加本地数据文件存放的目录。3. static size_t GetFilePath(string &path);path 参数传入时只是一个文件名,在该函数内部会循环查找所有通过 AddPath 添加的目 录,直接找到该文件后返回 path 一个完整的路径名。4.5.3 详细设计1. CHlsEngin1 ) 简介该类是负责所有 hls请求的引擎,在 CH
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 文化与旅游深度融合的战略探索
- 西方民主选举中的挑战试题及答案
- 归纳总结在项目管理中的作用试题及答案
- 新媒体时代新闻传播真实性与公信力提升策略2025研究报告
- 市民社会的作用与影响试题及答案
- 网络接入层的重要性与配置试题及答案
- 公共政策的多元化参与主体分析试题及答案
- 西方政治制度与未来工作的挑战试题及答案
- 深入学习2025年软考网络工程师试题答案
- 社会责任在公共政策中的体现试题及答案
- 苏教版 六年级 数学 下册 第七单元 总复习 数与代数《第13课时 正比例和反比例(1)》课件
- 护理乳腺癌疑难病例讨论
- 建筑工程施工单位联合体协议书范本
- 2025年中国石油北京石油管理干部学院招聘10人高频重点模拟试卷提升(共500题附带答案详解)
- DB52-T 1633-2021 山地风电场风机微观选址技术规程
- 2025年江苏省事业单位和国有企业招聘笔试参考题库含答案解析
- 校园文化建设与心理健康教育同行
- 第11章 所有者权益课件
- 中华民族共同体概论教案第十五讲-新时代与中华民族共同体建设
- 债务重组合同范例
- 环状胰腺病因介绍
评论
0/150
提交评论