一种流媒体数据处理方法、 装置及系统 技术领域
本发明涉及通信技术领域, 尤其涉及一种流媒体数据处理方法、 装置及系 统。
背景技术
现有的 TS ( Transport Stream, 传输流 ) /UDP流媒体业务中, 在向网卡发 送流媒体数据时, 流媒体服务器需把流媒体数据封装成 UDP报文, 再把封装 好的 UDP报文发送给网卡。 TS/UDP流媒体业务中, 源内容为 TS流或 TS文 件,每个 TS包的长度为 188字节,为简化处理,流媒体服务器每次封装的 UDP 报文中流媒体净荷的长度为 188字节的整数倍。 由于 UDP头占 8个字节, 并 且以太网中 MTU ( Maximum Transmission Unit, 最大传输单元) 大小为 1500 字节, 因此, 流媒体服务器每次向网卡发送的 UDP报文最多包含 7个 TS包。
通过对现有技术的分析, 发明人认为现有技术至少存在以下问题: 现有技术中, 流媒体服务器一次最多向网卡发送 7个 TS包, 由于流媒体 业务的数据量很大, 因而, 流媒体服务器需要频繁地与网卡进行通信, 从而加 重了流媒体服务器的处理负荷, 其次, 流媒体服务器一次把 7个 TS包封装成 一个 UDP报文,向网卡发送封装后的 UDP报文,由于流媒体业务数据量很大, 因而, 流媒体服务器需要频繁地对流媒体数据进行分段封装, 也进一步加重了 流媒体服务器的处理负荷。
发明内容
本发明实施例的目的在于提供一种流媒体数据处理方法、 装置及系统, 可 以降低流媒体服务器的处理负荷。
本发明实施例提供的一种流媒体数据处理方法, 包括:
流媒体服务器确定应用层流媒体数据的源格式以及目标格式;
所述流媒体服务器根据所述源格式以及所述目标格式, 确定一个所述目标 格式的报文能够包含的所述源格式的数据包的最大整数数目;
所述流媒体服务器向流媒体数据封装设备发送应用层流媒体数据块, 其 中, 所述应用层流媒体数据块中数据包的数目大于所述最大整数数目。
本发明实施例提供的另一种流媒体数据处理方法, 包括:
接收流媒体服务器发送的应用层流媒体数据块;
确定所述应用层流媒体数据块的源格式以及目标格式, 其中, 所述应用层 流媒体数据块中数据包的数目大于一个所述目标格式的报文能够包含的所述 源格式的数据包的最大整数数目;
根据所述源格式确定所述应用层流媒体数据块中每个数据包的大小, 根据 所述每个数据包的大小以及所述最大整数数目, 将所述应用层流媒体数据块中 所述目标格式的报文包含整数个所述源格式的数据包。
本发明实施例提供的一种流媒体服务器, 包括:
确定器, 用于确定应用层流媒体数据的源格式以及目标格式;
所述确定器还用于根据所述源格式以及所述目标格式, 确定一个所述目标 格式的报文能够包含的所述源格式的数据包的最大整数数目;
发送器, 用于向流媒体数据封装设备发送应用层流媒体数据块, 其中, 所 述应用层流媒体数据块中数据包的数目大于所述确定器确定的最大整数数目。
本发明实施例提供的一种流媒体数据封装设备, 包括:
接收器, 用于接收流媒体服务器发送的应用层流媒体数据块;
确定器, 用于确定所述接收器接收到的应用层流媒体数据块的源格式以及 目标格式, 其中, 所述接收器接收到的应用层流媒体数据块中数据包的数目大 于一个所述目标格式的报文能够包含的所述源格式的数据包的最大整数数目; 所述确定器还用于根据所述源格式确定每个数据包的大小;
分段封装器, 用于根据所述确定器确定的每个数据包的大小以及所述最大 整数数目, 将所述接收器接收到的应用层流媒体数据块中的数据包分段封装成 至少两个所述目标格式的报文, 其中, 分段封装后的每个所述目标格式的报文 包含整数个所述源格式的数据包。
本发明实施例提供的一种流媒体数据处理系统, 包括: 流媒体服务器, 流 媒体数据封装设备, 其中, 所述流媒体服务器, 用于确定应用层流媒体数据的源格式以及目标格式, 根据所述源格式以及目标格式, 确定一个所述目标格式的报文能够包含的所述 源格式的数据包的最大整数数目后, 向所述流媒体数据封装设备发送应用层流 媒体数据块, 其中, 所述应用层流媒体数据块中数据包的数目大于所述最大整 数数目;
所述流媒体数据封装设备, 用于接收所述流媒体服务器发送的应用层流媒 体数据块, 确定所述应用层流媒体数据块的源格式以及目标格式, 根据所述源 格式确定所述应用层流媒体数据块中每个数据包的大小, 根据所述每个数据包 的大小以及所述最大整数数目, 将所述应用层流媒体数据块中的数据包分段封 装成至少两个所述目标格式的报文, 其中, 分段封装后的每个所述目标格式的 报文包含整数个所述源格式的数据包。
本发明实施例提供的一种流媒体数据处理方法、 装置及系统, 应用层流媒 体数据块中数据包的数目大于一个目标格式的报文能够包含的源格式的数据 包的最大整数数目, 减少了流媒体服务器与流媒体数据封装设备之间通信的次 数, 降低了流媒体服务器的处理负荷; 其次, 流媒体服务器向流媒体数据封装 设备发送应用层流媒体数据块, 由流媒体数据封装设备对应用层流媒体数据块 进行分段封装, 进一步降低了流媒体服务器的处理负荷。
附图说明
图 1为本发明实施例提供的一种流媒体数据处理的架构图;
图 2为本发明实施例提供的一种流媒体数据处理方法;
图 3为本发明实施例提供的另一种流媒体数据处理方法;
图 4为本发明实施例提供的一种流媒体数据处理方法的实现流程图; 图 5为本发明实施例提供的一种流媒体数据处理系统;
图 6为本发明实施例提供的一种流媒体服务器;
图 7为本发明实施例提供的一种流媒体数据封装设备。 具体实施方式
下面将结合本发明实施例中的附图, 对本发明实施例中的技术方案进行清 楚、 完整地描述, 显然, 所描述的实施例仅仅是本发明的一部分实施例, 而不 是全部实施例。 基于本发明中的实施例, 本领域普通技术人员在没有作出创造 性劳动前提下获得的所有其他实施例, 都属于本发明保护的范围。
如图 1所示,为本发明实施例提供的一种流媒体数据处理的架构图。其中, 流媒体服务器向流媒体数据封装设备发送应用层流媒体数据块, 流媒体数据封 装设备把接收到的应用层流媒体数据块分段封装成报文, 将分段封装后每个报 文发送给客户端。
其中, 作为示例而非限定, 所述流媒体数据封装设备可以是网卡或具有报 文封装功能的设备。
基于图 1所示的架构图, 本发明实施例提供一种流媒体数据处理方法。 如 图 2所示, 该方法具体包括:
S201 : 流媒体服务器确定应用层流媒体数据的源格式以及目标格式;
S202: 所述流媒体服务器根据所述源格式以及所述目标格式, 确定一个所 述目标格式的报文能够包含的所述源格式的数据包的最大整数数目;
其中, 需要说明的是, 所述流媒体服务器根据所述源格式确定所述源格式 的数据包的大小, 根据所述数据包的大小以及所述目标格式的报文的容量, 确 定一个所述目标格式的报文能够包含的所述源格式的数据包的最大整数数目;
例如, 源格式为 TS文件或 TS流, 目标格式为 TS/UDP, TS包的大小为 188字节, 由于 MTU为 1500个字节, IP头占 20个字节, UDP头占 8个字节, 因此, UDP报文负荷最多为 1472个字节, UDP报文的容量为 1472字节, 即 最多 1472字节, 因此, 流媒体服务器根据 TS包的大小以及 UDP报文的容量, 可以确定 TS/UDP格式的报文最多能够包含 7个 TS包; 又例如, 源格式为 TS 文件或 TS流, 目标格式为 TS/RTP/UDPTS/RTP/UDP, 基于同样的理由, 流媒 体服务器可以确定 TS/RTP/UDPUDP报文最多能够包含 7个 TS包, 对于其他 的目标格式, 例如 TS/TCP, 可以采用类似的方式确定目标格式的报文能够包 含的源格式的数据包的最大整数数目;
需要说明的是, TS/UDP格式表示 TS格式的 UDP报文, TS/RTP/UDP格 式表示 RTP格式的 UDP报文, 其中, RTP包包含 TS格式的数据包;
对于其他的源格式以及目标格式,例如源格式为 H.264,目标格式为 H.264/ RTP/UDP, 可以采用类似的方式进行判断;
S203: 所述流媒体服务器向流媒体数据封装设备发送应用层流媒体数据 块, 其中, 所述应用层流媒体数据块中数据包的数目大于所述最大整数数目; 例如, 源格式为 TS文件或 TS流, 目标格式为 TS/UDP, —个 UDP报文 最多能够包含 7个 TS包, 流媒体服务器向流媒体数据封装设备发送的应用层 流媒体数据块中 TS 包的数目大于 7, 可以减少流媒体服务器与流媒体数据封 装设备之间的通信次数, 降低流媒体服务器的处理负荷; 对于其他目标格式, 如 TS/RTP/UDPTS/RTP/UDP,可以采用类似的方式向流媒体数据封装设备发送 应用层流媒体数据块;
需要说明的是, 对于其他的源格式以及目标格式, 例如源格式为 H.264, 目标格式为 H.264/RTP/ UDP,可以采用类似的方式向流媒体数据封装设备发送 应用层流媒体数据块;
需要说明的是, 所述流媒体服务器可以根据流媒体业务的实时性, 确定应
用层流媒体数据块中数据包的数目, 具体的, 对于某些需要考虑用户体验的业 务, 应用层流媒体数据块中数据包的数目至少要保证不影响用户体验, 作为示 例而非限定, 其中一种具体的实施方式中, 流媒体服务器可以根据流媒体数据 的平均播放速率以及发送应用层流媒体数据块的发送时间间隔, 确定应用层流 媒体数据块中数据包的数目, 例如, 对于在线点播业务, 至少按照流媒体数据 的平均播放速率发送, 以保证播放的连续性, 如果流媒体数据的平均播放速率 为 2Mbit/s, 即要求流媒体服务器每秒发送 2Mbit的数据, 若该应用层流媒体数 据块为 TS格式的数据, 并且应用层流媒体服务器一秒钟向流媒体数据封装设 备发送一次应用层流媒体数据块,则要求流媒体服务器每秒发送 1400个 TS包 给流媒体数据封装设备;
需要说明的是, 所述应用层流媒体数据块中数据包的数目可以是所述最大 整数数目的整数倍, 便于流媒体数据封装设备进行封装处理, 降低流媒体数据 封装设备分段封装的处理复杂度;
需要说明的是, 流媒体服务器向流媒体数据封装设备发送应用层流媒体数 据块之后, 由所述流媒体数据封装设备对所述应用层流媒体数据块进行分段封 装处理。
本发明实施例提供的一种流媒体数据处理方法, 应用层流媒体数据块中数 据包的数目大于一个目标格式的报文能够包含的源格式的数据包的最大整数 数目, 减少了流媒体服务器与流媒体数据封装设备之间通信的次数, 降低了流 媒体服务器的处理负荷; 其次, 流媒体服务器向流媒体数据封装设备发送应用 层流媒体数据块, 由流媒体数据封装设备对应用层流媒体数据块进行分段封装 处理, 进一步降低了流媒体服务器的处理负荷; 另外, 流媒体服务器根据流媒 体业务的实时性, 确定应用层流媒体数据块中数据包的数目, 保证了流媒体数 据播放的连续性, 提升了用户体验; 再次, 应用层流媒体数据块中数据包的数 目为上述最大整数数目的整数倍, 便于流媒体数据封装设备对应用层流媒体数
据块进行分段封装处理, 简化了封装处理的复杂度。 基于图 1所示的架构图, 本发明实施例提供另一种流媒体数据处理方法。 如图 3所示, 该方法具体包括:
S301 : 接收流媒体服务器发送的应用层流媒体数据块;
其中, 需要说明的是, 本方法实施例的执行主体为流媒体数据封装设备, 所述流媒体数据封装设备可包括网卡或具有报文封装功能的设备;
S302: 确定所述应用层流媒体数据块的源格式以及目标格式, 其中, 所述 应用层流媒体数据块中数据包的数目大于一个所述目标格式的报文能够包含 的所述源格式的数据包的最大整数数目;
作为示例而非限定, 以源格式为 TS文件或 TS流, 目标格式为 TS/UDP为 例, 由于一个 TS包为 188字节, 一个 UDP头占 8字节, 因此, 一个 UDP报 文最多包含 7个 TS包, 则应用层流媒体数据块中 TS包的数目大于 7;
需要说明的是, 所述应用层流媒体数据块中数据包的数目为整数; 其中, 需要说明的是, 确定所述应用层流媒体数据块的源格式以及目标格 式的方式, 可以包括以下任一方式:
方式一: 应用层流媒体数据块携带源格式标识以及目标格式标识, 所述流 媒体数据封装设备根据所述应用层流媒体数据块携带的源格式标识以及目标 格式标识, 确定所述应用层流媒体数据块的源格式以及目标格式;
方式二: 根据预先保存的配置参数, 确定所述应用层流媒体数据块的源格 式以及目标格式, 其中, 所述配置参数包括所述应用层流媒体数据块的源格式 标 i只以及目标格式标 i只;
S303 : 根据所述源格式确定每个数据包的大小, 根据所述每个数据包的大 小以及所述最大整数数目, 将所述应用层流媒体数据块中的数据包分段封装成 至少两个所述目标格式的报文, 其中, 分段封装后的每个所述目标格式的报文 包含整数个所述源格式的数据包;
其中, 将所述应用层流媒体数据块中的数据包分段封装成至少两个所述目 标格式的报文的方式, 具体包括以下方式:
将所述应用层流媒体数据块中的数据包分为至少两个分段, 其中, 每个分 段包含的数据包的数目为整数且不大于所述最大整数数目; 将所述至少两个分 段分别封装成所述目标格式的报文;
例如, 源格式为 TS流或 TS文件, 目标格式为 TS/UDP, 则表明需把源格 式的 TS包封装成 TS格式的 UDP报文, 由于 TS包的大小为 188字节, MTU 的值为 1500字节, 因此, 一个 UDP报文最多能携带 7个 TS包, 可以按照不 大于 7个 TS包的分段方式对应用层流媒体数据块进行分段, 例如应用层流媒 体数据块包含 35个 TS包, 按每 5个 TS包分为一段的方式, 将该应用层流媒 体数据块分段封装成 7个 UDP报文, 每个 UDP报文的格式如下表所示:
又例如,源格式为 TS流或 TS文件,目标格式为 TS/RTP/UDPTS/RTP/UDP, 则表明需首先把多个源格式的 TS 包加上 RTP 头封装成 RTP ( Real-time Transport Protocol, 实时传输协议)格式的包, 再把 RTP格式的包加上 UDP 头封装成 UDP报文, 由于 TS包的大小为 188字节, UDP头占 8个字节, RTP 头占 12个字节, 因此, 一个 UDP报文最多能携带 7个 TS包, 可以按照不大 于 7个 TS 包的分段方式对应用层流媒体数据块进行分段, 例如按每 5个 TS 包分为一段的方式, 将分段后每个分段封装成 UDP报文, RTP格式的 UDP报 文与 TS格式的 UDP报文不同之处在于多了一个 RTP头, 如下表所示:
需要说明的是, 对于其他的目标格式, 可以采用类似的方式扩展流媒体数 据封装设备相应的功能, 作为示例而非限定, 源格式为 TS文件或 TS流, 目标 格式为 TS/TCP, 则按照类似的方式确定 TCP报文能够包含的 TS包的最大整 数数目, 并按照类似的方式对应用层流媒体数据块进行分段封装, 在此不再贅
述;
对于其他的源格式以及目标格式, 例如源格式为 H.264 , 目标格式为 H.264/RTP/ UDP, 可采用类似方式扩展流媒体数据封装设备相应的功能, 在此 不再赘述;
需要说明的是, 将应用层流媒体数据块中的数据包分为至少两个分段的方 式, 可以包括以下方式:
按照所述最大整数数目, 将所述应用层流媒体数据块中的数据包分为至少 两个分段, 例如, 在源格式为 TS文件或 TS流, 目标格式为 TS/RTP/ UDP时, 按每 7个 TS包为一段的方式, 对应用层流媒体数据块进行分段, 若应用层流 媒体数据块包含了 1400个 TS包, 则将该 1400个 TS包分为 200段,每段包含 7个 TS包, 将该 200个分段分别封装成 RTP格式的 UDP报文。
本发明实施例提供的一种流媒体数据处理方法, 应用层流媒体数据块中数 据包的数目大于一个目标格式的报文能够包含的源格式的数据包的最大整数 数目, 减少了流媒体服务器与流媒体数据封装设备之间通信的次数, 降低了流 媒体服务器的处理负荷; 其次, 流媒体服务器向流媒体数据封装设备发送应用 层流媒体数据块, 由流媒体数据封装设备对应用层流媒体数据块进行封装, 进 一步降低了流媒体服务器的处理负荷; 另外, 流媒体数据封装设备根据应用层 流媒体数据块的源格式以及目标格式, 对应用层流媒体数据块进行分段封装, 使得流媒体数据封装设备可以自适应地对各种类型的应用层流媒体数据块进 行封装; 再次, 通过在应用层流媒体数据块中携带源格式标识以及目标格式标 识, 使得流媒体数据封装设备可以同时处理多种类型的应用层流媒体数据块; 此外, 通过预先保存的配置参数获知应用层流媒体数据块的源格式以及目标格 式, 可以进一步降低流媒体服务器与流媒体数据封装设备之间的通信开销, 节 省网络带宽; 进一步地, 流媒体数据封装设备封装得到的目标格式的报文包含 整数个源格式的数据包, 简化了封装处理的复杂度; 再进一步地, 流媒体数据
封装设备按照目标格式的报文能够包含的源格式的数据包的最大整数数目, 将 应用层流媒体数据块中的数据包进行分段, 使得封装后的目标格式的报文包含 最多的数据包, 减少了流媒体数据封装设备与客户端之间的通信次数, 降低了 流媒体数据封装设备的处理负荷。 如图 4所示, 为本发明实施例提供的一种流媒体数据处理方法的实现流程 图, 具体包括:
S401 : 流媒体服务器确定应用层流媒体数据的源格式以及目标格式;
S402: 所述流媒体服务器根据所述源格式以及所述目标格式, 确定一个所 述目标格式的报文能够包含的所述源格式的数据包的最大整数数目;
其中, 需要说明的是, 所述流媒体服务器根据所述源格式确定所述源格式 的数据包的大小, 根据所述数据包的大小以及所述目标格式的报文的容量, 确 定一个所述目标格式的报文能够包含的所述源格式的数据包的最大整数数目; 例如, 源格式为 TS文件或 TS流, 目标格式为 TS/UDP, TS包的大小为 188字节, UDP报文最多 1472字节, 因此, 流媒体服务器根据 TS包的大小以 及 UDP报文的容量, 可以确定 TS/UDP格式的报文最多能够包含 7个 TS包; 又例如, 源格式为 TS文件或 TS流, 目标格式为 TS/RTP/ UDP,基于同样 的理由, 流媒体服务器可以确定 TS/RTP/ UDP报文最多能够包含 7个 TS包, 对于其他的目标格式, 例如 TS/TCP, 可以采用类似的方式确定目标格式的报 文能够包含的源格式的数据包的最大整数数目;
对于其他的源格式以及目标格式, 例如源格式为 H.264 , 目标格式为 H.264/RTP/ UDP , 可以采用类似的方式进行判断;
S403 : 所述流媒体服务器根据所述最大整数数目, 确定每次读取应用层流 媒体数据的读数据包数目;
其中, 需要说明的是, 所述流媒体服务器可根据自身緩存大小, 确定所述 读数据包数目, 其中一种具体的实施方式中, 所述读数据包数目与自身緩存的
大小成正相关关系, 所述读数据包数目可随自身緩存的增大而增大, 随自身緩 存的减小而减小;
需要说明的是, 在自身緩存允许的情况下, 所述读数据包数目可以尽可能 地大;
S404: 所述流媒体服务器按照确定的读数据包数目, 读取应用层流媒体数 据;
其中, 需要说明的是, 若未读取的数据包数目小于所述读数据包数目, 则 按实际数据包数目进行读取, 否则, 按所述读数据包数目进行读取;
S405: 流媒体服务器向流媒体数据封装设备发送应用层流媒体数据块, 其 中, 所述应用层流媒体数据块中数据包的数目大于所述最大整数数目;
例如, 源格式为 TS文件或 TS流, 目标格式为 TS/UDP, —个 UDP报文 最多能够包含 7个 TS包, 流媒体服务器向流媒体数据封装设备发送的应用层 流媒体数据块中 TS 包的数目大于 7, 可以减少流媒体服务器与流媒体数据封 装设备之间的通信次数, 降低流媒体服务器的处理负荷; 对于其他目标格式, 如 TS/RTP/ UDP, 可以采用类似的方式向流媒体数据封装设备发送应用层流媒 体数据块;
需要说明的是, 对于其他的源格式以及目标格式, 例如源格式为 H.264, 目标格式为 H.264/RTP/ UDP,可以采用类似的方式向流媒体数据封装设备发送 应用层流媒体数据块;
需要说明的是, 所述流媒体服务器可以根据流媒体业务的实时性, 确定应 用层流媒体数据块中数据包的数目, 具体的, 对于某些需要考虑用户体验的业 务, 应用层流媒体数据块中数据包的数目至少要保证不影响用户体验, 作为示 例而非限定, 其中一种具体的实施方式中, 流媒体服务器可以根据流媒体数据 的平均播放速率以及发送应用层流媒体数据块的发送时间间隔, 确定应用层流 媒体数据块中数据包的数目, 例如, 对于在线点播业务, 至少按照流媒体数据
的平均播放速率发送, 以保证播放的连续性, 如果流媒体数据的平均播放速率 为 2Mbit/s, 即要求流媒体服务器每秒发送 2Mbit的数据, 若该应用层流媒体数 据块为 TS格式的数据, 并且应用层流媒体服务器一秒钟向流媒体数据封装设 备发送一次应用层流媒体数据块,则要求流媒体服务器每秒发送 1400个 TS包 给流媒体数据封装设备;
需要说明的是, 所述应用层流媒体数据块中数据包的数目可以是所述最大 整数数目的整数倍, 便于流媒体数据封装设备进行封装处理, 降低流媒体数据 封装设备分段封装的处理复杂度,例如,若应用层流媒体数据块的源格式为 TS 文件或 TS流, 目标格式为 TS/UDP , 则目标格式的 UDP报文最多能携带 7个 TS 包, 所述流媒体服务器发送的应用层流媒体数据块中数据包的数目为 Ί的 整数倍, 例如所述流媒体服务器发送的应用层流媒体数据块中数据包的数目为 1400 , 对于其他类型的源格式以及目标格式, 例如源格式为 H.264, 目标格式 为 H.264/RTP/ UDP,可采用类似方式扩展流媒体数据封装设备相应的功能,在 此不再赘述;
可选地, 在流媒体数据封装设备的緩存允许时, 在向流媒体数据封装设备 发送应用层流媒体数据块的过程中, 流媒体服务器可以尽可能多地增加一次性 向流媒体数据封装设备发送数据包的数目, 以减少流媒体服务器和流媒体数据 封装设备通信的次数, 进一步减轻流媒体服务器的处理负荷;
需要说明的是, 若流媒体服务器读取的数据包的数目不足所述最大整数数 目, 则按照实际读取的数据包数目, 向流媒体数据封装设备发送应用层流媒体 数据块;
优选地, 所述读数据包数目可以大于或等于所述最大整数数目;
其中, 需要指出的是, 本发明实施例并不限定流媒体服务器向流媒体数据 封装设备发送应用层流媒体数据块的具体方式, 作为示例而非限定, 流媒体服 务器可以通过自定义一个新的套接字结构类型, 在该结构中包含应用层流媒体
数据块的源格式标识、 目标格式标识以及净荷等, 如下表所示:
15 16 23 24 31
ST DT R R
Block_SN
TimeStamp
Length
Payload
其中, ST为源格式标识, 用于表示应用层流媒体数据块的源格式, 标识 DT为目标格式标识, 用于表示应用层流媒体数据块的目标格式, Block— SN为 应用层流媒体数据块的块序号, TimeStamp 为时间戳, 由于 Block— SN值和 TimeStamp值是有规律的, 其中, TimeStamp初始值为随机值, 只要得到该随 机值就可以对应用层流媒体数据块进行处理, Length为净荷长度, Payload为 净荷, 例如, 对于源格式为 TS流或 TS文件的应用层流媒体数据块, 对于第一 个应用层流媒体数据块, ST=1 , DT=1 , Block-SN=l , Timestam 为初始随机 值, Length=1400, 表示 Payload中包含 1400个 TS包;
需要说明的是, 流媒体服务器还可以利用已定义的套接字结构类型, 将应 用层流媒体数据块发送到流媒体数据封装设备;
需要进一步说明的是, 若所述流媒体数据封装设备没有打开分段封装功 能, 所述流媒体服务器指示所述流媒体数据封装设备打开分段封装功能, 以便 所述流媒体数据封装设备对所述流媒体服务器发送的流媒体数据块进行分段 封装;
S406: 流媒体数据封装设备确定所述应用层流媒体数据块的源格式以及目 标格式;
其中, 需要说明的是, 确定所述应用层流媒体数据块的源格式以及目标格
式的方式, 可以包括以下任一方式:
方式一: 所述应用层流媒体数据块携带源格式标识以及目标格式标识, 所 述流媒体数据封装设备根据所述应用层流媒体数据块携带的源格式标识以及 目标格式标识, 确定所述应用层流媒体数据块的源格式以及目标格式, 例如, 在上述自定义的套接字结构类型中, 通过 ST标识以及 DT标识, 确定应用层 流媒体数据块的源格式以及目标格式;
方式二: 根据预先保存的配置参数, 确定所述应用层流媒体数据块的源格 式以及目标格式, 其中, 所述配置参数包括所述应用层流媒体数据块的源格式 标 i只以及目标格式标 i只;
其中, 需要说明的是, 在获取预先保存的配置参数之前, 所述流媒体数据 封装设备可以预先接收所述流媒体服务器发送的配置参数, 并保存所述配置参 数, 以便流媒体数据封装设备接收到流媒体服务器发送的应用层流媒体数据块 时, 根据预先保存的配置参数确定应用层流媒体数据块的源格式以及目标格 式;
需要说明的是, 流媒体服务器可以根据自定义的套接字 (Socket )或已定 义的套接字, 向流媒体数据封装设备发送配置参数, 以源格式为 TS文件或 TS 流, 目标格式为 TS/UDP报文为例, 所述已定义的套接字可采用传统 UDP报 文类型的套接字, 作为示例而非限定, 其中一种具体的实施方式中, 可通过自 定义的套接字选项或者已定义的套接字选项, 向流媒体数据封装设备发送所述 配置参数, 例如, 可定义一个 SOL— UDP 层或 SOL— SOCKET 层的选项 SO— MEDIA, 同时定义配置参数数据结构及其指针, 通过函数 setsockopt向所 述流媒体数据封装设备发送所述配置参数; 在另一种具体的实施方式中, 对所 述配置参数中每个需要配置的参数选项定义一个配置选项,使用函数 setsockopt 向流媒体数据封装设备发送所述配置参数, 例如, 定义一个源格式是 TS文件 或 TS流, 目标格式是 TS/UDP的开关选项 SO MEDIA TS, 其中一种具体的
实施方式中, 该开关选项 SO— MEDIA— TS的值为布尔类型, 可以取值 Ture或 False, 取值为 Ture表示源格式为 TS格式, 目标格式为 TS/UDP, 流媒体数据 封装设备接收到 TS格式的应用层流媒体数据块后,将所述 TS格式的应用层流 媒体数据块分段封装成 TS格式的 UDP报文;也可以定义一个源格式配置选项 SO— MEDIA— SOURCE, 该 SO— MEDIA— SOURCE选项的值为枚举类型, 例如 该 SO— MEDIA— SOURCE 的 值 包 括 SO— MEDIA— SOURCE— TS , SO— MEDIA— SOURCE— Η.264等;
其中, 需要说明的是, 定义配置参数数据结构具体是指定义所述源格式标 识的数据结构以及、 所述目标格式标识的数据结构;
S407: 所述流媒体数据封装设备根据所述源格式确定每个数据包的大小; 例如, 若源格式为 TS文件或 TS流, 所述流媒体数据封装设备确定每个 TS包的大小为 188字节;
S408: 所述流媒体数据封装设备根据所述每个数据包的大小以及所述最大 整数数目, 将所述应用层流媒体数据块中的数据包分段封装成至少两个所述目 标格式的报文, 其中, 分段封装后的每个所述目标格式的报文包含整数个所述 源格式的数据包;
其中, 将所述应用层流媒体数据块中的数据包分段封装成至少两个所述目 标格式的报文的方式, 具体包括以下方式:
将所述应用层流媒体数据块中的数据包分为至少两个分段, 其中, 每个分 段包含的数据包的数目为整数且不大于所述最大整数数目; 将所述至少两个分 段分别封装成所述目标格式的报文;
例如, 源格式为 TS流或 TS文件, 目标格式为 TS/UDP, 则表明需把源格 式的 TS包封装成 TS格式的 UDP报文, 由于 TS包的大小为 188字节, MTU 的值为 1500字节, 因此, 一个 UDP报文最多能携带 7个 TS包, 可以按照不 大于 7个 TS包的分段方式对应用层流媒体数据块进行分段, 例如应用层流媒
体数据块包含 35个 TS包, 按每 5个 TS包分为一段的方式, 将该应用层流媒 体数据块分段封装成 7个 UDP报文, 每个 UDP报文的格式如下表所示:
又例如,源格式为 TS流或 TS文件,目标格式为 TS/RTP/UDPTS/RTP/UDP, 则表明需首先把多个源格式的 TS 包加上 RTP 头封装成 RTP ( Real-time Transport Protocol, 实时传输协议)格式的包, 再把 RTP格式的包加上 UDP 头封装成 UDP报文, 由于 TS包的大小为 188字节, UDP头占 8个字节, RTP 头占 12个字节, 因此, 一个 UDP报文最多能携带 7个 TS包, 可以按照不大 于 7个 TS 包的分段方式对应用层流媒体数据块进行分段, 例如按每 5个 TS 包分为一段的方式, 将分段后每个分段封装成 UDP报文, RTP格式的 UDP报 文与 TS格式的 UDP报文不同之处在于多了一个 RTP头, 如下表所示:
需要说明的是, 对于其他的目标格式, 可以采用类似的方式扩展流媒体数 据封装设备相应的功能, 作为示例而非限定, 源格式为 TS文件或 TS流, 目标 格式为 TS/TCP, 则按照类似的方式确定 TCP报文能够包含的 TS包的最大整 数数目, 并按照类似的方式对应用层流媒体数据块进行分段封装, 在此不再贅 述;
对于其他的源格式以及目标格式, 例如源格式为 H.264 , 目标格式为 H.264/RTPUDP, 可采用类似方式扩展流媒体数据封装设备相应的功能, 在此 不再赘述;
需要说明的是, 将应用层流媒体数据块中的数据包分为至少两个分段的方 式, 可以包括以下方式:
按照所述最大整数数目, 将所述应用层流媒体数据块中的数据包分为至少 两个分段, 例如, 在源格式为 TS文件或 TS流, 目标格式为 TS/RTP/ UDP时, 按每 7个 TS包为一段的方式, 对应用层流媒体数据块进行分段, 若应用层流
媒体数据块包含了 1400个 TS包, 则将该 1400个 TS包分为 200段,每段包含 7个 TS包, 将该 200个分段分别封装成 RTP格式的 UDP报文;
S409: 流媒体数据封装设备向客户端发送分段封装得到的每个所述目标格 式的报文;
其中, 需要说明的是, 流媒体数据封装设备向客户端发送分段封装得到的 每个目标格式的报文的方式, 可以具体包括以下方式:
按照预先保存的发送参数, 依次向所述客户端发送分段封装得到的每个所 述目标格式的报文, 其中, 所述发送参数包括发送速率以及发送时间间隔; 需要说明的是, 获取预先保存的发送参数之前, 所述流媒体数据封装设备 可以预先接收所述流媒体服务器发送的发送参数, 并保存所述发送参数;
需要说明的是, 可以在流媒体服务器通过套接字选项向流媒体数据封装设 备发送配置参数的同时, 向流媒体数据封装设备发送所述发送参数, 作为示例 而非限定, 若源格式为 TS文件或 TS流, 目标格式为 TS/UDP, 可以通过自定 义的套接字选项或者已定义的套接字选项, 向流媒体数据封装设备发送所述配 置参数以及所述发送参数,例如,可以定义一个 SOL— UDP层或 SOL— SOCKET 层的选项 SO— MEDIA, 同时定义配置参数数据结构以及发送参数数据结构,通 过函数 setsocketopt 向所述流媒体数据封装设备发送所述配置参数以及所述发 送参数; 在另一种具体的实施方式中, 对所述配置参数以及所述发送参数中每 个需要配置的参数选项定义一个配置选项, 使用函数 setsockopt向流媒体数据 封装设备发送所述配置参数以及发送参数,例如,发送参数包括两个参数选项, 即发送速率以及发送时间间隔, 对于发送参数则定义两个配置选项, 分别对于 发送速率以及发送时间间隔, 配置参数的情况与此类似, 在此不再贅述;
可选地, 所述发送参数还可以包括緩存区大小, 所述流媒体数据封装设备 按照所述緩存区大小设置緩存。
本发明实施例提供的方法实施例, 应用层流媒体数据块中数据包的数目大
于一个目标格式的报文能够包含的源格式的数据包的最大整数数目, 减少了流 媒体服务器与流媒体数据封装设备之间通信的次数, 降低了流媒体服务器的处 理负荷;其次,流媒体服务器向流媒体数据封装设备发送应用层流媒体数据块, 由流媒体数据封装设备对应用层流媒体数据块进行封装, 进一步降低了流媒体 服务器的处理负荷; 另外, 流媒体数据封装设备根据应用层流媒体数据块的源 格式以及目标格式, 对应用层流媒体数据块进行分段封装, 使得流媒体数据封 装设备可以自适应地对各种类型的应用层流媒体数据块进行封装; 再次, 通过 在应用层流媒体数据块中携带源格式标识以及目标格式标识, 使得流媒体数据 封装设备可以同时处理多种类型的应用层流媒体数据块; 此外, 通过预先保存 的配置参数获知应用层流媒体数据块的源格式以及目标格式, 可以进一步降低 流媒体服务器与流媒体数据封装设备之间的通信开销, 节省网络带宽; 进一步 地, 流媒体数据封装设备封装的目标格式的报文包含整数个源格式的数据包, 简化了封装处理的复杂度; 再进一步地, 流媒体数据封装设备按照目标格式的 报文能够包含的源格式的数据包的最大整数数目, 将应用层流媒体数据块中的 数据包进行分段, 使得封装后的每一个目标格式的报文包含最多的数据包, 减 少了流媒体数据封装设备与客户端之间的通信次数, 降低了流媒体数据封装设 备的处理负荷; 除此之外, 流媒体服务器根据流媒体业务的实时性, 确定应用 层流媒体数据块中数据包的数目, 保证了流媒体数据播放的连续性, 提升了用 户体验; 并且, 应用层流媒体数据块中数据包的数目为上述最大整数数目的整 数倍, 便于流媒体数据封装设备对应用层流媒体数据块进行分段封装处理, 简 化了封装处理的复杂度; 最后, 流媒体数据封装设备根据预先保存的发送参数 向客户端发送目标格式的报文, 使得流媒体数据封装设备可以自适应地向客户 端发送目标格式的报文, 从而保证能够满足业务的需求。 如图 5所示, 为本发明实施例提供的一种流媒体数据处理系统, 包括流媒 体服务器 501 , 流媒体数据封装设备 502, 其中,
所述流媒体服务器 501 , 用于确定应用层流媒体数据的源格式以及目标格 式, 根据所述源格式以及所述目标格式, 确定一个所述目标格式的报文能够包 含的所述源格式的数据包的最大整数数目后, 向所述流媒体数据封装设备 502 发送应用层流媒体数据块, 其中, 所述应用层流媒体数据块中数据包的数目大 于所述最大整数数目;
所述流媒体数据封装设备 502, 用于接收所述流媒体服务器 501发送的应 用层流媒体数据块, 确定所述应用层流媒体数据块的源格式以及目标格式, 根 据所述源格式确定所述应用层流媒体数据块中每个数据包的大小, 根据所述每 个数据包的大小以及所述最大整数数目, 将所述应用层流媒体数据块中的数据 包分段封装成至少两个所述目标格式的报文, 其中, 分段封装后的每个所述目 标格式的报文包含整数个所述源格式的数据包。
本发明实施例提供的一种流媒体数据处理系统, 应用层流媒体数据块中数 据包的数目大于一个目标格式的报文能够包含的源格式的数据包的最大整数 数目, 减少了流媒体服务器与流媒体数据封装设备之间通信的次数, 降低了流 媒体服务器的处理负荷; 其次, 流媒体服务器向流媒体数据封装设备发送应用 层流媒体数据块, 由流媒体数据封装设备对应用层流媒体数据块进行分段封装 处理, 进一步降低了流媒体服务器的处理负荷。 如图 6所示, 为本发明实施例提供的一种流媒体服务器, 所述流媒体服务 器可以应用于上述的流媒体数据处理系统, 所述流媒体服务器包括:
确定器 601 , 用于确定应用层流媒体数据的源格式以及目标格式; 所述确定器 601还用于根据所述源格式以及所述目标格式, 确定一个所述 目标格式的报文能够包含的所述源格式的数据包的最大整数数目;
发送器 602 , 用于向流媒体数据封装设备发送应用层流媒体数据块, 其中, 所述应用层流媒体数据块中数据包的数目大于所述确定器 601确定的最大整数 数目。
其中, 需要说明的是, 所述确定器 601还用于根据流媒体业务的实时性, 确定所述应用层流媒体数据块中数据包的数目。
需要进一步说明的是, 所述确定器 601具体用于根据流媒体数据的平均播 放速率以及发送所述应用层流媒体数据块的发送时间间隔, 确定所述应用层流 媒体数据块中数据包的数目。
需要说明的是, 所述发送器 602还用于向所述流媒体数据封装设备发送配 置参数, 所述配置参数包括源格式标识以及目标格式标识, 使得所述流媒体数 据封装设备根据所述配置参数将所述应用层流媒体数据块分段封装成至少两 个所述目标格式的报文。
需要说明的是, 所述发送器 602还用于向所述流媒体数据封装设备发送发 送参数, 所述发送参数包括发送速率以及发送时间间隔, 使得所述流媒体数据 封装设备根据所述发送参数, 依次向客户端发送分段封装得到的每个所述目标 格式的报文。
需要说明的是, 所述确定器 601还用于根据所述最大整数数目, 确定每次 读取应用层流媒体数据的读数据包数目;
贝' J , 所述服务器还包括:
数据读取器, 用于按照所述确定器 602确定的读数据包数目, 读取应用层 流媒体数据。
需要说明的是, 所述确定器 601确定的读数据包数目可以大于所述最大整 数数目。
本发明实施例提供的一种流媒体服务器, 发送器向流媒体数据封装设备发 送的应用层流媒体数据块中数据包的数目大于一个目标格式的报文能够包含 的源格式的数据包的最大整数数目, 减少了流媒体服务器与流媒体数据封装设 备之间通信的次数, 降低了流媒体服务器的处理负荷; 其次, 发送器向流媒体 数据封装设备发送应用层流媒体数据块, 由流媒体数据封装设备对应用层流媒
体数据块进行分段封装处理, 进一步降低了流媒体服务器的处理负荷; 另外, 确定器根据流媒体业务的实时性, 确定应用层流媒体数据块中数据包的数目, 保证了流媒体数据播放的连续性, 提升了用户体验。 如图 7所示, 为本发明实施例提供的一种流媒体数据封装设备, 所述流媒 体数据封装设备可以应用于上述的流媒体数据处理系统, 所述流媒体数据封装 设备包括:
接收器 701 , 用于接收流媒体服务器发送的应用层流媒体数据块; 确定器 702, 用于确定所述接收器 701接收到的应用层流媒体数据块的源 格式以及目标格式, 其中, 所述接收器接收到的应用层流媒体数据块中数据包 的数目大于一个所述目标格式的报文能够包含的所述源格式的数据包的最大 整数数目;
所述确定器 702还用于根据所述源格式确定每个数据包的大小; 分段封装器 703 , 用于根据所述确定器 702确定的每个数据包的大小以及 所述最大整数数目, 将所述接收器 701接收到的应用层流媒体数据块中的数据 包分段封装成至少两个所述目标格式的报文, 其中, 分段封装后的每个所述目 标格式的报文包含整数个所述源格式的数据包。
其中, 需要说明的是, 所述分段封装器 703包括:
分段器, 用于根据所述确定器 702确定的每个数据包的大小以及所述最大 整数数目, 将所述应用层流媒体数据块中的数据包分为至少两个分段, 其中, 每个分段包含的数据包的数目为整数且不大于所述最大整数数目;
封装器, 用于将所述分段器分段得到的至少两个分段分别封装成所述目标 格式的报文。
需要说明的是, 所述分段器具体用于按照所述最大整数数目, 将所述应用 层流媒体数据块中的数据包分为至少两个分段。
需要说明的是, 所述接收器 701具体用于接收所述流媒体服务器发送的应
用层流媒体数据块, 所述应用层流媒体数据块中数据包的数目为所述最大整数 数目的整数倍。
需要进一步说明的是, 所述接收器 701具体用于接收所述流媒体服务器发 送的应用层流媒体数据块, 其中, 所述流媒体服务器根据业务的实时性, 确定 所述应用层流媒体数据块中数据包的数目, 其中一种具体的实施方式中, 所述 流媒体服务根据流媒体数据的平均播放速率以及发送所述应用层流媒体数据 块的发送时间间隔, 确定所述应用层流媒体数据块中数据包的数目。
需要说明的是, 所述确定器 702具体用于根据所述接收器 701接收到的应 用层流媒体数据块携带的源格式标识以及目标格式标识, 确定所述应用层流媒 体数据块的源格式以及目标格式。
需要说明的是,所述确定器 702还可以具体用于根据预先保存的配置参数, 确定所述接收器 701接收到的应用层流媒体数据块的源格式以及目标格式, 其 中, 所述配置参数包括所述应用层流媒体数据块的源格式标识以及目标格式标 识。
需要进一步说明的是, 所述接收器 701还用于预先接收所述流媒体服务器 发送的的配置参数;
贝' J , 所述设备还包括:
第一存储器, 用于保存所述接收器 701接收到的配置参数。
需要说明的是, 所述设备还包括:
发送器, 用于向客户端发送所述分段封装器 703封装得到的每个目标格式 的报文。
需要说明的是, 所述发送器具体用于按照预先保存的发送参数, 依次向所 述客户端发送所述分段封装器 703封装得到的每个目标格式的报文, 其中, 所 述发送参数包括发送速率以及发送时间间隔。
需要进一步说明的是, 所述接收器 701还用于预先接收所述流媒体服务器
贝' J , 所述设备还包括:
第二存储器, 用于保存所述接收器 701接收到的发送参数。
本发明实施例提供的一种流媒体数据处理方法、 装置及系统, 应用层流媒 体数据块中数据包的数目大于一个目标格式的报文能够包含的源格式的数据 包的最大整数数目, 减少了流媒体服务器与流媒体数据封装设备之间通信的次 数, 降低了流媒体服务器的处理负荷; 其次, 流媒体服务器向流媒体数据封装 设备发送应用层流媒体数据块, 由流媒体数据封装设备对应用层流媒体数据块 进行封装, 进一步降低了流媒体服务器的处理负荷; 另外, 流媒体数据封装设 备根据应用层流媒体数据块的源格式以及目标格式, 对应用层流媒体数据块进 行分段封装, 使得流媒体数据封装设备可以自适应地对各种类型的应用层流媒 体数据块进行封装; 再次, 通过在应用层流媒体数据块中携带源格式标识以及 目标格式标识, 使得流媒体数据封装设备可以同时处理多种类型的应用层流媒 体数据块; 此外, 通过预先保存的配置参数获知应用层流媒体数据块的源格式 以及目标格式, 可以进一步降低流媒体服务器与流媒体数据封装设备之间的通 信开销, 节省网络带宽; 进一步地, 流媒体数据封装设备封装的目标格式的报 文包含整数个源格式的数据包, 简化了封装处理的复杂度; 再进一步地, 流媒 体数据封装设备按照目标格式的报文能够包含的源格式的数据包的最大整数 数目, 将应用层流媒体数据块中的数据包进行分段, 使得封装后的每一个目标 格式的报文包含最多的数据包, 减少了流媒体数据封装设备与客户端之间的通 信次数, 降低了流媒体数据封装设备的处理负荷; 除此之外, 应用层流媒体数 据块中数据包的数目为上述最大整数数目的整数倍, 便于流媒体数据封装设备 对应用层流媒体数据块进行分段封装处理, 简化了封装处理的复杂度; 并且, 流媒体服务器根据流媒体业务的实时性, 确定应用层流媒体数据块中数据包的 数目, 保证了流媒体数据播放的连续性, 提升了用户体验; 进一步地, 流媒体
服务器根据根据流媒体数据的平均播放速率以及发送所述应用层流媒体数据 块的发送时间间隔, 向流媒体数据封装设备发送应用层流媒体数据块, 使得能 够满足实时业务的需求; 最后, 流媒体数据封装设备根据预先保存的发送参数 向客户端发送目标格式的报文, 使得流媒体数据封装设备可以自适应地向客户 端发送目标格式的报文, 从而保证能够满足业务的需求。
通过以上实施方式的描述, 本领域技术人员可以清楚地了解到各实施方式 可以借助软件加必需的通用硬件平台的方式来实现, 也可以通过专门的硬件来 实现。 基于这样的理解, 上述技术方案本质上或者说对现有技术做出贡献的部 分可以以软件产品的形式体现出来, 该计算机软件产品可以存储在计算机可读 存储介质中, 如 ROM/RAM、 磁盘、 光盘等, 包括若干指令用以使得一台计算 机设备(可以是个人计算机, 服务器, 网络设备, 或者各种手持终端)执行各 个实施例或者实施例的某些部分所述的方法。
总之, 以上所述仅为本发明技术方案的较佳实施例而已, 并非用于限定本 发明的保护范围。凡在本发明的精神和原则之内, 所作的任何修改、等同替换、 改进等, 均应包含在本发明的保护范围之内。