降低流媒体码流发送抖动的方法及流媒体服务器的制作方法

文档序号:7762733阅读:329来源:国知局
专利名称:降低流媒体码流发送抖动的方法及流媒体服务器的制作方法
技术领域
本发明涉及通信领域,尤其涉及一种降低流媒体码流发送抖动的方法及流媒体服 务器。
背景技术
IPTVdnternet Protocol Television,网络电视)是指基于IP网络的电视广播 服务。IPTV可以提供各种视频服务,包括直播、点播、轮播、时移、回看等,其中,点播、时移、 回看业务作为IPTV的基本业务,为用户看电视提供了更加自由的观看方式,用户可以随 时、有选择的观看自己喜爱的电视节目,极大提高了用户的体验效果,解放了传统电视对用 户的束缚。点播、时移以及回看此三种基本业务均是由用户发起视频播放请求,由流媒体服 务器采用点到点的单播方式,将媒体数据发送到用户的机顶盒上,之后,由机顶盒解码后播 放。在传输过程中,媒体数据的延迟因素(DelayFacto^DF)对最终视频质量有着重大的影 响,当DF值超过网络设备和解码器缓冲所能容纳的媒体数据量时,视频将出现卡片或马赛 克等现象,降低了用户的体验效果。在实际组网中,一台流媒体服务器将同时服务于大量的用户,因此当服务器负荷 较大时,发送码流的时刻出现较大波动,导致码流发送时刻不准确,DF值变大,从而造成视 频播放质量下降。

发明内容
本发明的主要目的在于提供一种降低流媒体码流发送抖动的方法及流媒体服务 器,旨在降低流媒体码流发送抖动,提高视频质量。本发明提出一种降低流媒体码流发送抖动的方法,包括从外部媒体存储设备中读取视频的媒体数据;对所述媒体数据进行分析运算处理打包成RTP格式的媒体数据包,将同一时间发 送的多个媒体数据包放入预先从发送盒子空闲管理队列内申请的发送盒子中,并设置发送 盒子的预定发送时间戳;将所述发送盒子加入发送队列,并根据所述预定时间戳将所述发送盒子中的媒体 数据包发送至传输网络;回收所述发送盒子至所述发送盒子空闲管理队列。优选地,所述发送盒子包括数据包缓冲区和发送句柄。优选地,所述对媒体数据进行分析处理打包成RTP格式的媒体数据包,将同一时 间发送的多个媒体数据包放入预先从发送盒子空闲管理队列内申请的发送盒子中,并设置 发送盒子的预定发送时间戳的步骤包括从所述发送盒子空闲管理队列中申请一个发送盒子;根据所述媒体数据携带的时间戳搜索在同一时间需发送的媒体数据;
将所述在同一时间需发送的媒体数据按照RTP格式打包成媒体数据包;将所述媒体数据包放入申请的发送盒子的数据包缓冲区中,并设置所述发送盒子 的预定发送时间戳。优选地,所述将发送盒子加入发送队列的步骤包括根据所述发送盒子中的发送句柄调用操作系统函数,将所述发送盒子加入发送队 列中。优选地,所述放入预先从发送盒子空闲管理队列内申请的发送盒子中的步骤之前 还包括判断所述媒体数据包发送时间是否晚于预定发送时间戳,若否,则执行将所述媒 体数据包放入预先从发送盒子空闲管理队列内申请的发送盒子中的步骤。本发明还提出一种降低流媒体码流发送抖动的流媒体服务器,包括媒体数据读取模块,用于从外部媒体存储设备中读取视频的媒体数据;媒体数据分析处理模块,用于对所述媒体数据进行分析处理打包成RTP格式的媒 体数据包,将同一时间发送的多个媒体数据包放入预先从发送盒子空闲管理队列内申请的 发送盒子中,并设置发送盒子的预定发送时间戳;媒体数据发送模块,用于将所述发送盒子加入发送队列,并根据所述预定发送时 间戳将所述发送盒子中的媒体数据包发送至传输网络;发送盒子回收模块,用于回收所述发送盒子至所述发送盒子空闲管理队列。优选地,所述媒体数据分析处理模块包括发送盒子申请单元,用于从所述发送盒子空闲管理队列中申请一个发送盒子;媒体数据搜索单元,用于根据所述媒体数据携带的时间戳搜索在同一时间需发送 的媒体数据;媒体数据打包单元,用于将所述在同一时间需发送的媒体数据按RTP格式打包成 媒体数据包;媒体数据放置单元,用于将所述媒体数据包放入申请的发送盒子的数据包缓冲区 中,并设置所述发送盒子的预定发送时间戳。优选地,所述媒体数据发送模块还用于根据所述发送盒子中的发送句柄调用操 作系统函数,将所述发送盒子加入发送队列中。优选地,所述媒体数据分析处理模块还包括判断单元,连接在所述媒体数据打包单元与媒体数据放置单元之间,用于判断所 述媒体数据包发送时间是否晚于预定发送时间戳,若否,则由所述媒体数据放置单元将所 述媒体数据包放入预先从发送盒子空闲管理队列内申请的发送盒子中。本发明提出一种降低流媒体码流发送抖动的方法及流媒体服务器,通过对从外部媒 体存储设备读取的媒体数据进行分析处理后,打包成RTP格式的媒体数据包放入发送盒子中按 预定发送时间戳发送至传输网络,解决了流媒体服务器在同时服务大量用户时码流发送抖动 大、DF值不平稳的问题,实现了媒体码流平稳发送,提升视频质量,提高用户的体验效果。


图1是本发明降低流媒体码流发送抖动的方法一实施例流程示意图2是本发明降低流媒体码流发送抖动的方法一实施例中对媒体数据进行分析 运算处理打包成RTP格式的媒体数据包,将同一时间发送的多个媒体数据包放入预先从发 送盒子空闲管理队列内申请的发送盒子中,并设置发送盒子的预定发送时间戳的流程示意 图;图3是本发明降低流媒体码流发送抖动的方法另一实施例流程示意图;图4是本发明降低流媒体码流发送抖动的流媒体服务器一实施例结构示意图;图5是本发明降低流媒体码流发送抖动的流媒体服务器一实施例中媒体数据分 析处理模块一实施方式结构示意图;图6是本发明降低流媒体码流发送抖动的流媒体服务器一实施例中媒体数据分 析处理模块另一实施方式结构示意图。为了使本发明的技术方案更加清楚、明了,下面将结合附图作进一步详述。
具体实施例方式本发明实施例解决方案主要是通过对从外部媒体存储设备读取的媒体数据进行 分析处理后,打包成媒体数据包放入发送盒子中,按预定时间发送至传输网络。如图1所示,本发明一实施例提出一种降低流媒体码流发送抖动的方法,包括步骤S101,从外部媒体存储设备中读取视频的媒体数据;步骤S102,对媒体数据进行分析运算处理打包成RTP格式的媒体数据包,将同一 时间发送的多个媒体数据包放入预先从发送盒子空闲管理队列内申请的发送盒子中,并设 置发送盒子的预定发送时间戳;本实施例方法基于Linux操作系统而实现,具体由Linux操作系统应用层程序和 驱动程序完成,其涉及流媒体服务器,包括的功能模块有媒体数据发送设备以及发送盒子 回收模块等。如上所述,IPTV可以为用户提供各种视频服务,当用户发起视频播放请求时, 由流媒体服务器将媒体数据通过传输网络发送到用户的机顶盒上。在本实施例中,为了解决流媒体服务器同时服务于大量用户时码流发送抖动大, 造成视频播放质量下降的问题,在将媒体数据发送至传输网络之前,对从外部媒体存储设 备中读取的媒体数据进行分析运算处理,对处理后的媒体数据进行打包,得到RTP格式的 媒体数据包,将同一时间发送的多个媒体数据包放入预先申请的发送盒子中,并设置发送 盒子的预定发送时间戳,以便流媒体服务器中媒体数据发送设备根据发送盒子的预定发送 时间戳定时将发送盒子中的媒体数据包发送至传输网络。本实施例的发送盒子包括数据包缓冲区和发送句柄,其中,数据包缓冲区是在多 个用户同一时刻将要发送媒体数据包时,从操作系统内存中动态申请的;发送句柄为操作 系统的Socket句柄,该发送句柄的类型与媒体数据发送设备驱动相关联,操作系统在创建 发送盒子时,会为其绑定一个创建的Socket句柄。步骤S103,将发送盒子加入发送队列,并根据预定发送时间戳将发送盒子中的媒 体数据包发送至传输网络;在本实施例中,根据发送盒子中的发送句柄调用操作系统函数,将发送盒子加入 到媒体数据发送设备的发送队列中。在具体实施过程中,在对媒体数据进行分析运算处理时,由定时器触发实现,当定时器到达后,从发送盒子空闲管理队列中申请一个发送盒子;然后循环定时在流媒体服务 器上根据媒体数据的时间戳搜索所有在某一个时刻比如30毫秒后要发送的媒体数据,按 照媒体数据发包格式打包成媒体数据包,将这些媒体数据包放入上述发送盒子这一数据包 缓冲列表中,再根据媒体数据包的时间戳为发送盒子设置一个将要被发送的时刻,然后根 据发送盒子中的Socket句柄调用操作系统函数,将发送盒子加入到媒体数据发送设备的 发送队列中;同时,将该发送盒子的Socket句柄加入到发送盒子回收模块的Select侦听 中。媒体数据发送设备设置有中断定时器,在媒体数据发送设备的中断定时器到达 后,媒体数据发送设备检查发送队列中的发送盒子,如果找到有发送盒子需要在当前时刻 发送,则取出该发送盒子。媒体数据发送设备从发送盒子中取出所有媒体数据包,依次送入 媒体数据发送设备管理的网卡中,由网卡将媒体数据包发送到传输网路中。步骤S104,回收发送盒子至发送盒子空闲管理队列。在媒体数据发送设备将发送盒子中的媒体数据包发送完成后,通过发送盒子的 Socket句柄通知发送盒子回收模块发送盒子的媒体数据包已发送完成。在发送盒子回收模块从系统调用Select句柄唤醒后,将侦听到的发送盒子中的 数据包缓冲区和Socket句柄回收。然后由发送盒子回收模块将回收的数据包缓冲区和 Socket句柄加入到发送盒子空闲管理队列,以便发送后续的媒体数据。本实施例为了提高系统效率,上述各步骤之间的互动操作均采用异步方式进行。 驱动程序根据中断精确轮询发送队列,在准确的时刻操作流媒体服务器的网卡设备,从而 将数据包发送到传输网络中。本实施例中媒体数据发送设备采用Linux驱动程序方式实现,其定时器采用操作 系统中断方式触发,即使在操作系统负荷较大的情况下,也能保证定时器的触发精度。因此 可以在非常准确的时刻将提前准备好的媒体数据包发送到传输网络中,从保证了视频码流 发送时刻的准确性,达到降低媒体发包抖动、平滑DF值的目的。如图2所示,步骤S102包括步骤S1021,从发送盒子空闲管理队列中申请一发送盒子;步骤S1022,根据媒体数据携带的时间戳搜索在同一时间需发送的媒体数据;步骤S1023,将在同一时间需发送的媒体数据按RTP格式打包成媒体数据包;步骤S1024,将媒体数据包放入申请的发送盒子的数据包缓冲区中,并设置发送盒 子的预定发送时间戳。如图3所示,本发明另一实施例提出一种降低流媒体码流发送抖动的方法,包括步骤S301,从外部媒体存储设备中读取视频的媒体数据;步骤S302,对媒体数据进行分析运算处理打包成RTP格式的媒体数据包;步骤S303,判断媒体数据包发送时间是否晚于预定发送时间戳,若否,则进入步骤 S304 ;若是,则进入步骤S307 ;步骤S304,将媒体数据包放入预先从发送盒子空闲管理队列内申请的发送盒子 中,并设置发送盒子的预定发送时间戳;步骤S305,将发送盒子加入发送队列,并根据预定发送时间戳将发送盒子中的媒 体数据包发送至传输网络;
步骤S306,回收发送盒子至发送盒子空闲管理队列。步骤S307,不将媒体数据包放入预先从发送盒子空闲管理队列内申请的发送盒子 中。在本实施例中,上述步骤S301、步骤S305以及步骤S306与上述实施例中步骤 S301、步骤S303以及步骤S304依次对应相同,在此不再赘述。其中,上述步骤S302、步骤S303、步骤S304以及步骤S307中,在将媒体数据包放 入发送盒子之前,需要判断该媒体数据包的实际发送时间是否晚于预定发送时间戳,如果 媒体数据包的实际发送时间晚于预定发送时间戳,则不再将该媒体数据包放入发送盒子进 行发送,也就是说,放置有媒体数据包的发送盒子的生成时间总是比媒体数据包的实际发 送时刻要早才能发送,以提高系统效率及用户体验效果。如图4所示,本发明一实施例提出一种降低流媒体码流发送抖动的流媒体服务 器,包括媒体数据读取模块401、媒体数据分析处理模块402、媒体数据发送模块403以及 发送盒子回收模块404,其中媒体数据读取模块401,用于从外部媒体存储设备中读取视频的媒体数据;媒体数据分析处理模块402,用于对媒体数据进行分析运算处理打包成RTP格式 的媒体数据包,将同一时间发送的多个媒体数据包放入预先从发送盒子空闲管理队列内申 请的发送盒子中,并设置发送盒子的预定发送时间戳;媒体数据发送模块403,用于将发送盒子加入发送队列,并根据预定发送时间戳将 发送盒子中的媒体数据包发送至传输网络;在本实施例中,媒体数据发送模块403根据发送盒子中的发送句柄调用操作系统 函数,将发送盒子加入发送队列中。发送盒子回收模块404,用于回收发送盒子至发送盒子空闲管理队列。上述媒体数据读取模块401、媒体数据分析处理模块402以及发送盒子回收模块 404,是流媒体软件的内部模块,受控于操作系统应用层程序;媒体数据发送模块403可以 为本实施例系统中媒体数据发送设备,受控于操作系统的驱动程序,媒体数据发送模块403 根据中断精确轮询发送队列,在准确的时刻操作流媒体服务器的网卡设备将媒体数据包发 送到传输网络中。在本实施例中,为了解决流媒体服务器同时服务于大量用户时码流发送抖动大, 造成视频播放质量下降的问题,在将媒体数据发送至传输网络之前,通过媒体数据分析处 理模块402对媒体数据读取模块401从外部媒体存储设备中读取的媒体数据进行分析运算 处理,对处理后的媒体数据进行打包,得到RTP格式媒体数据包,将同一时间发送的多个媒 体数据包放入预先申请的发送盒子中,以便媒体数据发送模块403根据发送盒子的预定发 送时间戳定时将发送盒子发送至传输网络。在具体实施过程中,在媒体数据分析处理模块402对媒体数据进行分析运算处理 时,由定时器触发,当定时器到达后,从发送盒子空闲管理队列中申请一个发送盒子;然后 循环定时在流媒体服务器上根据媒体数据的时间戳搜索所有在某一个时刻比如30毫秒后 要发送的媒体数据,按照媒体数据发包格式打包成媒体数据包,将这些媒体数据包放入上 述发送盒子这一数据包缓冲列表中,再根据媒体数据包的预定发送时间戳为发送盒子设置 一个将要被发送的时刻,然后根据发送盒子中的Socket句柄调用操作系统函数,将发送盒子加入到媒体数据发送设备的发送队列中;同时,将该发送盒子的Socket句柄加入到发送 盒子回收模块的Select侦听中。媒体数据发送设备设置有中断定时器,在媒体数据发送设备的中断定时器到达 后,媒体数据发送设备检查发送队列中的发送盒子,如果找到有发送盒子需要在当前时刻 发送,则取出该发送盒子。媒体数据发送设备从发送盒子中取出所有媒体数据包,依次送入 媒体数据发送设备管理的网卡中,由网卡将媒体数据包发送到传输网路中。在媒体数据发送设备将发送盒子中的媒体数据包发送完成后,通过发送盒子的 Socket句柄以异步消息通知发送盒子回收模块404发送盒子的媒体数据包已发送完成。发送盒子回收模块404收到该异步消息从系统调用Select句柄唤醒后,将侦听到 的发送盒子中的数据包缓冲区和Socket句柄回收。然后由发送盒子回收模块404将回收 的数据包缓冲区和Socket句柄加入到发送盒子空闲管理队列,以便发送后续的媒体数据。本实施例为了提高系统效率,上述各功能模块之间的互动操作均采用异步方式进 行。驱动程序根据中断精确轮询发送队列,在准确的时刻操作流媒体服务器的网卡设备,从 而将数据包发送到传输网络中。本实施例中媒体数据发送设备采用Linux驱动程序方式实现,其定时器采用操作 系统中断方式触发,即使在操作系统负荷较大的情况下,也能保证定时器的触发精度。因此 可以在非常准确的时刻将提前准备好的媒体数据包发送到传输网络中,从保证了视频码流 发送时刻的准确性,达到降低媒体发包抖动、平滑DF值的目的。如图5所示,媒体数据分析处理模块402包括发送盒子申请单元4021、媒体数据 搜索单元4022、媒体数据打包单元4023以及媒体数据放置单元4024,其中发送盒子申请单元4021,用于从发送盒子空闲管理队列中申请一发送盒子;媒体数据搜索单元4022,用于根据媒体数据携带的时间戳搜索在同一时间需发送 的媒体数据;媒体数据打包单元4023,用于将在同一时间需发送的媒体数据按RTP格式打包成 媒体数据包;媒体数据放置单元4024,用于将媒体数据包放入申请的发送盒子的数据包缓冲区 中,并设置发送盒子的预定发送时间戳。如图6所示,作为本实施例的另一种实施方式中,媒体数据分析处理模块402还可 包括判断单元40234,连接在媒体数据打包单元4023与媒体数据放置单元4024之 间,用于判断媒体数据包发送时间是否晚于预定发送时间戳,若否,则由媒体数据放置单元 4024将媒体数据包放入预先从发送盒子空闲管理队列内申请的发送盒子中。在本实施例中,在将媒体数据包放入发送盒子之前,需要判断该媒体数据包的实 际发送时间是否晚于预定时间,如果媒体数据包的实际发送时间晚于预定时间,则不再将 该媒体数据包放入发送盒子进行发送,也就是说,放置有媒体数据包的发送盒子的生成时 间总是比媒体数据包的实际发送时刻要早才能发送,以提高系统效率及用户体验效果。本发明实施例降低流媒体码流发送抖动的方法及流媒体服务器,通过对从外部媒 体存储设备读取的媒体数据进行分析处理后,打包成RTP格式的媒体数据包放入发送盒子 中按预定发送时间戳发送至传输网络,解决了流媒体服务器在同时服务大量用户时码流发送抖动大、DF值不平稳的问题,实现了媒体码流平稳发送,提升视频质量,提高用户的体验 效果。 以上所述仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用 本发明说明书及附图内容所作的等效结构或流程变换,或直接或间接运用在其它相关的技 术领域,均同理包括在本发明的专利保护范围内。
权利要求
一种降低流媒体码流发送抖动的方法,其特征在于,包括从外部媒体存储设备中读取视频的媒体数据;对所述媒体数据进行分析处理打包成RTP格式的媒体数据包,将同一时间发送的多个媒体数据包放入预先从发送盒子空闲管理队列内申请的发送盒子中,并设置发送盒子的预定发送时间戳;将所述发送盒子加入发送队列,并根据所述预定发送时间戳将所述发送盒子中的媒体数据包发送至传输网络;回收所述发送盒子至所述发送盒子空闲管理队列。
2.根据权利要求1所述方法,其特征在于,所述发送盒子包括数据包缓冲区和发送句柄。
3.根据权利要求2所述方法,其特征在于,所述对媒体数据进行分析处理打包成RTP格 式的媒体数据包,将同一时间发送的多个媒体数据包放入预先从发送盒子空闲管理队列内 申请的发送盒子中,并设置发送盒子的预定发送时间戳的步骤包括从所述发送盒子空闲管理队列中申请一个发送盒子; 根据所述媒体数据携带的时间戳搜索在同一时间需发送的媒体数据; 将所述在同一时间需发送的媒体数据按RTP格式打包成媒体数据包; 将所述媒体数据包放入申请的发送盒子的数据包缓冲区中,并设置所述发送盒子的预 定发送时间戳。
4.根据权利要求3所述方法,其特征在于,所述将发送盒子加入发送队列的步骤包括 根据所述发送盒子中的发送句柄调用操作系统函数,将所述发送盒子加入发送队列中。
5.根据权利要求1-4中任一项所述方法,其特征在于,所述放入预先从发送盒子空闲 管理队列内申请的发送盒子中的步骤之前还包括判断所述媒体数据包发送时间是否晚于预定发送时间戳,若否,则执行将所述媒体数 据包放入预先从发送盒子空闲管理队列内申请的发送盒子中的步骤。
6.一种降低流媒体码流发送抖动的流媒体服务器,其特征在于,包括 媒体数据读取模块,用于从外部媒体存储设备中读取视频的媒体数据;媒体数据分析处理模块,用于对所述媒体数据进行分析处理打包成RTP格式的媒体数 据包,将同一时间发送的多个媒体数据包放入预先从发送盒子空闲管理队列内申请的发送 盒子中,并设置发送盒子的预定发送时间戳;媒体数据发送模块,用于将所述发送盒子加入发送队列,并根据所述预定发送时间戳 将所述发送盒子中的媒体数据包发送至传输网络;发送盒子回收模块,用于回收所述发送盒子至所述发送盒子空闲管理队列。
7.根据权利要求6所述流媒体服务器,其特征在于,所述媒体数据分析处理模块包括 发送盒子申请单元,用于从所述发送盒子空闲管理队列中申请一个发送盒子;媒体数据搜索单元,用于根据所述媒体数据携带的时间戳搜索在同一时间需发送的媒 体数据;媒体数据打包单元,用于将所述在同一时间需发送的媒体数据按RTP格式打包成媒体 数据包;媒体数据放置单元,用于将所述媒体数据包放入申请的发送盒子的数据包缓冲区中, 并设置所述发送盒子的预定发送时间戳。
8.根据权利要求6所述的流媒体服务器,其特征在于,所述媒体数据发送模块还用于 根据所述发送盒子中的发送句柄调用操作系统函数,将所述发送盒子加入发送队列中。
9.根据权利要求7或8所述的流媒体服务器,其特征在于,所述媒体数据分析处理模块 还包括判断单元,连接在所述媒体数据打包单元与媒体数据放置单元之间,用于判断所述媒 体数据包发送时间是否晚于预定发送时间戳,若否,则由所述媒体数据放置单元将所述媒 体数据包放入预先从发送盒子空闲管理队列内申请的发送盒子中。
全文摘要
本发明涉及一种降低流媒体码流发送抖动的方法及流媒体服务器,其方法包括从外部媒体存储设备中读取视频的媒体数据;对媒体数据进行分析处理打包成RTP格式的媒体数据包,将同一时间发送的多个媒体数据包放入预先从发送盒子空闲管理队列内申请的发送盒子中,并设置发送盒子的发送时间戳;将发送盒子加入到发送队列,并根据发送盒子的预定发送时间戳将发送盒子中的媒体数据包发送至传输网络;回收发送盒子至发送盒子空闲管理队列。本发明解决了流媒体服务器在同时服务大量用户时码流发送抖动大、DF值不平稳的问题,实现了媒体码流平稳发送,提升视频质量,提高用户的体验效果。
文档编号H04L29/06GK101997872SQ20101051475
公开日2011年3月30日 申请日期2010年10月21日 优先权日2010年10月21日
发明者刘海峰, 夏蕾, 王伟 申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1