CN103959796A - 数字视频码流的解码方法拼接方法和装置 - Google Patents

数字视频码流的解码方法拼接方法和装置 Download PDF

Info

Publication number
CN103959796A
CN103959796A CN201280002009.5A CN201280002009A CN103959796A CN 103959796 A CN103959796 A CN 103959796A CN 201280002009 A CN201280002009 A CN 201280002009A CN 103959796 A CN103959796 A CN 103959796A
Authority
CN
China
Prior art keywords
parameter set
video
parameter
vcl nalu
modified
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201280002009.5A
Other languages
English (en)
Other versions
CN103959796B (zh
Inventor
张园园
杨晓峰
石腾
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Publication of CN103959796A publication Critical patent/CN103959796A/zh
Application granted granted Critical
Publication of CN103959796B publication Critical patent/CN103959796B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/80Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
    • H04N21/83Generation or processing of protective or descriptive data associated with content; Content structuring
    • H04N21/84Generation or processing of descriptive data, e.g. content descriptors
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/234Processing of video elementary streams, e.g. splicing of video streams, manipulating MPEG-4 scene graphs
    • H04N21/23424Processing of video elementary streams, e.g. splicing of video streams, manipulating MPEG-4 scene graphs involving splicing one content stream with another content stream, e.g. for inserting or substituting an advertisement

Abstract

本申请实施例提供数字视频码流的解码方法、数字视频码流的拼接方法和装置,通过第一视频的参数集标识修改消息中包含第一视频的参数集标识ID修改信息,以便终端根据参数集标识ID修改信息解码输出第一视频。不但当终端在解码第一视频码流时,能够保证使用正确的参数集,而且不需要在现有网络的拼接器上增加额外的硬件资源,或者使用新的拼接器对现有网络中的拼接器进行替换,相比于现有技术中所需的运营成本更少。

Description

数字视频码流的解码方法拼接方法和装置
技术领域 本申请涉及数字视频拼接技术, 尤其涉及数字视频码流的解码方法、 拼 接方法和装置。 背景技术
码流拼接技术具有广泛的应用场景。 比如, 运营商可以根据用户偏好选 择个性化广告,通过码流拼接技术将节目中的普遍性广告替换成个性化广告, 提高广告的命中率和收视效果, 从而提高用户体验和运营商营收。
在视频编码中, 一段视频内容可以划分为一个或多个编码的视频序列 ( CVS: Coded Video Sequence ); 一个 CVS包含多个图片 ( Picture ); 一个 图片又可以划分成一个或多个片 (Slice ) ; 同一时刻的一个或多个编码的图 片称为一个访问单元(AU: Access Unit) 。 编码器对视频内容编码后, 输出的视频码流以网络抽象层单元( NALU:
Network Abstraction Layer Unit)为单位组成。 NALU分为两类: 视频编码层 ( VCL: Video Coding Layer) NALU和非 VCL NALU。其中一个 VCL NALU 中是一个编码片 (coded slice ) , 因此通常也称为编码片 NALU; 而非 VCL NALU中是元数据和附加信息。 非 VCL NALU又可以分为: 参数集 NALU: 用于封装参数集的 NALU, 补充增强信息 (SEI: Supplemental Enhancement Information ) NALU: 用于封装 SEI消息的 NALU等。 其中参数集 NALU中 包含参数集以及该参数集对应的参数集标识 (ID: Identifier ) , 如果该参数 集还引用了其他的参数集,则该参数集中还包含弓 I用参数集对应的参数集 ID。
参数集包含被多个 VCL NALU共享的头信息, 如档次(profile )和层级 ( level )信息、 视频色彩格式信息、 视频分辨率信息等等。 参数集可以分为 多种类型, 不同类型的参数集包含不同类型的共享头信息。 一个视频码流可 以包含一个或多个同一类型的参数集。 一个参数集包含一个参数集 ID, 并且 参数集 ID的取值在一个码流的同一类型的参数集中是唯一的。将共享头信息 放到参数集后, 相应的 VCL NALU通过参数集 ID引用参数集中的头信息。 参数集由视频编码标准 H.264引入,并被之后的视频编码标准广泛使用。 引入参数集的目的是为了头信息的鲁棒(robust )和高效传输。 引入参数集后, 被多个 VCL NALU共享的头信息只需要传输一次, 因此提高了传输效率。
不同的视频编码标准定义的参数集不同。 H.264 标准定义的参数集有: 序列参数集( SPS: Sequence Parameter Set )和 PPS。动态图片专家组( MPEG: Moving Pictures Experts Group ) 正在制定的高效视频编码 (HEVC : High Efficiency Video Coding )标准定义的参数集除了 SPS和 PPS夕卜, 还包括视频 参数集 ( VPS: Video Parameter Set )、自适应参数集 ( APS: Adaptation Parameter Set )两种参数集, MPEG正在制定的三维视频编码( 3DVC: Three-Dimensional Video Coding )标准定义的参数集除了 SPS和 PPS夕卜, 还包括深度范围参数 集 ( DRPS: Depth Range Parameter Set ) 。 但不同的视频编码标准定义的参数集都可以分为两类: 视频码流中 VCL NALU直接引用的参数集和 VCL NALU间接引用的参数集。 如果参数集是 VCL NALU直接引用的参数集, VCL NALU中包含该参数集的参数集 ID; 如果参数集是 VCL NALU间接引用的参数集, VCL NALU中不包含该参数 集的参数集 ID, 而是在 VCL NALU的直接引用的参数集或者间接引用的参 数集中包含该参数集的参数集 ID。
在视频拼接技术中, 码流( Bitstream )拼接技术为拼接器分别接收第一 视频码流(比如个人性广告内容等 )和第二视频码流(比如终端请求观看的 节目等) 。 拼接器在为终端输出第二视频码流的过程中, 在拼接时段把第一 视频码流发送给终端, 在其他时段将第二视频码流发给终端。 第二视频和第一视频使用不同编码器 (第二编码器, 第一编码器)独立编 码。 由于参数集标识(ID: Identifier )采用熵编码, 参数集 ID的值越小, 表 示参数集 ID所需的比特数越少, 因此编码器分配参数集 ID时, 往往从 0值 开始分配。 因此两个编码器给同一类型的参数集分配的参数集 ID可能相同。 第二视频码流与第一视频码流中同一类型参数集的参数集 ID相同,则输出视 频码流中的参数集 ID不能唯一标识一个参数集。当参数集采用带外传输方式 时, 会导致解码时使用错误的参数集, 从而导致解码错误。 比如, 一个第一 视频的视频编码层( VCL: Video Coding Layer )的网络抽象层单元( NALU: network Abstraction Layer Unit ) 中的图片参数集 ( PPS: Picture Parameter Set ) ID与第二视频的某个 PPS的 PPS ID相同,解码器可能使用该第二视频的 PPS 对该第一视频 VCL NALU进行解码, 从而导致解码错误。
为了解决上述问题,现有技术由拼接器对第一视频码流中的参数集 ID进 行修改, 保证输出视频码流中参数集 ID的唯一性。 终端接收输出视频码流, 对各 VCL NALU进行解码, 根据其中的参数集 ID从通过带外方式获得的参 数集中获取 VCL NALU引用的的参数集, 使用这些参数集对 VCL NALU进 行解码。
如前所述, 由于参数集 ID采用熵编码, 因此现有技术要求拼接器具备熵 解码和熵编码能力。而现有网络中的拼接器通常不具备熵解码和熵编码能力, 熵解码和熵编码操作需要较多的计算资源和存储资源,而参数集 ID在视频码 流中的出现非常频繁, 即拼接器需要进行频繁的熵解码和熵编码操作。 因此 为了让拼接器具备熵解码和熵编码能力, 需要在现有网络中的拼接器上增加 额外的硬件资源, 或者使用新的拼接器对现有网络中的拼接器进行替换, 从 而给运营商额外增加很多运营成本。 发明内容
本发明提出一种数字视频码流的解码、 拼接方法和装置, 不但当终端在 解码第一视频码流时, 能够保证使用正确的参数集, 而且不需要在现有网络 的拼接器上增加额外的硬件资源, 或者使用新的拼接器对现有网络中的拼接 器进行替换, 相比于现有技术中所需的运营成本更少。
本发明实施例第一方面提供一种数字视频码流的解码方法,包括:接收 第一视频码流和第一视频的参数集标识修改消息,所述第一视频的参数集标 识修改消息中包含第一视频的参数集标识 ID修改信息;根据所述第一视频的 参数集 ID修改信息获取用于解码网络抽象层单元的视频编码层 VCL NALU 的参数集的参数集 ID;根据所述用于解码 VCL NALU的参数集的参数集 ID获 取用于解码所述 VCL NALU的参数集;根据所述用于解码 VCL NALU的参数 集解码所述 VCL NALU ,并输出解码后的第一视频。 结合本发明实施例第一方面的第一实现方式,所述参数集 ID修改信息包 括待修改的参数集 ID的参数集类型和与所述待修改的参数集 ID的参数集类 型对应的原参数集 ID的偏移;所述第一视频码流中包含用于解码所述 VCL NALU的参数集的原参数集 ID;所述根据所述第一视频的参数集 ID修改信息 获取用于解码 VCL NALU的参数集的参数集 ID具体为 :根据所述待修改的 参数集 ID的参数集类型从所述第一视频码流中获取与所述待修改的参数集 ID的参数集类型对应的所述原参数集 ID;根据所述原参数集 ID以及与所述待 修改的参数集 ID的参数集类型对应的原参数集 ID的偏移获取与所述待修改 的参数集 ID的参数集类型对应的用于解码 VCL NALU的参数集的参数集 结合本发明实施例第一方面的第二实现方式,所述参数集 ID修改信息包 括待修改的参数集 ID的参数集类型和用于解码 VCL NALU的参数集的参数 集 ID;所述根据所述第一视频的参数集 ID修改信息获取所述用于解码 VCL NALU的参数集的参数集 ID具体为 :根据所述待修改的参数集 ID的参数集 类型从所述参数集 ID修改信息中获取与所述待修改的参数集 ID的参数集类 型对应的用于解码 VCL NALU的参数集的参数集 ID。
合本发明实施例第一方面的第三实现方式,所述参数集 ID修改信息包括 待修改的参数集 ID的参数集类型的原参数集 ID, 以及与所述原参数集 ID对 应的用于解码 VCL NALU的参数集的参数集 ID;
所述根据所述第一视频的参数集 ID修改信息获取所述用于解码 VCL
NALU的参数集的参数集 ID具体为 :根据所述待修改的参数集 ID的参数集 类型对应的原参数集 ID获取所述原参数集 ID对应的用于解码 VCL NALU的 参数集的参数集 ID。
本发明实施例第一方面的第四实现方式,所述第一视频参数集 ID修改信 息为待修改的参数集 ID的参数集类型, 该方法进一步包括: 向拼接器发送实 时传输控制协议 RTCP请求,所述 RTCP请求包含所述待修改参数集 ID的参 数集类型;接收所述拼接器返回的 RTCP响应, 所述 RTCP响应中携带与待修 改的参数集 ID的参数集类型对应的原参数集 ID的偏移或与待修改的参数集 ID的参数集类型对应的用于解码 VCL NALU的参数集的参数集 ID, 或者与 待修改的参数集 ID的参数集类型的所述原参数集 ID以及与所述原参数集 ID 对应的用于解码 VCL NALU的参数集的参数集 ID;所述根据所述第一视频的 参数集 ID修改信息获取所述用于解码 VCL NALU的参数集的参数集 ID具体 为 :根据所述 RTCP响应中携带的与待修改的参数集 ID的参数集类型对应的 原参数集 ID的偏移或与待修改的参数集 ID的参数集类型对应的用于解码 VCL NALU的参数集的参数集 ID, 或者根据与待修改的参数集 ID的参数集 类型的原参数集 ID以及与原参数集 ID对应的用于解码 VCL NALU的参数集 的参数集 ID ,从所述参数集 ID修改信息中获取与所述待修改的参数集 ID的 参数集类型对应的用于解码 VCL NALU的参数集的参数集 ID。
结合本发明的任意实现方式的第一可能,所述根据所述用于解码 VCL NALU的参数集的参数集 ID获取用于解码所述 VCL NALU的参数集之前该 方法进一步包括:通过带外方式获取第一视频的修改后的参数集, 所述修改 后的参数集中的参数集 ID为用于解码 VCL NALU的参数集的参数集 ID; 或 通过带外方式获取第一视频的原参数集以及用于解码 VCL NALU的参数集的 参数集 ID,所述第一视频的原参数集中携带所述原参数集 ID; 根据所述用于 解码 VCL NALU的参数集的参数集 ID修改所述原参数集 ID。
结合本发明的任意实现方式的第二可能,所述待修改的参数集 ID的参数 集类型为 VCL NALU直接引用的参数集类型,所述根据所述第一视频的参数 集 ID修改信息获取用于解码 VCL NALU的参数集的参数集 ID具体为 :获取 与所述 VCL NALU直接引用的参数集类型对应的用于解码 VCL NALU的 VCL NALU直接引用的参数集的参数集 ID ,该方法进一步包括:根据获取的 用于解码 VCL NALU的 VCL NALU直接引用的参数集的参数集 ID获取所述 第一视频码流中 VCL NALU直接引用的参数集;从所述直接引用的参数集中 获取用于解码 VCL NALU的 VCL NALU间接引用的参数集的参数集 ID;或, 所述待修改的参数集 ID的参数集类型为所述 VCL NALU直接引用的参数集 类型和所述 VCL NALU间接引用的参数集类型,所述根据所述第一视频的参 数集 ID修改信息获取用于解码 VCL NALU的参数集的参数集 ID具体为 :分 别根据所述第一视频的参数集 ID修改信息获取与所述 VCL NALU直接引用 的参数集类型对应的用于解码 VCL NALU的 VCL NALU的直接引用的参数 集的参数集 ID ,以及获取与所述 VCL NALU间接引用的参数集类型对应的 用于解码 VCL NALU的 VCL NALU间接引用的参数集的参数集 ID;所述根据 所述用于解码 VCL NALU的参数集的参数集 ID获取用于解码所述 VCL NALU的参数集具体为 :根据获取的直接引用的参数集的参数集 ID以及间接 引用的参数集的参数集 ID获取所述 VCL NALU的直接引用的参数集以及所 述 VCL NALU的间接引用的参数集;
所述根据所述用于解码 VCL NALU的参数集解码所述 VCL NALU ,并 输出解码后的第一视频具体为 :根据获取的所述 VCL NALU的直接引用的参 数集以及所述 VCL NALU的间接引用的参数集解码所述 VCL NALU,并输出 解码后的第一视频。
本发明实施例第二方面还提供了一种数字视频码流的拼接的方法,包括: 从应用服务器接收第一视频码流的信息,所述第一视频码流的信息包括第一 视频的参数集修改信息;根据所述第一视频参数集修改信息向终端发送第一 视频码流和第一视频的参数集标识修改消息, 所述第一视频的参数集标识修 改消息携带第一视频的参数集标识 ID修改信息,以便于终端根据第一视频的 参数集 ID修改信息获取用于解码网络抽象层单元的视频编码层 VCL NALU 的参数集的参数集 ID,以及终端根据所述用于解码 VCL NALU的参数集的参 数集 ID获取用于解码 VCL NALU的参数集,以及终端根据所述用于解码 VCL NALU的参数集解码所述 VCL NALU ,并输出解码后的第一视频。
结合本发明实施例第二方面的第一实现方式,第一视频的参数集 ID修改 信息为待修改的参数集 ID的参数集类型,该方法进一步包括:接收终端发送 的实时传输控制协议 RTCP请求, 所述 RTCP请求包含所述待修改参数集 ID 的参数集类型;向终端返回 RTCP响应, 所述 RTCP响应中携带与所述待修改 的参数集 ID的参数集类型对应的原参数集 ID的偏移、 或携带与所述待修改 的参数集 ID的参数集类型对应的用于解码 VCL NALU的参数集的参数集 ID、 或者携带与待修改的参数集 ID的参数集类型的所述原参数集 ID以及与 所述原参数集 ID对应的用于解码 VCL NALU的参数集的参数集 ID。
结合本发明实施例第二方面的第二实现方式,所述参数集 ID修改信息包 括待修改的参数集 ID的参数集类型和与所述待修改的参数集 ID的参数集类 型对应的原参数集 ID的偏移,或包括所述待修改的参数集 ID的参数集类型 和用于解码 VCL NALU的参数集的参数集 ID ,或包括待修改的参数集 ID的 参数集类型的所述原参数集 ID以及与所述原参数集 ID对应的用于解码 VCL NALU的参数集的参数集 ID ,所述参数集 ID修改信息进一步包含修改生效 标志,所述根据所述用于解码 VCL NALU的参数集的参数集 ID获取用于解 码所述 VCL NALU的参数集之前,该方法进一步包括:向终端发送所述第二 视频码流的时发送不生效的第一视频的参数集标识修改消息;接收终端发送 的第二媒体描述信息获取请求;向终端返回第二媒体描述信息获取响应,所述 第二媒体描述信息获取响应中携带第一视频的修改后的参数集,所述第一视 频的修改后的参数集中的参数集 ID为用于解码 VCL NALU的参数集的参数 集 ID。
本发明实施例第三方面提供了一种数字视频码流的拼接方法,包括:接 收第一内容服务器发送的第一视频的媒体描述信息, 所述第一视频的媒体描 述信息携带第一视频的原参数集和第一视频的参数集的类型及与各类型对应 的参数集的原参数集 ID;接收第二内容服务器发送的第二视频的媒体描述信 息, 所述第二视频的媒体描述信息中携带第二视频的参数集第二视频参数集 的类型及与各类型对应的参数集的参数集 ID;确定同一类型的第一视频的参 原参数集 ID与第二视频的参数集的参数集 ID相同, 以及确定第一视频的参 数集标识修改信息;向拼接器发送第一视频流的信息,所述第一视频码流的信 息包括第一视频的参数集标识修改信息,所述第一视频的参数集修改标识信 息携带在第一视频的参数集标识修改消息中,以便于拼接器将所述第一视频 的参数集标识修改消息发送给终端,以及以便于终端根据所述第一视频的参 数集标识修改消息解码并输出第一视频。
本发明实施例第四方面提供了一种数字视频码流的解码装置包括:接收 模块,用于接收第一视频码流和第一视频的参数集标识修改消息,所述第一 视频的参数集标识修改消息中包含第一视频的参数集标识 ID修改信息;第一 获取模块,用于根据所接收模块接收的所述第一视频的参数集 ID修改信息获 取用于解码网络抽象层单元的视频编码层 VCL NALU的参数集的参数集 ID; 第二获取模块,用于根据所述第一获取模块获取的用于解码 VCL NALU的参 数集的参数集 ID获取用于解码所述 VCL NALU的参数集;解码输出模块,用 于根据所述第二获取模块获取的所述用于解码 VCL NALU的参数集解码所 述 VCL NALU ,并输出解码后的第一视频。
结合本发明实施例第四方面的第一实现方式,所述参数集 ID修改信息包 括待修改的参数集 ID的参数集类型和与所述待修改的参数集 ID的参数集类 型对应的原参数集 ID的偏移;所述第一视频码流中包含用于解码所述 VCL NALU的参数集的原参数集 ID;所述第一获取模块具体用于:根据所述接收模 块接收的所述待修改的参数集 ID的参数集类型从所述第一码流中获取与所 述待修改的参数集 ID的参数集类型对应的所述原参数集 ID;根据所述原参数 集 ID以及所述待修改的参数集 ID的参数集类型对应的原参数集 ID的偏移从 获取与所述待修改的参数集 ID的参数集类型对应的用于解码 VCL NALU的 参数集的参数集 ID。
结合本发明实施例第四方面的第二实现方式,所述参数集 ID修改信息包 括待修改的参数集 ID的参数集类型和用于解码 VCL NALU的参数集的参数 集 ID ,所述第一获取模块具体用于:根据所述接收模块接收的待修改的参数 集 ID的参数集类型从所述参数集 ID修改信息中获取与所述待修改的参数集 ID的参数集类型对应的用用于解码 VCL NALU的参数集的参数集 ID。
合本发明实施例第四方面的第三实现方式,所述参数集 ID修改信息为待 修改的参数集 ID的参数集类型的原参数集 ID、与所述原参数集 ID对应的用 于解码 VCL NALU的参数集的参数集 ID;所述第一获取模块具体用于:根据 所述接收模块接收的所述待修改的参数集 ID的参数集类型对应的所述原参 数集 ID获取所述原参数集 ID对应的用于解码 VCL NALU的参数集的参数集 ID。
本发明实施例第五方面提供了一种数字视频码流的拼接装置,包括: 接收模块,用于从应用服务器接收第一视频码流的信息,所述第一视频 码流信息包括第一视频的参数集修改信息;发送模块,用于根据所述接收模块 接收的所述第一视频参数集修改信息向终端发送第一视频码流和第一视频的 参数集标识修改消息, 所述第一视频的参数集标识修改消息携带第一视频的 参数集标识 ID修改信息,以便于终端根据第一视频的参数集 ID修改信息获 取用于解码网络抽象层单元的视频编码层 VCL NALU的参数集的参数集 ID , 以及终端根据所述用于解码 VCL NALU的参数集的参数集 ID获取用于解码 所述 VCL NALU的参数集,以及终端根据所述用于解码 VCL NALU的参数 集解码所述 VCL NALU ,并输出解码后的第一视频。
本发明实施例第五方面提供了一种数字视频码流的拼接装置,包括: 第一接收模块, 用于接收第一内容服务器发送的第一视频的媒体描述信 息, 所述第一视频的媒体描述信息携带第一视频的原参数集和第一视频的参 数集的类型及与各类型对应的参数集的原参数集 ID;第二接收模块,用于接收 第二内容服务器发送的第二视频的媒体描述信息, 所述第二视频的媒体描述 信息中携带第二视频的参数集、 第二视频参数集的类型及与各类型对应的参 数集的参数集 ID;确定模块,用于确定同一类型的所述第一接收模块接收的第 一视频的原参数集 ID与所述第二接收模块接收的第二视频参数集 ID相同, 以及确定第一视频的参数集标识修改信息;发送模块, 用于向拼接器发送第一 视频流的信息,所述第一视频码流的信息包括第一视频的参数集修改信息, 所述第一视频的参数集修改信息携带在第一视频的参数集标识修改消息中, 以便于拼接器将所述第一视频的参数集标识修改消息发送给终端,以及以便 于终端根据所述第一视频的参数集标识修改消息解码并输出第一视频。
由以上实施例可知, 通过第一视频的参数集标识修改消息中包含第一视 频的参数集标识 ID修改信息,以便终端根据参数集标识 ID修改信息解码输 出第一视频,从而无需拼接器对第一视频码流的各 VCL NALU中的参数集 ID 进行修改,不但当终端在解码第一视频码流时, 能够保证使用正确的参数集, 而且不需要在现有网络的拼接器上增加额外的硬件资源, 或者使用新的拼接 器对现有网络中的拼接器进行替换,相比于现有技术中所需的运营成本更少。 附图说明 为了更清楚地说明本申请实施例或现有技术中的技术方案, 下面将对实 施例或现有技术描述中所需要使用的附图作一简单地介绍, 显而易见地, 下 面描述中的附图是本申请的一些实施例, 对于本领域普通技术人员来讲, 在 不付出创造性劳动性的前提下, 还可以根据这些附图获得其他的附图。
图 1 为本发明实施例提供的典型数字视频码流的拼接的网络系统架构 图;
图 2为本发明实施例提供的输出视频码流与第二视频码流、 第一视频码 流的关系示意图;
图 3为本发明实施例提供的遵循 HEVC标准的视频码流的 VCL NALU 与参数集之间引用的示意图; 图 4为本发明实施例提供的数字视频码流的解码方法的流程图; 图 5为本发明实施例提供的数字视频码流的拼接方法的流程图; 图 6为本发明实施例提供的另一数字视频码流的拼接方法的流程图; 图 7为本发明实施例还提供的另一数字视频码流的拼接方法的流程图; 图 8为本发明实施例提供的实时传输控制协议参数集标识修改信息请求
( RTCP PSIC-R: Real-time Transport Control Protocol Parameter Set ID Change - Request ) 消息的结构示意图;
图 9 为本发明实施例提供的反馈控制信息 (FCI : Feedback Control Information ) 的结构示意图;
图 10为本发明实施例提供的另一反馈控制信息 ( FCI: Feedback Control
Information ) 的结构示意图;
图 11为本发明实施例提供的又一反馈控制信息 (FCI: Feedback Control Information ) 的结构示意图;
图 12为本发明实施例提供的又一反馈控制信息 (FCI: Feedback Control Information ) 的结构示意图;
图 13为本发明实例提供的数字视频码流的拼接方法的流程图;
图 14为本发明实例提供的数字视频码流的拼接方法的流程图;
图 15为本发明实施例提供的数字视频码流的解码装置的结构示意图; 图 16为本发明实施例提供的数字视频码流的拼接装置的结构示意图; 图 17为本发明实施例提供的数字视频码流的拼接装置的结构示意图; 图 18 为本发明实施例提供的数字视频码流的解码装置或拼接装置的结 构示意图。 具体实施方式 为使本申请实施例的目的、 技术方案和优点更加清楚, 下面将结合本申 请实施例中的附图, 对本申请实施例中的技术方案进行清楚、 完整地描述, 显然, 所描述的实施例是本申请一部分实施例, 而不是全部的实施例。 基于 本申请中的实施例, 本领域普通技术人员在没有作出创造性劳动前提下所获 得的所有其他实施例, 都属于本申请保护的范围。
另外, 本文中术语"和 /或", 仅仅是一种描述关联对象的关联关系, 表示 可以存在三种关系, 例如, A和 /或 可以表示: 单独存在 , 同时存在 A 和 单独存在 B这三种情况。 另外, 本文中字符" /", 一般表示前后关联对 象是一种"或"的关系。 图 1为本发明实施例提供的典型的码流拼接系统架构图, 主要包括第二 编码器、 第一编码器、 第二内容服务器, 第一内容服务器、 拼接器、 路由器 和终端。 其中, 第二编码器和第二内容服务器连接, 第二内容服务器将由第 二编码器输出的视频码流作为第二视频码流提供给拼接器。 第一编码器和第一内容服务器连接, 第一内容服务器将由第一编码器输 出的视频码流作为第一视频码流提供给拼接器。 拼接器: 分别从第二内容服务器和第一内容服务器接收第二视频码流和 第一视频码流。 在拼接时段, 把第一视频码流发送给终端, 在其他时段将第 二视频码流发给终端。 本发明实施例将拼接器发送给终端的视频码流(包含 第二视频码流和第一视频码流)统称为输出视频码流。参考为本发明实施例 提供的输出视频码流与第二视频码流、 第一视频码流的关系示意图即图 2。 在拼接时段, 输出视频码流为第一视频码流; 在其他时段, 输出视频码流为 第二视频码流。 将拼接时段的起点即开始输出第一视频码流的时间点称为拼 接点; 将拼接时段的终点即结束输出第一视频码流的时间点称为返回点。 拼 接器通常位于互联网协议( IP , Internet Protocol )网络边缘的物理实体上, 比如路由器、 边缘媒体服务器。 这些物理实体通常不像编码器、 解码器一 样智能, 比如不像编码器、 解码器一样具备熵编码和 /或熵解码能力。 拼接 器和内容服务器可以位于同一物理实体上, 也可以位于不同物理实体上。 应用服务器: 分别接收第二内容服务器、 第一内容服务器发送的媒体 描述信息, 向终端发送用于解码输出视频码流的媒体描述信息 (媒体描述 信息中包含用于解码接收到的视频流的参数集及参数集 ID ) 。 路由器作为传输路由的设备。 终端根据接收到的应用服务器发送的媒体描述信息, 接收拼接器发送的 输出视频码流, 对输出视频码流进行解码并显示。 图 3为本发明实施例提供的遵循 HEVC标准的视频码流的 VCL NALU 与参数集之间引用的示意图。 如图 3所示, 视频码流遵循 HEVC标准, VPS、 SPS. PPS和 APS中分别包含该参数集对应的参数集 ID,即分别包含 VPS ID、 SPS ID、 PPS ID和 APS ID。 PPS、 APS为 VCL NALU直接引用的参数集, PPS , APS 中包含的参数可以被同一或多个图片的所有编码片 NALU (即 VCL NALU )直接引用,其中每一个 VCL NALU中都包含 PPS ID和 APS ID。 SPS , VPS为 VCL NALU间接引用的参数集, SPS中包含的参数可以被一个 或多个 PPS引用, 因此 PPS中还包含 SPS ID, 相应 VCL NALU通过 PPS间 接引用 SPS; VPS中包含的参数可以被一个或多个 SPS引用, 因此 SPS中还 包含 VPS ID, 相应 VCL NALU通过 PPS间接引用 SPS, 再通过 SPS间接引 用 VPS。 参数集 ID的值为无符号整数,并且大部分参数集 ID采用了熵编码, 比如采用无符号指数哥伦布编码。 采用熵编码的目的是为了提高编码效率, 熵编码的特点是, 编码得到的码字是变长的, 数值越小, 表示数值所需的比 特数越少。
应用服务器向终端传输参数集传输时, 需要保证位于终端的解码器在收 到 VCL NALU前, 先收到该 VCL NALU引用的参数集, 包括直接引用的参 数集和间接引用的参数集, 因此参数集通常通过带外方式传输。 比如, 将参 数集作为一种媒体描述信息, 在会话建立前或者在会话建立过程中, 发送给 终端。 如果会话当中, 参数集发生了更改, 则在会话更改过程中或者通过会 话中通知消息, 将参数集发送给终端。 参数集的封装格式有多种, 包括但不 限于会话描述协议( SDP: Session Description Protocol )的参数、 可扩展标记 语言 ( XML: Extensible Markup Language ) 的元素 ( element ) 。 参数集的发 送可以基于多种协议方法, 包括但不限于会话初始化协议 ( SIP : Session Initiation Protocol )邀倚( Invite )、 SIP重邀倚( Re-Invite )、 SIP更新( Update )、 SIP通知(Info ) 、 实时流传输协议( RTSP: Real Time Streaming Protocol ) 描述(Describe ) 、 RTSP通知(Notify ) 、 RTSP播放通知(Play-Notify ) 、 RTSP设置参数 ( Set Parameter ) 、 RTSP获取参数 ( Get Parameter ) 、 超文本 传输协议( HTTP: Hypertext Transfer Protocol )获取( Get )、 HTTP发送( Post ) 等协议方法其中之一。
图 4为本发明实施例提供的一种数字视频码流的解码方法, 包括如下步 骤:
步骤 401、 接收第一视频码流和第一视频的参数集标识修改消息,所述 第一视频的参数集标识修改消息中包含第一视频的参数集标识 ID修改信息; 具体的 ,终端接收拼接器发送的第一视频码流和第一视频的参数集标识 修改消息,所述参数集 ID修改信息包括待修改的参数集 ID的参数集类型和 与所述待修改的参数集 ID的参数集类型对应的原参数集 ID的偏移;所述第一 视频码流中包含用于解码网络抽象层单元的视频编码层 VCL NALU的参数集 的原参数集 ID。
作为另一种可选方式,终端接收拼接器发送的第一视频码流和第一视频 的参数集标识修改消息,所述参数集 ID修改信息包括待修改的参数集 ID的 参数集类型和用于解码 VCL NALU的参数集的参数集 ID。
作为另一种可选方式, 终端接收拼接器发送的第一视频码流和第一视频 的参数集标识修改消息, 所述参数集 ID修改信息包括待修改的参数集 ID的 参数集类型的所述原参数集 ID、 与所述原参数集 ID对应的用于解码 VCL NALU的参数集的参数集 ID。
所述第一视频的参数集标识修改消息是由拼接器和 /或按生成补充增强 SEI消息的方式生成的 SEI消息,具体为可以的参数集标识修改补充增强 SB 消息, 自适应参数集标识修改 SEI消息,图片参数集标识修改 SEI消息。 此 外,该 SEI消息还可以是别的类型的 SEI消息,本发明实施例在此不做限定。 所述第一视频的参数集标识修改消息与第一视频码流一起发送给终端。
步骤 402、 根据所述第一视频的参数集 ID修改信息获取用于解码 VCL NALU的参数集的参数集 ID (即用于解码所述第一视频码流中视频编码层的 网络抽象层单元 VCL NALU的参数集的参数集 ID ,也即修改后的参数集 ID。 本申请中如不另做说明 ,修改后的参数集 ID均指用于解码所述第一视频码流 中视频编码层的网络抽象层单元 VCL NALU的参数集的参数集 ID,即用于解 码 VCL NALU的参数集的参数集 ID );
具体的,终端根据所述待修改的参数集 ID的参数集类型从第一视频码流 中获取与所述待修改的参数集 ID的参数集类型对应的原参数集 ID;根据所述 原参数集 ID以及所述待修改的参数集 ID的参数集类型对应的原参数集 ID的 偏移获取与所述待修改的参数集 ID的参数集类型对应的用于解码 VCL NALU的参数集的参数集 ID。
作为另一种可选方式,当所述参数集 ID修改信息包括待修改的参数集 ID 的参数集类型和用于解码 VCL NALU的参数集的参数集 ID时,终端直接根 据待修改的参数集 ID的参数集类型从所述参数集 ID修改信息中获取与所述 待修改的参数集 ID的参数集类型对应的用于解码 VCL NALU的参数集的参 数集 ID。
作为另一种可选方式,当所述参数集 ID修改信息包括待修改的参数集 ID 的参数集类型的所述原参数集 ID、 以及与所述原参数集 ID对应的用于解码 VCL NALU的参数集的参数集 ID时, 终端根据所述待修改的参数集 ID的参 数集类型获取所述第一视频码流中与所述待修改的参数集 ID的参数集类型 对应的用于解码 VCL NALU的参数集的参数集 ID; 根据所述原参数集 ID获 取所述原参数集 ID对应的用于解码 VCL NALU的参数集的参数集 ID。 对于 此种实施方式,如待修改的参数集 ID的参数集类型包括至少一个原参数集 ID 时, 则需要获取该待修改的参数集 ID的参数集类型的与各个原参数集 ID分 别对应的用于解码 VCL NALU的参数集的参数集 ID.
此外, 当所述参数集 ID修改信息包括待修改的参数集 ID的参数集类型 的所述原参数集 ID、 以及与所述原参数集 ID对应的用于解码 VCL NALU的 参数集的参数集 ID时, 终端还可以根据所述待修改的参数集 ID的参数集类 型对应的原参数集 ID获取所述原参数集 ID对应的用于解码 VCL NALU的参 数集的参数集 ID。
步骤 403、 根据所述用于解码 VCL NALU的参数集的参数集 ID获取用 于解码所述 VCL NALU的参数集;
具体的,终端根据所述用于解码 VCL NALU的参数集的参数集 ID获取 用于解码所述 VCL NALU的参数集。
步骤 404、 根据所述用于解码 VCL NALU 的参数集解码所述 VCL
NALU ,并输出解码后的第一视频。
具体的, 终端根据所述用于解码 VCL NALU 的参数集解码所述 VCL NALU ,并输出解码后的第一视频。
作为另一种可选方式,第一视频参数集 ID修改信息还可以为待修改的参 数集 ID的参数集类型, 终端向拼接器发送实时传输控制协议 RTCP请求, 所 述 RTCP请求包含所述待修改参数集 ID的参数集类型; 终端接收所述拼接器 返回的 RTCP响应,所述 RTCP响应中携带与待修改的参数集 ID的参数集类 型对应的原参数集 ID的偏移, 或者与待修改的参数集 ID的参数集类型对应 的用于解码 VCL NALU的参数集的参数集 ID ,或者与待修改的参数集 ID的 参数集类型的所述原参数集 ID以及与所述原参数集 ID对应的用于解码 VCL NALU的参数集的参数集 ID; 所述根据所述第一视频的参数集 ID修改信息获 取所述用于解码 VCL NALU的参数集的参数集 ID具体为 :据所述 RTCP响 应中携带的与待修改的参数集 ID的参数集类型对应的原参数集 ID的偏移或 与待修改的参数集 ID的参数集类型对应的用于解码 VCL NALU的参数集的 参数集 ID,或者根据与待修改的参数集 ID的参数集类型的原参数集 ID以及 与原参数集 ID对应的用于解码 VCL NALU的参数集的参数集 ID ,从所述参 数集 ID修改信息中获取与所述待修改的参数集 ID的参数集类型对应的用于 解码 VCL NALU的参数集的参数集 ID。
作为另一种可选方式,所述参数集 ID修改信息还包括修改生效标志,所 述接收第一视频码流和第一视频的参数集标识修改消息之前,该方法进一步 包括:接收不生效的第一视频的参数集标识修改消息;确定所述不生效的第一 视频的参数集标识修改消息包含指示参数集 ID修改信息不生效的标志信息; 向应用服务器发送第二媒体描述信息获取请求;接收应用服务器返回的第二 媒体描述信息获取响应,所述第二媒体描述信息获取响应中携带第一视频的 修改后的参数集,所述第一视频修改后的参数集中的参数集 ID为所述用于解 码 VCL NALU的参数集的参数集 ID。
作为另一种可选方式, 所述根据所述用于解码 VCL NALU的参数集的参 数集 ID获取用于解码所述 VCL NALU的参数集之前该方法进一步包括:通 过带外方式获取第一视频的修改后的参数集, 所述修改后的参数集中的参数 集 ID为用于解码 VCL NALU的参数集的参数集 ID; 或, 通过带外方式获取 第一视频的原参数集以及用于解码 VCL NALU的参数集的参数集 ID,所述第 一视频的原参数集中携带所述原参数集 ID; 根据所述用于解码 VCL NALU的 参数集的参数集 ID修改所述原参数集 ID。
作为另一可选方式所述待修改的参数集 ID的参数集类型为 VCL NALU 直接引用的参数集类型,所述根据所述第一视频的参数集 ID修改信息获取用 于解码 VCL NALU的参数集的参数集 ID具体为 :获取与所述 VCL NALU直 接引用的参数集类型对应的用于解码 VCL NALU的 VCL NALU直接引用的 参数集的参数集 ID ,该方法进一步包括:根据获取的用于解码 VCL NALU 的 VCL NALU直接引用的参数集的参数集 ID获取所述第一视频码流中 VCL NALU直接引用的参数集;从所述直接引用的参数集中获取用于解码 VCL NALU的 VCL NALU间接引用的参数集的参数集 ID;或
所述待修改的参数集 ID的参数集类型为所述 VCL NALU直接引用的参 数集类型和所述 VCL NALU间接引用的参数集类型,所述根据所述第一视频 的参数集 ID修改信息获取用于解码 VCL NALU的参数集的参数集 ID具体为 : 分别根据所述第一视频的参数集 ID修改信息获取与所述 VCL NALU直接引 用的参数集类型对应的用于解码 VCL NALU的 VCL NALU的直接引用的参 数集的参数集 ID ,以及获取与所述 VCL NALU间接引用的参数集类型对应 的用于解码 VCL NALU的 VCL NALU间接引用的参数集的参数集 ID;所述根 据所述用于解码 VCL NALU的参数集的参数集 ID获取用于解码所述 VCL NALU的参数集具体为 :根据获取的直接引用的参数集的参数集 ID以及间接 引用的参数集的参数集 ID获取所述 VCL NALU的直接引用的参数集以及所 述 VCL NALU的间接引用的参数集;
所述根据所述用于解码 VCL NALU的参数集解码所述 VCL NALU ,并 输出解码后的第一视频具体为 :根据获取的所述 VCL NALU的直接引用的参 数集以及所述 VCL NALU的间接引用的参数集解码所述 VCL NALU,并输出 解码后的第一视频。
由以上实施例可知, 通过第一视频的参数集标识修改消息中包含第一视 频的参数集标识 ID修改信息,以便终端根据参数集标识 ID修改信息解码输 出第一视频而不是直接根据第一视频码流中的原参数集 ID获取解码第一视 频码的 VCL NALU的参数集,从而无需拼接器对第一视频码流的各 VCL
NALU中的参数集 ID进行修改,不但当终端在解码第一视频码流时, 能够保 证使用正确的参数集, 而且不需要在现有网络的拼接器上增加额外的硬件资 源, 或者使用新的拼接器对现有网络中的拼接器进行替换, 相比于现有技术 中所需的运营成本更少。
图 5为本发明实施例还提供的一种码流拼接方法流程图, 包括如下步骤: 步骤 501, 第二内容服务器接收第二视频码流和第二视频参数集。
在执行此步骤之前, 第二编码器对第二视频内容进行编码, 参数集 ID可 以采用熵编码方式获取。 并将输出的第二视频码流和获取的第二视频的参数 集发送给第二内容服务器。
步骤 502, 第一内容服务器接收第一视频码流和第一视频参数集。
在执行此步骤之前, 第一编码器对第一视频内容进行编码, 参数集 ID可 以采用熵编码方式获取,并将输出的第一视频码流和获取的参数集 ID作为原 参数集 ID包含在第一视频的原参数集中发送给第一内容服务器。
值得说明的是, 本发明实施例中, 步骤 501和步骤 502之间没有时间上 的先后顺序。
步骤 503、 终端向应用服务器发送第一媒体描述信息获取请求消息, 所 述第一媒体描述信息获取请求消息包含第二内容的内容标识。
步骤 504、 应用服务器根据第二内容的内容标识获取第二内容的媒体描 述信息。 包括但不限于以下信息: 第二视频的参数集第二视频参数集的类型 及与各类型对应的参数集的参数集 ID。
应用服务器获取第二内容的媒体描述信息的一种可选方式为, 应用服务 器接收终端发送的媒体描述信息获取请求消息后, 根据第二内容的内容标识 确定第二内容所在的内容服务器为第二内容服务器, 并向第二内容服务器发 送媒体描述信息获取请求消息。 步骤 503 中的媒体描述信息获取请求消息在 会话建立过程中发送, 即为会话建立请求消息, 具体的, 如 SIP Invite请求消 息。 相应的, 应用服务器向第二内容服务器发送的媒体描述信息获取请求消 息也为会话建立请求消息。
第二内容服务器接收媒体描述信息获取请求消息, 根据第二内容的内容 标识确定第二视频码流、 第二视频的参数集 NALU, 以及为第二视频码流分 配第二视频码流标识信息。将媒体描述信息获取响应消息发送给应用服务器。 具体的, 所述媒体描述信息获取响应消息为前述会话建立请求消息对应的会 话建立响应消息, 如 SIP 200响应消息。 其中,媒体描述信息获取响应消息包 含第二视频的参数集和第二视频码流标识信息。 应用服务器接收到媒体描述 信息获取响应消息后, 获取并存储媒体描述信息获取响应消息中携带的第二 视频的参数集。 具体的, 在媒体描述信息获取响应消息中包含 SDP, 在 SDP中包含第二 视频的参数集 NALU。 当然, 还可以用其它的方式, 如使用 SDP参数、 或者 XML元素结构化表示参数集 NALU中信息, 本发明实施例在此不做限定。 SDP 中还可以包含承载第二视频码流的实时传输协议 ( RTP : Real Time Transport )流的源 IP地址、端口和同步源标识( S SRC Synchronization Source ), 其中承载第二视频码流的 RTP流的源 IP地址、端口和 SSRC即第二视频码流 标识信息。在 SDP中包含参数集 NALU的具体方法为现有技术,本发明实施 例在此不再详述。
作为应用服务器获取第二内容的媒体描述信息的另一种可选方式为, 步 骤 503 中的媒体描述获取请求消息还可以在会话建立前作为初始化媒体描述 信息获取请求消息 (如 RTSP Describe请求消息、 HTTP Get请求消息等)发 送。 相应的, 应用服务器向第二内容服务器发送的媒体描述信息获取请求消 息为初始化媒体描述信息获取请求消息, 第二内容服务器接收初始化媒体描 述信息获取请求消息后发送给应用服务器的包含第二视频的媒体描述信息的 媒体描述信息获取响应消息为初始化媒体描述信息获取响应消息。 所述初始 化媒体描述信息获取响应消息可以为 RTSP 200响应消息、 HTTP 200响应消 息等。
应用服务器获取第二内容的媒体描述信息的又一种可选方式为,步骤 503 中的媒体描述获取请求消息在会话建立前发送, 步骤 504之前还包括, 第二 内容服务器为第二视频码流分配第二视频码流标识信息, 将第二内容的内容 标识、 第二内容的媒体描述信息发送给应用服务器。 第二内容的媒体描述信 息包含第二视频的参数集、 第二视频码流标识信息。 应用服务器接收到终端 发送的媒体描述获取请求消息后, 根据第二内容的内容标识从接收到的媒体 描述信息中获取第二视频的参数集、 第二视频码流标识信息。
此外, 应用服务器还可以采用别的方式从第二内容服务器获取第二内容 的媒体描述信息, 本发明实施例在此不再——详述。
步骤 505、 应用服务器获取第一内容的媒体描述信息。 包括但不限于以 下信息: 第一视频的原参数集和第一视频的获取信息。
应用服务器获取第一内容的媒体描述信息的一种可选方式为, 应用服务 器根据配置的第一内容服务器的地址, 向第一内容服务器发送第一视频媒体 描述信息获取请求消息。
第一内容服务器接收应用服务器发送的第一视频媒体描述信息获取请求 消息, 将第一视频的媒体描述信息发送给应用服务器, 其中第一视频的媒体 描述信息至少包含第一视频的原参数集以及视频码流的获取信息, 第一视频 的参数集的类型及与各类型对应的参数集的原参数集 ID, 第一视频码流的获 取信息可以是用于向第一内容服务器获取第一视频码流的 RTSP 统一资源定 位符 ( URL: Uniform Resource Locator ) 。
作为一种可选方式, 本发明实施例中, 终端还可以在步骤 503 中发送给 应用服务器的媒体描述信息的获取请求消息中携带用户的标识, 以及应用服 务器在发送给第一内容服务器的媒体描述信息的获取请求消息中携带用户的 标识, 以便第一内容服务器可以根据用户的标识为用户确定第一内容, 并将 确定的第一视频的参数集以及确定的第一视频码流的获取信息发送给应用服 务器。
步骤 506、 应用服务器修改第一视频的原参数集 ID, 所述第一视频的原 参数集 ID为步骤 505中第一视频的原参数集中包含的参数集 ID。
具体的, 应用服务器在接收到第一视频的原参数集后, 针对每一类型的 参数集 ID, 确定该类型的第一视频的原参数集 ID是否与该类型的第二视频 的参数集 ID相同, 如果相同, 则需要修改该类型的第一视频的原参数集 ID。 本流程以该类型的第一视频的原参数集 ID与该类型的第二视频的参数集 ID 相同为例进行说明。
然后,应用服务器确定该类型的第一视频的原参数集 ID的偏移, 并将该 类型的第一视频的原参数集 ID的取值加上原参数集 ID的偏移作为该类型的 第一视频的用于解码 VCL NALU的参数集的参数集 ID; 或者应用服务器直 接为该类型的第一视频的原参数集 ID分配新的取值,该分配的新的取值与所 有同一类型的第二视频的参数集 ID不同,与所有同一类型的其它第一视频的 原参数集 ID也不同, 将该分配的新的取值作为用于解码 VCL NALU的参数 集的参数集 ID (即用于解码第一视频码流中 VCL NALU的参数集的参数集 ID )。
具体的,应用服务器判断该类型的第一视频的原参数集 ID是否与该类型 的第二视频的参数集 ID相同的一种可选方式为,应用服务器将该类型的第一 视频的原参数集 ID与该类型的所有第二视频的参数集 ID进行比较, 如果该 类型的第一视频的原参数集 ID与该类型的其中一个第二视频的参数集 ID相 同。应用服务器确定该类型的第一视频的原参数集 ID与该类型的第二视频的 参数集 ID相同。
具体的,应用服务器确定某类型的第一视频的原参数集 ID的偏移的一种 可选方式为: 应用服务器确定所有该类型的第二视频的参数集 ID 中的最大 值、所有该类型的第一视频的原参数集 ID中的最小值, 计算所有第二视频的 参数集 ID中的最大值与所有第一视频的原参数集 ID中的最小值的差值, 应 用服务器将该差值与一个正整数的和作为该类型的第一视频的原参数集 ID 的偏移。 具体的, 作为一种可选方式, 该正整数为 1。 该偏移可以应用于所 有该类型的第一视频的原参数集 ID, 也可以对不同类型的第一视频的原参数 集 ID设定不同的偏移, 本发明实施例在此不作限定。
步骤 507、 应用服务器向终端发送第一媒体描述信息获取响应, 其中包 含第二视频的参数集和第一视频的参数集。 具体可以是, 在第一媒体描述信 息获取响应消息中包含 SDP,在 SDP中包含第二视频的参数集(可以为 NALU 的形式封装参数集, 也可以为其它的形式, 本发明实施例如无特别指明, NALU只作为一种可选的例子并不限定参数集的封装形式) 、 第一视频的修 改后的参数集。其中第一视频的修改后的参数集中的参数集 ID为第一视频的 用于解码 VCL NALU的参数集的参数集 ID, 具体的为第一视频的原参数集 ID的取值加上原参数集 ID的偏移, 或者应用服务器直接为第一视频的用于 解码 VCL NALU的参数集的参数集 ID分配的取值。
步骤 501-507所述终端获取第二视频参数集和第一视频参数集的方法中, 终端是从视频码流外部获取的参数集, 因此可以称为带外方式(或者称为外 部方式) 。 步骤 501-507所述终端获取第二视频参数集和第一视频参数集的 方法只是终端以带外方式获取第二视频参数集和第一视频参数集的可选方 式, 终端还可以采用别的方式以带外方式获取第二视频参数集和第一视频参 数集, 本发明实施例在此不再——详述。
步骤 508、 应用服务器向拼接器发送第二视频码流信息和第一视频码流 信息。 具体的, 第二视频码流信息包含第二视频码流标识信息, 第一视频码 流信息包含: 第一视频码流的获取信息和第一视频的参数集 ID修改信息(如 第一视频的待修改参数集 ID的参数集类型以及与待修改参数集 ID的参数集 类型对应的原参数集 ID的偏移, 或待修改参数集 ID的参数集类型和应用服 务器为待修改的参数集 ID分配的用于解码 VCL NALU的参数集的参数集 ID, 或待修改参数集 ID的参数集类型的原参数集 ID以及与原参数集 ID对应的用 于解码 VCL NALU的参数集的参数集 ID (即应用服务器为待修改的参数集 ID分配的用于解码 VCL NALU的参数集的参数集 ID ), 所述用于解码 VCL NALU的参数集的参数集 ID的取值即为终端在接收到第一视频码流后用于解 码所述第一视频码流中 VCL NALU的参数集的参数集 ID ) 。 所述第一视频 的参数集 ID修改信息为第一视频的 VCL NALU直接引用的参数集类型的参 数集 ID修改信息, 即其中的第一视频的待修改参数集 ID的参数集类型只能 为 VCL NALU直接引用的参数集类型。
步骤 508以第一视频的参数集修改信息包含第一视频的待修改参数集 ID 的参数集类型以及与待修改参数集 ID的参数集类型对应的原参数集 ID的偏 移为例进行说明。 其中, 第一视频码流的获取信息可以是用于向第一内容服 务器获取第一视频码流的 RTSP URL; 第二视频码流标识信息可以是用于承 载第二视频码流的 RTP流的源 IP地址、端口和 SSRC的组合; 第一视频的待 修改参数集 ID 的参数集类型可以为三字节文本形式表示的参数集类型, 如,, vps,,、 "sps,,、 "pps,,、 "aps"分别代表参数集类型为 VPS , SPS、 PPS和 APS。 参数集 ID偏移可以是 1字节无符号整数。第二视频码流和第一视频码流信息 可以如表 1 (即视频配置信息表) 所示:
表 1
其中,第二视频码流标识信息中的源 IP地址为 219.133.0.1、端口为 49170、 SSRC 为 1234 ; 与该第二视频码流对应的第一视频码流的获取信息为 rtsp:〃 example.com/fizzle/foo; 应用服务器确定第一视频中 VPS、 SPS、 PPS , APS的 ID都需要修改, 其第一视频的各类型的原参数集 ID的偏移均为 1, 即对相应类型的第一视频参数集的参数集 ID进行修改时, 所有原参数集 ID 的取值加 1为对应的用于解码 VCL NALU的参数集的参数集 ID的取值。 但 VCL NALU直接引用的参数集类型只包含 PPS、 APS, 因此表 1中只包含 2 个参数集 ID修改信息, 即 PPS的参数集 ID修改信息和 APS的参数集 ID修 改信息。 值得说明的是, 上述例子中原参数集 ID的偏移均为 1, 只是为了举 例的简单化, 并不代表不同类型参数集的参数集 ID偏移都相同。
值得说明的是, 步骤 507和步骤 508没有时间上的先后顺序。
步骤 509、 第二内容服务器向拼接器发送第二视频码流。
具体的, 如果拼接器位于边缘路由器, 承载第二视频码流的 RTP流的目 的 IP地址、 端口为组播 IP地址、 端口, 基于网络路由策略将承载第二视频 码流的 RTP流发送到拼接器; 步骤 509之前, 第二内容服务器获取网络管理 系统为第二视频码流分配的组播 IP地址、 端口。
或者, 如果拼接器位于边缘服务器, 承载第二视频码流的 RTP流的目的 IP地址、 端口为拼接器的 IP地址、 端口。 步骤 509之前, 第二内容服务器获 得拼接器的 IP地址、 端口。 以步骤 504中应用服务器向第二内容服务器发送 的是会话建立请求消息为例进行说明。 具体的, 第二内容服务器从步骤 504 中应用服务器向第二内容服务器发送的会话建立请求消息中获取拼接器的 IP 地址、 端口。 而采用此种方式, 应用服务器如何获取拼接器的 IP地址、 端口 以及如何建立拼接器的 IP地址、 端口和终端的 IP地址、 端口的对应关系是 公知技术, 不再赘述。
步骤 510、 拼接器将第二视频码流作为输出视频码流发送给终端。
如果拼接器接收到的第二视频码流的目的 IP地址、 端口为拼接器的 IP 地址、 端口。 拼接器将承载第二视频码流的所有 IP包中的目的 IP地址、 端 口爹改为对应终端的 IP地址、 端口。
步骤 511、终端根据接收到的第二视频码流的 VCL NALU中的参数集 ID 从通过带外方式(所述带外方式为从第二视频流之外) 中获得的参数集中, 获取 VCL NALU引用的参数集(即用于解码第二视频码流的 VCL NALU的 参数集) , 利用获取的参数集解码输出第二视频。
步骤 512、 拼接器根据第二视频码流标识信息从视频配置信息表即表 1 中查找到第一视频码流的获取信息, 根据第一视频码流的获取信息获取第一 视频码流。
具体的, 在执行本步骤之前, 拼接器判断是否需要进行拼接准备, 如果 需要进行拼接准备, 拼接器向第一内容服务器获取第一视频码流。
一种判断是否需要进行拼接准备的可选方式为, 步骤 504中应用服务器 获得的第二内容的媒体描述信息、 步骤 508中应用服务器向拼接器发送的第 二视频码流信息还包括拼接点的时间信息, 拼接器根据预先配置的准备阔值 (指定启动拼接准备的时间点与拼接点的间隔 )判断是否需要进行拼接准备, 即是否向第一内容服务器获取第一视频码流。
具体地, 拼接器设置启动拼接准备的时间为拼接点的时间信息减去准备 阔值, 如果当前时间已经到达启动拼接准备的时间, 拼接器需要进行拼接准 备。 本实施例中, 时间信息的格式可以为 hh:mm:ss.fff, 其中 hh代表小时、 mm代表分钟、 ss代表秒、 fff代表毫秒。 准备阔值以毫秒为单位。 如拼接点 的时间信息为 01 :01 :01.001代表 1小时 1分钟 1秒钟另 1毫秒, 准备阔值为 500, 代表 500毫秒。 则启动拼接准备的时间为 01 :01 :00.499代表 1小时 1分 钟 499毫秒。 如果当前时间等于或晚于 01 :01 :00.499, 则需要进行拼接准备, 向第一内容服务器获取第一视频码流。
另一种判断是否需要进行拼接准备的可选方式为, 第二内容服务器设置 启动拼接准备的时间, 如果当前时间已经到达启动拼接准备的时间, 在属于 承载第二视频码流的 RTP流的 RTP包的包头插入准备标签 ( repare tag ) , 指示拼接器进行拼接准备。 拼接器检查第二视频码流对应的 RTP包头是否包 含 prepare tag, 如果包含, 则需要进行拼接准备即向第一内容服务器获取第 一视频码流。
步骤 513、 拼接器生成第一视频的参数集标识 ID修改消息, 其中包含第 —视频参数集 ID修改信息。 具体的, 参数集标识修改消息可以是参数集标识 修改信息 SEI消息 (Parameter Set ID Change Info SEI message ) , 或者 PPS 标识修改信息 SEI消息 (PPS ID Change Info SEI message)和 /或 APS标识修改 信息 SEI消息 (APS ID Change Info SEI message),其中,参数集标识修改信息 SEI消息可以携带一个或多个待修改参数集 ID的参数集类型的修改信息, 而 PPS标识修改信息 SEI消息只包括待修改参数集 ID的参数集类型为 PPS的修 改信息, APS标识修改信息 SEI消息只包括待修改参数集 ID的参数集类型为 APS的修改信息。
具体的, 在执行此步骤之前, 拼接器判断视频配置信息表 (即表 1)是否包 含与第二视频码流标识信息对应的第一视频参数集 ID修改信息,如待修改 ID 的参数集类型以及与修改 ID的参数集类型对应的参数集 ID偏移。
如果视频配置信息表包含与第二视频码流标识信息对应的第一视频参数 集 ID修改信息, 拼接器生成第一视频的参数集标识修改消息(具体的可以是 拼接器采用生成 SEI消息的方法生成 SEI消息, 如参数集标识修改补充增强 信息 SEI消息, 自适应参数集标识修改 SEI消息或图片参数集标识修改 SEI 消息也可以是别的类型的 SEI消息,本发明实施例在此不做限定)。 其中待 修改参数集 ID的参数集类型为 VCL NALU直接引用的参数集类型的第一视 频的参数集 ID修改信息。
这是由于, 步骤 507中应用服务器通过带外方式发送给终端的第一视频 的修改后的参数集中的参数集 ID为用于解码 VCL NALU的参数集的参数集 ID, 当终端获取 VCL NALU直接引用的参数集后, 所述 VCL NALU直接引 用的参数集中包含的 VCL NALU间接引用的参数集的参数集 ID为用于解码 VCL NALU的参数集的参数集 ID。因此,不需要由应用服务器将 VCL NALU 间接引用的参数集类型的参数集 ID修改信息发送给拼接器,并由拼接器通过 参数集 ID修改消息发送给终端。本步骤以第一视频的参数集修改信息包含第 —视频的待修改参数集 ID的参数集类型以及与待修改参数集 ID的参数集类 型对应的原参数集 ID的偏移为例进行说明。
其中, 生成参数集标识修改信息 SEI消息作为参数集标识修改消息的方 法可以为:
拼接器从视频配置信息表获取第一视频参数集 ID修改信息,包括待修改 参数集 ID的参数集类型以及与待修改参数集 ID的参数集类型对应的原参数 集 ID 的偏移。 此时待修改参数集 ID 的第一视频参数集类型只包含 VCL NALU直接引用的参数集类型。拼接器根据获取到的第一视频参数集 ID修改 信息,生成参数集标识修改信息 SEI消息。本步骤以第一编码器为遵循 HEVC 标准的编码器, 即 VCL NALU直接引用的参数集类型包含 PPS、 APS为例进 行说明。 具体的, 如待修改 ID的第一视频参数集类型包含 PPS和 /或者 APS时, 拼接器生成参数集标识修改信息 SEI消息。 参数集标识修改信息 SEI消息中 包含两个标志 (flag ) : 图片参数集标识更改标志 (pps_id_change_flag)、 自 适应参数集标识更改标志 ( aps_id_change_flag ) , 分别用于指示对应类型参 数集的参数集 ID (即 PPS ID和 APS ID )是否需要修改。 如果对应类型参数 集的参数集 ID需要爹改, 则参数 ps id change flag和 aps id change flag 的取值为 1。 当然, 还可以用其它的方式, 如为字符, T,、 字符串 URE,等其 他的标识, 表示对应类型参数集的参数集 ID需要修改, 本发明实施例在此不 做限定。 此外, 参数集标识修改信息 SEI消息中还包含待修改参数集 ID的参 数集类型的原参数集 ID的偏移。 以如果对应类型参数集的 ID需要修改, 参 数 ps id change flag和 aps id change flag的取值等于 1为例进行说明, 参 数集标识修改信息 SEI消息的格式如表 2所示:
如表二所示, 参数 aps id change flag取值为 1, 表明 APS ID需要修改, 参数 ps id change flag取值为 1,表明 PPS ID需要修改。描述子( Descirptor ) u(l)表明参数 aps id change flag和 ps id change flag 占一个比特位。 参数 aps_id_diff (自适应参数集标识偏移 )携带 APS对应的原参数集 ID的 偏移, 参数 ps_id_diff (图片参数集标识偏移 )携带 PPS对应的原参数集 ID的偏 移。 u(5)表明采用 5比特表示的无符号整数, u(8)表明采用 8比特表示的无符 号整数。
还可以就 PPS ID的改变和 APS ID的改变分别生成 PPS标识修改信息 SEI 消息和 APS标识修改信息 SEI消息作为参数集标识修改消息。 具体的, PPS 标识修改信息 SEI消息携带 PPS对应的原参数集 ID的偏移, 其消息格式如 表三所示:
表三
其中参数 pps_id_diff 携带 PPS对应的原参数集 ID的偏移。
而 APS标识修改信息 SEI消息携带对应的原参数集 ID的偏移, 其消息格 式: ^表四所示:
表四
其中参数 aps_id_diff 携带 APS对应的原参数集 ID的偏移。
通常来讲, 如果待修改参数集 ID的第一视频的参数集类型中包含 PPS、 不包含 APS, 拼接器只生成 PPS标识修改信息 SEI消息; 如果需要修改 ID的第 一视频参数集类型中包含 APS、 不包含 PPS, 拼接器只生成 APS标识修改信息 SEI消息; 如果需要修改 ID的第一视频参数集类型中同时包含 PPS、 APS, 拼 接器可以分别生成 PPS标识修改信息 SEI消息、 APS标识修改信息 SEI消息。
当然, 需要修改 ID的第一视频参数集类型中同时包含 PPS、 APS, 拼接可 以生成参数集标识修改信息 SEI消息,在参数集标识修改信息 SEI消息包含 PPS 和 APS的修改信息。
不同 SEI消息通过消息中的 PayloadType (负载类型) 区分, 因此需要为 SEI消息分别分配唯一的 PayloadType取值。 步骤 514、 拼接器向终端发送第一视频的参数集标识修改消息 (如参数 集标识修改信息 SEI消息)和第一视频码流, 即拼接器将第一视频的参数集 标识修改消息与第一视频码流一起发送给终端。
在执行 514步骤之前, 拼接器还要判断是否到达拼接点, 并在到达拼接 点时向终端发送参数集标识修改消息和第一视频码流。 具体的, 一种判断是否到达拼接点的可选方式为, 拼接器判断输出第二 视频码流的当前时间是否已经到达拼接点时段的起点, 如果已经到达拼接时 段的起点, 即认为到达拼接点。 另一种判断是否到达拼接点的可选方式为, 第二内容服务器在拼接点之前的第二视频码流对应的 RTP包的包头插入拼接 标签( slice tag )并在 slice tag中指定距离拼接点的时间, 拼接器检查第二视 频码流对应的 RTP包头是否包含 slice tag并且其中指定距离拼接点的时间为 0, 如果包含, 表示到达拼接点。
为了确保随机接入, 参数集标识修改消息至少随随机接入点 (RAP: Random Access Point ) 发送并应用于关联的 RAP和下一个 RAP之间的所有 图片。 RAP是码流中间某个只采用帧内预测的图片, 解码器可以从该图片开 始解码过程。 参数集标识修改消息随 RAP发送时, 拼接器将封装有参数集标 识修改消息的 NALU插入到关联 RAP的 AU分隔符 NALU后、 第一视频码 流中的 VCL NALU之前。
步骤 515、 终端接收第一视频的参数集标识修改消息 (如参数集标识修 改信息 SEI消息)和第一视频码流后, 根据第一视频的参数集标识修改消息 (如参数集标识修改信息 SEI消息) 确定该第一视频码流中的 VCL NALU引用 的参数集的参数集 ID (即用于解码 VCL NALU的参数集的参数集 ID ) 。 根 据确定的参数集 ID从通过带外方式获取的参数集中获取参数集 ID为确定的 参数集 ID的参数集, 即为用于解码第一视频码流的 VCL NALU的参数集。
本步骤以第一视频的参数集标识修改消息为参数集标识修改信息 SEI消 息并且 VCL NALU直接引用的参数集类型包含 PPS、 APS为例进行说明。 根 据参数集标识修改信息 SEI消息确定 VCL NALU引用的参数集的参数集 ID 以及参数集的方法具体可以为:
终端首先根据参数集标识修改信息 SEI消息确定 VCL NALU直接引用的 参数集的参数集 ID, 然后根据所述参数集 ID从通过带外方式获取的参数集 中获取 VCL NALU直接引用的参数集。
具体的,终端确认参数集标识修改信息 SEI消息中携带 APS ID改变的标 志, 如消息中的参数 aps id change flag值为 1,或其它的标识。 从接收到的第 一视频码流的 VCL NALU获取 APS ID, 即为 VCL NALU引用的自适应参数 集的原参数集 ID (即 aps id的原取值 ( original aps id ) ), 并根据 APS ID的原 取值和参数集标识修改信息 SEI消息中与 APS对应的原参数集 ID的偏移计 算新的取值(即用于解码 VCL NALU的参数集的参数集 ID的值) 。 具体的 为: 将原取值 +与 APS 对应的原参数集 ID 的偏移, 即 new_aps_id = original aps id + aps id diff, 菝取新的取值, 并将 new aps id 作为 reference_aps_id (引用自适应参数集标识的取值) , 然后从通过带外方式获 取的参数集中获取包含与 reference_aps_id相同 (即与 new_aps_id相同) 的 aps_id的 APS, 即为用于解码第一视频码流中 VCL NALU的参数集。
此外, 根据引用自适应参数集标识的取值从通过带外方式获取的参数集 中获取用于解码所述第一视频码流中 VCL NALU的参数集具体为:
终端从步骤 507 中获取到的媒体描述信息中获取参数集 NALU。 根据
NALU header中的 nal_unit_type确定 NALU中参数集的类型, 不同类型的参 数集具有不同的格式, 必须确定参数集类型后, 才能按照相应的格式解析参 数集。 如果为参数集的类型为 APS, 获取其中的 aps id。 如果该 asp_id等于 reference aps id, 即该 asp_id对应的参数集为用于解码所述第一视频码流中 VCL NALU的 APS; 否则处理下一个参数集 NALU, 直到找到其中的 aps_id 等于 reference aps id的 APS。
进一步的,终端确认参数集标识修改信息 SEI消息中携带 PPS ID改变的 标志, 从参数集标识修改信息 SEI消息中获取与 PPS对应的原参数集 ID的 偏移。 终端从接收到的第一视频码流的 VCL NALU获取该 VCL NALU引用 的 PPS的原参数集 ID, 并根据原参数集 ID和与 PPS对应的原参数集 ID的 偏移计算新的取值,并将新的取值作为修改后的 PPS ID (引用图片参数集标识) 的取值, 从步骤 507中获取到参数集 NALU中获取图片参数集标识取值为修 改后的 PPS ID的 PPS。
然后终端根据 VCL NALU直接引用的参数集中包含的 VCL NALU间接 引用的参数集 ID获取 VCL NALU间接引用的参数集, 如 SPS和 VPS.
具体的,根据 PPS中的 sps_id从步骤 507中获取到参数集 NALU中获取 包含与 PPS中的 sps id相同的 sps id的 SPS;根据 SPS中的 vps_id从步骤 507 中获取到参数集 NALU中获取包含与 SPS中的 vps id相同的 vps id的 VPS。
VCL NALU直接引用的参数集和 VCL NALU间接引用的参数集都作为 用于解码第一视频码流的 VCL NALU的参数集。 作为一种可选方式, 如果在步骤 513 中, 终端并没有生成参数集标识修 改信息 SEI消息,而是分别生成了 PPS标识修改信息 SEI消息和 APS标识修 改信息 SEI消息, 则在步骤 515中, 终端分别根据 PPS标识修改信息 SEI消 息确定该 VCL NALU引用的 PPS的参数集 ID,以及根据 APS标识修改信息 SEI消息确定该 VCL NALU引用的 APS的参数集 ID, 并根据确定的 PPS的 参数集 ID和 APS的参数集 ID从通过带外方式获取的参数集中获取参数集 ID 为确定的 PPS的参数集 ID和 APS的参数集 ID的 PPS和 APS,以及根据 PPS 中的 sps id获取 SPS; 根据 SPS中的 vps_id获取 VPS。
具体的获取方法与上述根据参数集标识修改信息 SEI消息获取的方法一 致, 本发明实施例在此不再详述。
步骤 516、 利用从通过带外方式获取的参数集中获取到的参数集 (如以 第一编码器为遵循 HEVC标准的编码器为例, 包括 APS,PPS,SPS和 VPS )对 第一视频码流中的 VCL NALU进行解码。
由以上实施例可知, 当某类型的第一视频的 VCL NALU直接引用的参数 集的参数集 ID和第二视频的同一类型的参数集的参数集 ID相同时, 拼接器 只需生成参数集标识修改消息,如(参数集标识修改信息 SEI消息, 或者 PPS 标识修改信息 SEI消息和 /或 APS标识修改信息 SEI消息)。该参数集标识修 改信息携带第一视频的参数集 ID修改信息,由终端根据参数集标识修改消息 确定用于解码 VCL NALU的参数集的参数集 ID,而无需拼接器直接修改第一 视频码流中的参数集 ID。 由于生成参数集标识修改消息的操作比较简单, 不 需要拼接器具有熵解码和熵编码能力并且操作的频度较低, 因此只需要很少 的计算资源和存储资源。从而只需要对现有网络中的拼接器进行简单的升级, 而不需要在现有网络中的拼接器上增加额外的硬件资源, 或者使用新的拼接 器对现有网络中的拼接器进行替换, 从而相比于现有技术, 运营商所需运营 成本较少。
在采用图 5所对应的流程中, 应用服务器在步骤 506修改第一视频参数 集中参数集 ID, 然后在步骤 507中将包含修改后参数集 ID的第一视频参数 集发送给终端。 然而, 作为另一种可选方式, 应用服务器还可以不修改第一 视频参数集中参数集 ID, 而在步骤 507中向终端发送的媒体描述信息获取响 应中指示第一视频参数集对应的用于解码 VCL NALU的参数集的参数集 ID。 也就是说, 应用服务器向终端发送的媒体描述信息获取响应中包含第二视频 的参数集、 第一视频的原参数集以及第一视频的原参数集的用于解码 VCL
NALU的参数集的参数集 ID, 其中第一视频的原参数集为应用服务器在步骤
504中获取到的第一视频的参数集, 从而减化应用服务器的操作。
以步骤 507中向终端发送的媒体描述信息为 SDP形式为例进行说明。 具体的, 应用服务器通过在媒体描述信息获取响应中的 SDP 中的参数 sprop-parameter-sets ( 流特性参数集 ) 的一组子参数 <parameter set type> :<parameter set id>:<parameter set data>来携带一个参数集 NALUc 其中: parameter set type (参数集类型)为三字节文本, 代表参数集的类型。 parameter set id (参数集标识)为 1字节无符号整数, 代表参数集 ID的 取值。 该字段的值可以与参数集 NALU 中原参数集 ID 的值不同。 如果 parameter set id的值与参数集 NALU中原参数集 ID的值不同,以 parameter set id字段的值作为用于解码 VCL NALU的参数集的参数集 ID。 所述原参数集
ID为第一内容服务器在步骤 502中发送给应用服务器的参数集 NALU中的参 数集 ID,也即为还没修改的第一视频的参数集 ID。 当一组子参数用于携带一 个参数集 ID需要修改的第一视频的参数集 NALU时, parameter set id为需要 用于解码 VCL NALU的参数集的参数集 ID。
parameter set data (参数集数据 )为 Base64 (基本 64字符)编码的参数 集 NALU。当一组子参数用于携带一个参数集 ID需要修改的第一视频的参数 集 NALU时,所述被携带的参数集 NALU为第一内容服务器发送给应用服务 器的参数集 NALU。
参数 sprop-parameter-sets可以包含多组子参数以携带多个参数集 NALU, 如果 parameter-sets包含多组子参数以携带多个参数集 NALU, 各组子参数之 间通过字符 "," 分隔。
以第二编码器、 第一编码器均为遵循 HEVC标准的编码器为例进行说明。 按照上述方式, 步骤 507中应用服务器发送给终端的携带参数集 NALU的 SDP 示例: ^下所示。
具体的, 假设应用服务器接收到的第二视频参数集 NALU包括一个 VPS NALU, 一个 SPS NALU、 一个 PPS NALU和一个 APS NALU, 对应参数集 NALU中的 VPS ID、 SPS ID, PPS ID、 APS ID均为 0。 应用服务器接收到的第 一视频参数集 NALU也包括一个 VSP NALU,一个 SPS NALU,一个 PPS NALU 和一个 APS NALU, 对应参数集 NALU中的 VPS ID、 SPS ID、 PPS ID、 APS ID 也均为 0。
因此, 第一视频的所有类型的原参数集 ID由于与第二视频的同类型的参 数集 ID相同而都需要修改, 应用服务器确定各类型参数集对应的参数集 ID的 偏移都为 1, 即第一视频 VSP、 SPS, PPS, APS的 VPS ID、 SPS ID, PPS ID, APS ID的新取值都为第一视频的所有类型的原参数集 ID+参数集 ID的偏移即 0+1=1。 因此, SDP中携带 8个参数集 NALU, 第一到四组子参数携带第二视频 的参数集 NALU, 对应的参数集类型分别为 VPS、 SPS, PPS, APS; 第二视 频参数集的参数集 ID不需要修改,因此 SDP中对应的子参数 arameter set id 均为 0, 对应的 parameter set data中的参数集 NALU中的参数集 ID均为 0; 第五到八组子参数携带第一视频的 NALU,第一视频参数集的参数集 ID都需 要修改且新取值都为 1, 因此 SDP中对应的子参数 parameter set id均为 1, 但对应的 parameter set data中的参数集 NALU中的参数集 ID均为 0。
m=video 49170 RTP/AVP 98
a=rtpmap:98 H264/90000
a=fmtp:98 sprop-parameter-sets=<vps><0><parameter set data#l> ,
<sps><0><parameter set data#2> ,
<pps><0><parameter set data#3> ,
<aps><0><parameter set data#4>
<vps>< 1 xparameter set data#5〉 ,
<sps>< 1 xparameter set data#6> ,
<pps>< 1 xparameter set data#7> ,
<aps>< 1 xparameter set data#8>
以第一视频的参数集修改信息包含第一视频的待修改参数集 ID 的参数 集类型以及与待修改参数集 ID的参数集类型对应的原参数集 ID的偏移为例 进行说明。
由于步骤 507中应用服务器发送给终端的第一视频的原参数集 NALU中 的参数集 ID为第一视频的原参数集 ID, 当终端获取 VCL NALU直接引用的 参数集后, 所述 VCL NALU直接引用的参数集中包含的 VCL NALU间接引 用的参数集的参数集 ID为原参数集 ID, 由于参数集 ID以媒体描述响应消息 中指示的参数集 ID为准, 终端使用原参数集 ID不能从通过带外方式获取的 参数集中获取的参数集中获取正确的参数集, 因此在步骤 508中所述第一视 频的参数集 ID修改信息中还包含 VCL NALU间接引用的参数集 ID修改信 息。 相应地, 在步骤 513, 参数集标识修改消息中还需要包含 VCL NALU间 接引用的参数集 ID修改信息。 以第一编码器为遵循 HEVC标准的编码器, 即 VCL NALU间接引用的参数集类型包含 SPS、 VPS为例进行说明。
参数集标识修改信息 SEI消息中还需要包含 vps_id_change_flag (视频参 数集标识更改标志) 、 sps_id_change_flag (序列参数集标识更改标识) , 如 果待修改参数集 ID的参数集类型包含 vps, 拼接器设置 vps_id_change_flag 为 1, 并通过 vps id diff (视频参数集标识偏移)传递对应的参数集 ID偏移; 如果待修改参数集 ID的参数集类型包含 sps, 拼接器设置 sps_id_change_flag 为 1, 并通过参数序列参数集标识偏移 (sps_id_diff )传递对应的参数集 ID 偏移。 即, 采用此种方式, 参数集标识修改信息 SEI消息的格式如表五所示:
表五 其中, 对表五的各参数的解释与表二相同, 本发明实施例在此不再详述. 终端获取到携带有第二视频参数集 NALU、 第一视频的原参数集 NALU 的 SDP后,将各参数集 NALU存储到参数集 NALU记录表中,参数集 NALU 记录表的格式如表六所示。 分别对应与 SDP中参数 sprop-parameter-sets的各 子参数:
parameter set type parameter set id parameter set data 其中, 如上所述, arameter set type表示参数集类型, arameter set id表 示用于解码 VCL NALU的参数集的参数集 ID, parameter set data为 Base64 编码的修改了参数集 ID的参数集 NALU. 具体的,如果终端获取到的携带有 第二视频参数集 NALU、 第一视频的原参数集 NALU的 SDP为前述携带参 数集 NALU的 SDP示例, 参数集 NALU记录表如表七所示
表七
在步骤 515中, 终端接收参数集标识修改信息 SEI消息后, 根据参数集 标识爹改信息 SEI 消息得到 reference aps id 以及 reference_pps_id并才艮据 reference aps id , reference_pps_id从通过带夕卜方式菝取的参数集中菝取包含 aps id为 reference aps id APS,包含々 ps id为 reference_pps_id PPS。 然后获取 PPS中包含的 sps_id, 即为 original_sps_id, 根据参数集标识修改信 息 SEI 消息得到 reference_sps_id (参考序列参数集标识取值) 、 根据 reference aps id 从通过带外方式获取的参数集中获取包含的 sps id 为 reference sps id的 SPS。 菝取 SPS中的 vps id, 即为 original— vps_id, 根据参 数集标识修改信息 SEI 消息得到 reference_vps_id (参考视频参数集标识取 值),根据 reference vps id从通过带外方式获取的参数集中获取包含的 vps id 为 reference vps id的 VPS。
具体 ό々, 通过 reference aps id , reference_pps_id、 reference sps id 或 reference vps id 获取对应参数集的方式为, 从参数集 NALU 记录表获得 parameter set type为对应类型并且 arameter set id等于 reference aps id , reference_pps_id、 reference sps id 或 reference vps id 々唯 条参数集
NALU记录, 从该记录的 parameter set data中菝取对应的 Base64编码的参数 集 NALU, 再对 VCL NALU进行解码。
作为另一种可选方式, 当第一视频只包含一个 VPS、 一个 SPS、 一个 PPS、 一个 APS时, 为了简化终端操作, 拼接器执行步骤 512之后, 执行步骤 513时, 即当拼接器确认某种类型的参数集 ID需要修改时, 拼接器可以直接在参数集 标识爹改信息 SEI消息 ( Parameter Set ID Change Info SEI message ) 中包含对 应参数集 ID的新取值, 而不是对应的参数集 ID偏移。 或者, 拼接器可以直接 在 PPS标识修改信息 SEI消息或 APS标识修改信息 SEI消息中包含修改后的 PPS
ID或修改后的 APS ID。相应的, 在步骤 515中, 终端直接从第一视频的参数集 标识修改消息中获取对应参数集 ID从而确定用于解码 VCL NALU的参数集的 参数集 ID。 作为另一种可选方式,在步骤 508中第一视频的参数集 ID修改信息为待修 改的参数集 ID的参数集类型和用于解码 VCL NALU的参数集的参数集 ID ,其 中用于解码 VCL NALU的参数集的参数集 ID为应用服务器为待修改的参数集 ID分配的修改后参数集 ID的取值。 以步骤 507中采用在 SDP中包含修改了参数集 ID的第一视频的参数集
NALU为例进行说明。 作为一种可选方式, 步骤 514中, 拼接器发送给终端的
pps id change flag u(l) if (aps id change flag)
new aps id u(5) if (pps id change flag)
new_pps_id u(8)
}
其中, 参数 APS标识更改标识 (aps_id_change_flag)取值为 1, 表明 APS ID 需要修改,参数 PPS标识更改标识( pps_id_change_flag )取值为 1,表明 PPS ID 需要修改。 Descirptor:u(l)表明参数 aps_id_change_flag和 pps_id_change_flag占 一个比特位。参数 new_aps_id携带修改后的 APS ID,参数 new_aps_id携带修改 后的 PPS ID。 Descirptor:u(5)表明采用 5比特表增的无符号整数, u(8)表明采用 8比特表示的无符号整数。
当然, 如果拼接器发送给终端的是 PPS标识修改信息 SEI消息和 /或 APS标 识修改信息 SEI消息, 则消息格式与表 8类似, 本发明实施例在不再详述。
以步骤 507中采用在 SDP中包含第一视频的原参数集 NALU和原参数集
NALU对应的用于解码 VCL NALU的参数集的参数集 ID为例进行说明。 第一 拼接器在执行步骤 513时, 参数集标识修改信息 SEI消息的格式如表 9所示:
表 9
其中, 表 9各参数的作用与表 8类似, 本发明实施例在此不再详述。 作为本发明实施例的另一种实现方式, 第一视频还可以在会话过程中间 确定。 采用此种方案, 拼接器上需预先配置第一内容服务器的地址, 当拼接 器确定需要进行拼接准备时, 向第一内容服务器请求第一视频码流。 采用此 种方案, 终端在会话初始或者会话建立前获得的媒体描述信息中只有第二视 频的参数集, 终端需要在会话中间重新获取包含第二视频的参数集、 第一视 频的参数集的媒体描述信息。 参见图 6, 本发明实施例提供的另一码流拼接 方法流程图, 包括如下步骤:
步骤 601-605, 与步骤 501-504相同, 本发明实施例在此不再详述。 步骤 606、 应用服务器向终端发送第一媒体描述信息获取响应消息, 其 中的媒体描述信息包含第二视频的参数集。
步骤 607-609与步骤 509-511相同, 本发明实施例在此不再详述。
步骤 610、 拼接器根据配置的第一内容服务器的地址, 向第一内容服务 器发送第一视频获取请求, 所述第一视频获取请求中还可以包含用户标识, 第二视频码流标识信息。
具体的, 在执行此步骤之前, 拼接器判断是否需要进行拼接准备, 如果 需要进行拼接准备, 拼接器向第一内容服务器发送第一视频获取请求。
拼接器判段是否需要进行拼接准备的方法参见步骤 512的描述, 本发明 实施例在此不再详述。
步骤 611、 第一内容服务器确定第一视频码流, 将第一视频码流发送给 拼接器。
作为确定第一视频码流的一种可选方式, 第一内容服务器接收到的步骤 608 中的拼接器发送的第一视频获取请求中包含终端用户的标识, 第一内容 服务器根据终端用户的标识获取终端用户的用户偏好, 根据获取的用户偏好 选择第一视频并确定第一视频码流。
作为确定第一视频码流的另一种可选方式, 第一内容服务器还可以仅根 据第二视频流的标识信息获取第二内容的插播策略, 根据插播策略选择第一 内容并确定第一视频码流。 采用此种方法时, 步骤 608中的第一视频获取请 求需要包含第二视频流的标识信息。 当然, 第一内容服务器还可以仅根据存 储的业务策略选择第一内容。 此外, 第一内容服务器还可以采用别的方式确定第一视频码流, 本发明 实施例在此不再——详述。 步骤 612、 第一内容服务器将第一视频的媒体描述信息发送给应用服务 器, 第一视频的媒体描述信息包含第一视频的原参数集, 第一视频的参数集 的类型及与各类型对应的参数集的原参数集 ID。
步骤 613、 应用服务器修改第一视频的原参数集 ID。
在执行步骤 613之前, 作为一种可选方式, 应用服务器根据终端用户的 标识或者第二视频码流标识信息确定接收到的第一视频的媒体描述信息对应 的第二视频的描述信息。应用服务器修改第一视频的原参数集 ID的具体方法 与步骤 506相同, 本发明实施例在此不再详述。
步骤 614、 应用服务器向拼接器发送第二视频码流和第一视频码流信息。 具体的, 第二视频码流信息为第二视频码流标识信息, 第一视频码流信息为 第一视频参数集 ID修改信息。 步骤 614与步骤 508相同, 本发明实施例在此不再详述。
步骤 615、拼接器根据第一视频参数集 ID修改信息生成第一视频的不生效 的参数集标识修改消息(如: 参数集标识修改信息 SEI消息), 参数集标识修 改消息除第一视频的参数集 ID修改信息外, 进一步包含指示参数集 ID修改信 息不生效的标志信息。 本流程以参数集标识修改消息中只包含 VCL NALU直接引用的参数集类 型对应的参数集 ID修改信息, 并且参数集标识修改消息为参数集标识修改信 息 SEI消息为例进行说明。 具体的, 在参数集标识修改信息 SEI消息为例中包 含修改信息生效标志( change_info_enable_flag )并设置该标志的取值为 0, 当 然, 还可以用其它的方式, 如取值为字符, F,、 字符串, TALSE,等其他的标识, 指示参数集 ID修改信息 SEI消息中携带的参数集 ID修改信息不生效,本发明实 施例在此不做限定。
以第一视频的参数集修改信息包含第一视频的待修改参数集 ID的参数集 类型以及与待修改参数集 ID的参数集类型对应的参数集 ID偏移为例, 并且第 一编码器为遵循 HEVC标准的编码器进行说明。 进一步携带修改信息生效标 志的 parameter Set ID Change Info SEI message的格式 口表 10所示:
表 10
其中, 在本步骤中, 拼接器将 change_info_enable_flag设置为 0。 表 明该消息的参数集 ID修改信息暂时不生效。 对于该消息的其它参数, 与 表 2所述, 本发明实施例在此不再详述。
步骤 616、 拼接器向终端发送包含指示参数集 ID修改信息不生效的标 志信息的第一视频的参数集标识修改消息(即不生效的参数集标识修改消息 ) 和第二视频码流。
具体的, 拼接器随第二视频码流发送步骤 615中生成的包含指示参数集 ID修改信息不生效的标志信息的参数集标识修改消息, 如包含指示参数集 ID修改信息不生效的标志信息的的参数集 ID修改信息 SEI消息。 类似的, 为了保证终端收到该 SEI消息, 可以在连续多个 AU中插入封装有该参数集 标识爹改消息的 NALU。
为了保证平滑传输, 拼接器通常设有緩沖区。 拼接器在接收视频码流后, 将视频码流存储在緩沖区中。 为了减少发送包含指示参数集 ID修改信息不 生效的标志信息的参数集标识修改消息所带来的开销, 拼接器也可以等待拼 接点之前的第二视频码流緩沖完毕后, 判断当前待发送第二视频图片是否为 拼接点之前最后一个 RAP, 如果是, 随该第二视频 RAP发送包含指示参数 集 ID修改信息不生效的标志信息的参数集标识修改消息。 类似的, 为了保 证终端收到该 SEI消息, 可以在该 RAP AU之后连续多个 AU中插入封装有 该参数集标识爹改消息的 NALU。
如果参数集标识修改消息为 PPS标识修改信息 SEI消息和 /或 APS标识 修改信息 SEI消息步骤 614中拼接器还可以类似地生成包含指示参数集 ID 修改信息不生效的标志信息的的 PPS标识修改信息 SEI消息和 /或包含指示 参数集 ID 改信息不生效的标志信息的的 APS标识^ ί'爹改消息 SEI消息。
步骤 617、 终端接收包含指示参数集 ID修改信息不生效的标志信息的 第一视频的参数集标识修改消息, 确认其中包含指示参数集 ID修改信息不 生效的标志信息, 向应用服务器发送第二媒体描述信息获取请求 (如会话更 改请求)。
具体的 , 终端确 定接收到 的参数集标识修改消 息 中 的 change info enable flag为 0,即确认参数集标识修改消息包含指示参数集 ID 修改信息不生效的标志信息。
终端向应用服务器发送媒体描述信息获取请求, 如 SIP Re-Invite请求、
RTSP Get Parameter清求。
步骤 618、 应用服务器向终端发送第二媒体描述信息获取响应 (如会话 更改响应) , 媒体描述信息获取响应中包含第二视频参数集 NALU、 第一视 频参数集 NALU。 其中第一视频参数集 NALU中的参数集 ID为修改后的第 一视频的参数集 ID, 具体的为第一视频的参数集 ID的原取值加上参数集 ID 的偏移, 或者应用服务器直接为修改后的第一视频的参数集 ID分配的取值。
步骤 619、 拼接器生成包含指示参数集 ID修改信息生效的标志信息的 参数集标识修改消息 (如: 参数集 ID修改信息 SEI消息, 或者 PPS标识修改 信息 SEI消息和 /或 APS标识爹改信息 SEI消息,即将 change_info_enable_flag 设置为 1。
步骤 620、 拼接器向终端发送包含指示参数集 ID修改信息生效的标志 信息的参数集标识修改消息和第一视频码流。
在执行步骤 620之前, 拼接器还要判断是否到达拼接点。 拼接器在到达 拼接点时向终端发送参数集标识修改消息和第一视频码流。 拼接器判断是否 到达拼接点的具体方式与图 5所述流程中相同的描述相同。
为了确保随机接入,参数集标识修改消息(参数集 ID修改信息 SEI消息, 或者 PPS标识修改信息 SEI消息和 /或 APS标识修改信息 SEI消息) 至少随 随机接入点发送并应用于关联的 RAP和下一个 RAP之间的所有图片。 RAP 是码流中间某个只采用帧内预测的图片,解码器可以从该图片开始解码过程。 参数集标识修改消息随 RAP发送时,拼接器将封装有参数集标识修改消息的 NALU插入到关联 RAP的 AU分隔符 NALU后、 所有 VCL NALU之前。
621、终端接收包含指示参数集 ID修改信息生效的标志信息的参数集标 识修改消息 (如参数集 ID修改信息 SEI消息, 或者 PPS标识修改信息 SEI 消息和 /或 APS标识修改信息 SEI消息 )后, 确认其中包含指示参数集 ID修 改信息生效的标志信息(如参数集标识修改消息中的 change_info_enable_flag 的取值为 1 ) , 根据包含指示参数集 ID修改信息生效的标志信息的参数集 标识修改消息确定用于解码 VCL NALU的参数集的参数集 ID。根据确定的参 数集 ID从通过带外方式获取的参数集中获取参数集 ID与确定的参数集 ID相 同的参数集。
根据参数集标识修改消息确定用于确码一视频码流中 VCL NALU参数 集的参数集 ID方法可以参考步骤 515的描述, 本发明实施例在此不在详述。 作为一种可选方式, 在执行步骤 614后, 还可以不用执行步骤 615到 618, 而由应用服务器主动向终端发送媒体描述信息 (本流程图没有示出) 。 媒体 描述信息中包含第二视频的参数集、 第一视频的修改改后参数集。 其中第一 视频的修改后的参数集中参数集 ID为修改后的第一视频的参数集 ID (即用 于解码 VCL NALU的参数集的参数集 ID ) 。 具体的, 应用服务器可以向终 端发送包含媒体描述信息的会话更改请求消息, 如 SIP Re-Invite请求消息、 SIP Update 请求消息; 或者向终端发送包含媒体描述信息的通知消息, 如 RTSP Play-Notify请求消息、 RTSP Set Parameter请求消息、 RTSP Notify请求 消息或者 SIP Info请求消息。 终端接收应用服务器发送的媒体描述信息, 获 取其中的第二视频参数集 NALU、 第一视频参数集 NALU。 还可以不执行步 骤 619-622, 转而执行步骤 513-516。
作为另一种可选方式, 图 6对应的流程中的参数集标识修改消息中还包 含第一视频的 VCL NALU间接引用的参数集类型对应的参数集 ID修改信息, 相应地, 步骤 618中媒体描述信息获取响应消息或者应用服务器主动向终端 发送的媒体描述信息中包含第一视频的原参数集为以及用于解码 VCL NALU 的参数集的参数集 ID。
作为本发明的另一可选方式, 参数集标识修改消息 (如参数集 ID修改
SEI消息)中包含待修改参数集 ID的参数集类型, 而不携带其他的参数集 ID 修改信息, 如不携带修改后的值或参数集 ID修改偏移, 即携带一个或多个 * * *_id_change_flag, 而不携带 * * *— id— diff参数或 new_* * *_id参数。 终端收到 参数集标识修改消息后,根据参数集标识修改消息确定需要修改 ID的第一视 频参数集的类型,通过 RTCP消息请求拼接器发送需要修改 ID的第一视频参 数集类型对应的 ***_id_diff或者 new_***_id, 拼接器通过 RTCP消息将终端 请求的参数集 ID修改信息发送给终端。 即为了保证随机接入, 以 RAP间隔 轮播的只是 ***_id_change_flag, ***_id_diff或者 new_***_id只需要发送一次。 本实施例中, 其中 "***" 为参数集类型。 图 7为本发明实施例提供的另一码 流拼接方法流程图, 包括如下步骤:
步骤 701-712与步骤 501-512相同, 本发明实施例在此不再详述。
步骤 713、 拼接器生成参数集标识修改消息 (如参数集 ID修改信息 SEI 消息 ) 。 所述参数集标识修改消息中只包括待修改参数集 ID的参数集类型, 而不携带其他的参数集 ID修改信息,如不携带用于解码 VCL NALU的参数 集的参数集 ID或者参数集 ID偏移。
具体的, 如果在步骤 707中应用服务器向终端发送的媒体描述信息中携 带了第一视频的修改后的参数集(即修改后的参数集中的参数集 ID为用于解 码 VCL NALU的参数集的参数集 ID ), 则此步骤的待修改参数集 ID的参数 集类型仅为 VCL NALU直接引用的参数集类型。以第一编码器为遵循 HEVC 编码标准的编码器为例进行说明。 待修改参数集 ID的参数集类型为 APS和 / 或 PPS,即参数集 ID修改信息中携带 aps_id_change_flag、 pps id change flag, 如果拼接器接收到第一视频的参数集 ID修改信息中待修改 ID的第一视频参 数集类型包含 APS, 拼接器将 aps_id_change_flag设置为 1, 否则设置为 0; 如果如果拼接器接收到第一视频的参数集 ID修改信息中待修改 ID的第一视 频参数集类型包含 PPS, 拼接器将 pps_id_change_flag设置为 1, 否则设置为 0。
作为另一种可选方式, 第一如果在步骤 709中应用服务器向终端发送的 媒体描述信息中携带的是原始的第一视频参数集 NALU, 此步骤的待修改参 数集 ID的参数集类型还包含 VCL NALU间接引用的参数集类型。 以第一编 码器为遵循 HEVC编码标准的编码器为例进行说明。 参数集标识修改消息中 需 包含 vps id change flag、 sps id change flag 、 aps id change flag 、 pps id change flag, 此时参数集 ID修改信息 SEI消息的具体格式如表 11所 parameter set id change info (PayloadSize) { Descriptor vps id change flag u(l) sps id change flag u(l) aps id change flag u(l) pps id change flag u(l)
}
表 11
其中, 表 11中各参数的设置与表 9相同, 本发明实施例在此不再详述。 步骤 714、 拼接器向终端发送参数集标识修改消息(如 Parameter Set ID Change Info SEI message )和第一视频码流。 所述参数集标识修改消息中只包 括修改的参数集 ID的参数集类型, 而不携带其他的参数集 ID修改信息, 如 不携带用于解码 VCL NALU的参数集的参数集 ID或者原参数集 ID的偏移。
步骤 715、终端根据参数集标识修改消息确定需要修改 ID的参数集类型。 步骤 716、 终端向拼接器发送 RTCP请求, 其中包含步骤 715中确定的 需要修改参数集 ID的的参数集类型。上述 RTCP请求可以是 RTCP参数集标 识爹改信息请求 Parameter Set ID Change -Request消息, 简称 RTCP PSIC-R 消息。 RTCP PSIC-R消息是一种 RTCP反馈消息, 采用如图 8所示。
其中: PT(Payload Type): RTCP包类型
FMT(Feedback Message Type): 反馈消息类型, 在包类型下唯一
SSRC of packet sender: RTCP反馈消息发送方的 SSRC
SSRC of media source: RTCP反馈消息对应的 RTP流的 SSRC。
FCI(Feedback Control Information, 反馈控制信息): RTCP反馈消息的内 容, 不同类型的 RTCP反馈消息中包含不同的内容。
RTCP PSIC-R消息中 PT取值为 206,代表它是 Payload Specific Feedback Message; FMT取值为 4, 代表它是 PSIC消息; SSRC of packet sender为终端 的 SSRC; SSRC of media source从 SDP中获取, 为承载输出视频码流的 RTP 流的 SSRC, 也即第二视频码流标识信息中的 SSRC。 (对于终端来说, 不区 分第二视频码流和第一视频码流, 终端看到的 SSRC是一个) 。 FCI的格式 如图 9所示。 其中
SFMT(Sub Feedback Message Type,子反馈消息类型): PSIC消息的类型。 这里设置为 1, 代表为 PSIC-R消息;
Number of Parameter Set Type: 需要修改 ID的参数集类型的个数;
Parameter Set Type: 需要修改 ID的参数集类型标识, 共有 Number of Parameter Set Type个 Parameter Set Type。 Parameter Set Type可以有多种形式。 以第一编码器为遵循 HEVC标准的编码器为例, Parameter Set Type的取值可 以为正整数, 并且取值 1、 2、 3、 4分别代表 VPS、 SPS、 PPS、 APS.
步骤 717、拼接器收到 RTCP请求(如 RTCP PSIC-R消息)后,通过 RTCP 响应 (如 RTCP PSIC-I消息)将第一视频的参数集 ID修改信息发送给终端。 RTCP PSIC-I消息也是一种 RTCP PSIC消息, 它的 SFMT设置为 2, 其中包 含 Number of Parameter Set ID Change Info (参数集标识修改信息个数 ) , 指 示 RTCP PSIC-I消息中包含的参数集标识修改信息条数。
如果参数集 ID修改信息包括需要修改 ID的第一视频参数集类型以及对 应的原参数集 ID的偏移, FCI的格式如图 10所示。 一条参数集标识修改信 息包括参数集类型( Parameter Set Type )和原参数集 ID的偏移( Parameter Set Diff ) 。
如果参数集 ID修改信息包括需要修改 ID的第一视频参数集类型以及对 应的参数集 ID映射关系, FCI格式如图 11所示。 一条参数集标识修改信息 包括 Parameter Set Type、 Original Parameter Set ID、 New Parameter Set ID 如果参数集 ID修改信息包括待修改 ID的第一视频参数集类型以及对应 的参数集 ID新取值, FCI格式如图 12所示。 一条参数集标识修改信息包括 Parameter Set Type , New Parameter Set ID。
步骤 720、终端接收 RTCP PSIC-I消息,对于每一个第一视频 VCL NALU, 终端根据 RTCP PSIC-I消息确定该 VCL NALU引用参数集的参数集 ID的取 值,并获取所有引用的参数集,并使用获得的参数集解码对应的 VCL NALU。
作为本发明实施例的另一种可选方式, 也可以完全通过传输层信令来由 拼接器向终端发送第一视频参数集 ID修改信息。 拼接器生成 RTCP PSCI-I 消息如前所述的 RTCP PSCI-I消息。 到达拼接点后, 拼接器向终端发送第一 视频码流和 RTCP PSCI-I消息,终端接收第一视频码流和 RTCP PSCI-I消息, 对于每一个第一视频 VCL NALU, 终端根据 RTCP PSIC-I消息确定该 VCL NALU引用参数集的参数集 ID的取值, 并获取所有引用的参数集, 终端使用 这些参数集解码对应的 VCL NALU。
此外,为了保证终端在解码第一视频码流之前获得第一视频参数集 ID修 改信息, 拼接器也可以在确定用于封装第一视频码流的第一个 RTP包的序列 号后, 向终端发送 RTCP PSCI-I消息。 此时, RTCP PSCI-I消息除包含步骤 717中 RTCP PSCI-I消息的全部信息外, 还包含 First Sequence Number (第一 序列号) , First Sequence Number是用于封装第一视频码流的第一个 RTP包 的序列号。 为了保证终端收到 RTCP PSCI-I消息, 拼接器可以连续发送多个 相同的 RTCP PSCI-I消息。
上述实施例中,都是由拼接器生成参数集标识修改消息(如: Parameter Set ID Change Info SEI Message ) 。 实际应用中, 参数集标识修改消息 (如: Parameter Set ID Change Info SEI Message )也可以由应用服务器生成,再发送 给拼接器。 比如应用服务器向拼接器发送参数集标识修改信息时, 直接以 Parameter Set ID Change Info SEI Message的形式发送第一视频的参数集 ID修 改信息。 拼接器只负责 Parameter Set ID Change Info SEI Message的发送。
由于应用服务器具备熵编码和熵解码能力, 当应用服务器生成 Parameter Set ID Change Info SEI Message时, Parameter Set ID Change Info SEI Message 中的 ***_id_diff、 或者 new_***_id可以采用熵编码, 比如无符号指数哥伦布 编码。 图 13 为本发明实例提供的数字视频码流的拼接方法的流程图,包括如下 步骤: 步骤 1301、从应用服务器接收第一视频码流的信息,所述第一视频码流 的信息包括第一视频的参数集修改信息; 具体的, 拼接器从应用服器接收第一视频码流的信息,所述第一视频码 流信息包括第一视频的参数集修改信息。 进一步的,拼接器还可以从应用服 务器接收第二视频码流的信息。 步骤 1302、根据所述第一视频参数集修改信息向终端发送第一视频码流 和第一视频的参数集标识修改消息, 所述第一视频的参数集标识修改消息携 带第一视频的参数集标识 ID修改信息,以便于终端根据第一视频的参数集 ID 修改信息获取用于解码网络抽象层单元的视频编码层 VCL NALU的参数集的 参数集 ID ,以及终端根据所述用于解码 VCL NALU的参数集的参数集 ID获 取用于解码 VCL NALU的参数集,以及终端根据所述用于解码 VCL NALU 的参数集解码所述 VCL NALU ,并输出解码后的第一视频。 作为一种可选方式,在步骤 1302 之前,拼接器还在输出第二视频码流 的过程中暂停输出第二视频码流。 作为一种可选方式,
第一视频的参数集 ID修改信息为待修改的参数集 ID的参数集类型,拼 接器进一步接收终端接收终端发送的实时传输控制协议 RTCP请求, 所述 RTCP请求包含所述待修改参数集 ID的参数集类型;向终端返回 RTCP响应, 所述 RTCP响应中携带与所述待修改的参数集 ID的参数集类型对应的原参数 集 ID的偏移、 或携带与所述待修改的参数集 ID的参数集类型对应的用于解 码 VCL NALU的参数集的参数集 ID、 或者携带与待修改的参数集 ID的参 数集类型的所述原参数集 ID以及与所述原参数集 ID对应的用于解码 VCL NALU的参数集的参数集 ID。 或
所述参数集 ID修改信息为待修改的参数集 ID的参数集类型和与所述待 修改的参数集 ID的参数集类型对应的原参数集 ID的偏移,或为待修改的参 数集 ID的参数集类型和用于解码 VCL NALU的参数集的参数集 ID ,或包括 待修改的参数集 ID的参数集类型的所述原参数集 ID以及与所述原参数集 ID 对应的用于解码 VCL NALU的参数集的参数集 ID ,所述参数集 ID修改信息 进一步包含修改生效标志,所述根据所述用于解码 VCL NALU的参数集的参 数集 ID获取用于解码所述 VCL NALU的参数集之前,接器进一步向终端发 送所述第二视频码流的时发送不生效的第一视频的参数集标识修改消息;接 收终端发送的第二媒体描述信息获取请求;向终端返回第二媒体描述信息获 取响应,所述第二媒体描述信息获取响应中、 第一视频的修改后的参数集,所 述第一视频参数集 NALU中的参数集 ID为用于解码 VCL NALU的参数集的 参数集 ID。
作为一种可选方式,所述第一视频的参数集标识修改消息为 :参数集标 识修改补充增强信息 SEI消息、 自适应参数集标识修改 SEI消息或图片参数 集标识修改 SEI消息,拼接器进一步根据所述第一视频参数集修改信息生成 第一视频的参数集标识修改消息。
由上述实施例可知, 拼接器在接收到应用服务器发送的第一视频的参数 集修改信息后, 并不针对第一视频码流中的 VCL NALU引用的参数集 ID根 据参数集修改信息进行修改, 而是向终端发送携带参数集修改息的参数集标 识修改消息,由终端在解码第一视频流中的 VCL NALU之前,根据参数集标 识修改消息获取解码第一视频码流中的 VCL NALU的参数集来解码参数集。 因此,无需拼接器具有修改第一视频码流中的 VCL NALU引用的参数集 ID 的熵编码和熵解码的能力, 从而不需要在现有网络的拼接器上增加额外的硬 件资源, 或者使用新的拼接器对现有网络中的拼接器进行替换, 又能保证终 端解码正确。
图 14 为本发明实例提供的数字视频码流的拼接方法的流程图,包括如下 步骤:
步骤 1401、 接收第一内容服务器发送的第一视频的媒体描述信息, 所述 第一视频的媒体描述信息携带第一视频的原参数集第一视频的参数集的类型 及与各类型对应的参数集的原参数集 ID; 步骤 1402、 接收第二内容服务器发送的第二视频的媒体描述信息, 所述 第二视频的媒体描述信息中携带第二视频的参数集第二视频参数集的类型及 与各类型对应的参数集的参数集 ID;
步骤 1403、 确定同一类型的第一视频的参原参数集 ID与第二视频的参 数集的参数集 ID相同, 以及确定第一视频的参数集标识修改信息; 步骤 1404、 向拼接器发送第一视频流的信息,所述第一视频码流的信息 包括第一视频的参数集标识修改信息,所述第一视频的参数集修改标识信息 携带在第一视频的参数集标识修改消息中,以便于拼接器将所述第一视频的 参数集标识修改消息发送给终端,以及以便于终端根据所述第一视频的参数 集标识修改消息解码并输出第一视频。 作为一种可选方式, 应用服务器还根据所述确定的第一视频的参数集标 识修改信息将第一视频的原参数集的原参数集 ID修改为用于解码网络抽象 层单元的视频编码层 VCL NALU的参数集的参数集 ID;向终端发送携带第一 视频的修改后的参数集,修改后参数集中的参数集 ID为用于解码 VCL NALU 的参数集的参数集 ID;
所述第一视频的参数集标识修改消息包含所述待修改的参数集 ID的参 数集类型以及与待修改的参数集 ID的参数集类型对应的第一视频的原参数 集 ID的偏移, 或包含所述待修改的参数集 ID的参数集类型以及与待修改的 参数集 ID的参数集类型对应的用于解码 VCL NALU的参数集的参数集 ID , 或第一视频的参数集标识修改消息包含所述待修改的参数集 ID的参数集类 型的与所述原参数集 ID以及与所述原参数集 ID对应的用于解码 VCL NALU 的参数集的参数集 ID;
所述待修改的参数集 ID的参数集类型为所述 VCL NALU直接引用的参 数集类型。
作为另一种可选方式,应用服务器还需要向终端发送第一视频的原参数 集以及与所述原参数集 ID对应的用于解码 VCL NALU的参数集的参数集 ID, 所述第一视频的原参数集中携带所述原参数集 ID;
所述第一视频的参数集标识修改消息包含所述待修改的参数集 ID的参 数集类型以及与待修改的参数集 ID的参数集类型对应的所述原参数集 ID的 偏移,或第一视频的参数集标识修改消息包含所述待修改的参数集 ID的参数 集类型以及与待修改的参数集 ID的参数集类型对应的用于解码 VCL NALU 的参数集的参数集 ID ,或第一视频的参数集标识修改消息包含所述待修改的 参数集 ID的参数集类型的所述原参数集 ID以及与原参数集 ID对应的用于解 码 VCL NALU的参数集的参数集 ID;
所述待修改的参数集 ID的参数集类型为所述 VCL NALU直接引用的参 数集类型,以及所述 VCL NALU间接引用的参数集类型。 由上述实施例可知, 应用服务器在确定同一类型的第一视频参数集的原 参数集 ID与第二视频参数集的参数集 ID相同, 确定该类型的第一视频的原 参数集 ID的偏移或用于解码 VCL NALU的参数集的参数集 ID ,并直接向拼 接器发送第一视频的参数集标识修改消息,以便拼接器将所述第一视频的参 数集标识修改消息,从而无需拼接器具有修改第一视频码流中的 VCL NALU 引用的参数集 ID的熵编码和熵解码的能力,从而不需要在现有网络的拼接器 上增加额外的硬件资源, 或者使用新的拼接器对现有网络中的拼接器进行替 换, 又能保证终端解码正确。 图 15A为本发明实施例提供的数字视频码流的解码装置的结构示意图 , 包括接收模块 1501、 第一获取模块 1502、 第二获取模块 1503、 解码输入模 块 1504、 确定模块 1505和发送模块 1506。 具体的 ,接收模块 1501 ,用于接收第一视频码流和第一视频的参数集标 识修改消息,所述第一视频的参数集标识修改消息中包含第一视频的参数集 标识 ID修改信息;第一获取模块 1502 ,用于根据所接收模块 1501接收的所 述第一视频的参数集 ID修改信息获取用于解码网络抽象层单元的视频编码 层 VCL NALU的参数集的参数集 ID;第二获取模块 1503,用于根据所述第一 获取模块 1502获取的用于解码 VCL NALU的参数集的参数集 ID获取用于解 码所述 VCL NALU的参数集;解码输出模块 1504 ,用于根据第二获取模块 1503获取的所述用于解码 VCL NALU的参数集解码所述 VCL NALU ,并输 出解码后的第一视频。
作为一种可选方式,所述参数集 ID修改信息包括待修改的参数集 ID的 参数集类型和与所述待修改的参数集 ID的参数集类型对应的原参数集 ID的 偏移;所述第一视频码流中包含用于解码所述 VCL NALU的参数集的原参数 集 ID; 所述第一获取模块 1502具体用于:根据所述接收模块 1501接收的所 述待修改的参数集 ID的参数集类型从所述第一码流中获取与所述待修改的 参数集 ID的参数集类型对应的所述原参数集 ID; 根据所述原参数集 ID以及 所述待修改的参数集 ID的参数集类型对应的原参数集 ID的偏移从获取与所 述待修改的参数集 ID的参数集类型对应的用于解码 VCL NALU的参数集的 参数集 ID。
作为另一可选方式,所述参数集 ID修改信息包括待修改的参数集 ID的 参数集类型和用于解码 VCL NALU的参数集的参数集 ID,所述第一获取模块 1502具体用于:根据所述接收模块 1501接收的待修改的参数集 ID的参数 集类型从所述参数集 ID修改信息中获取与所述待修改的参数集 ID的参数集 类型对应的用用于解码 VCL NALU的参数集的参数集 ID。 作为另一可选方式,所述参数集 ID修改信息为待修改的参数集 ID的参 数集类型的原参数集 ID、 与所述原参数集 ID对应的用于解码 VCL NALU的 参数集的参数集 ID; 所述第一获取模块具体用于:根据所述接收模块接收的 所述待修改的参数集 ID的参数集类型对应的所述原参数集 ID获取所述原参 数集 ID对应的用于解码 VCL NALU的参数集的参数集 ID; 或第一获取模块 具体用于根据所述接收模块接收的所述待修改的参数集 ID 的参数集类型从 所述第一视频码流中获取与所述待修改的参数集 ID 的参数集类型对应的所 述原参数集 ID; 根据所述原参数集 ID获取所述原参数集 ID对应的用于解码 VCL NALU的参数集的参数集 ID。 作为另一可选方式,所述第一视频参数集 ID修改信息为待修改的参数集
ID的参数集类型, 所述装置进一步包括: 发送模块 1506, 用于向拼接器发送 实时传输控制协议 RTCP请求,所述 RTCP请求包含所述待修改参数集 ID的 参数集类型; 所述接收模块 1501进一步用于: 接收所述拼接器返回的 RTCP 响应,所述 RTCP响应中携带与待修改的参数集 ID的参数集类型对应的原参 数集 ID的偏移, 或与待修改的参数集 ID的参数集类型对应的用于解码 VCL NALU的参数集的参数集 ID, 或与待修改的参数集 ID的参数集类型的所述 原参数集 ID以及与所述原参数集 ID对应的用于解码 VCL NALU的参数集的 参数集 ID;所述第一获取模块 1502具体用于:根据所述接收模块 1501接收 的所述 RTCP响应中携带的与待修改的参数集 ID的参数集类型对应的原参数 集 ID的偏移或与待修改的参数集 ID的参数集类型对应的用于解码 VCL NALU的参数集的参数集 ID, 或者根据与待修改的参数集 ID的参数集类型 的原参数集 ID以及与原参数集 ID对应的用于解码 VCL NALU的参数集的参 数集 ID ,从所述参数集 ID修改信息中获取与所述待修改的参数集 ID的参数 集类型对应的用于解码 VCL NALU的参数集的参数集 ID。
可选的, 所述参数集 ID修改信息还包括修改生效标志。 所述接收模块 1501进一步用于,在接收第一视频码流和第一视频的参数集标识修改消息之 前,接收不生效的第一视频的参数集标识修改消息; 该装置进一步包括: 确 定模块 1505进一步用于,确定所述接收模块接收的所述不生效的第一视频的 参数集标识修改消息包含指示参数集 ID修改信息不生效的标志信息;发送 模块 1506, 用于向应用服务器发送第二媒体描述信息获取请求;所述接收模 块 1501进一步用于:接收应用服务器返回的第二媒体描述信息获取响应,所 述第二媒体描述信息获取响应中携带第二视频参数集、 第一视频的修改后的 参数集,所述第一视频修改后的参数集中的参数集 ID为所述用于解码 VCL NALU的参数集的参数集 ID。
可选的,所述接收模块 1501在所述第二获取模块 1503根据所述用于解 码 VCL NALU的参数集的参数集 ID获取用于解码所述 VCL NALU的参数集 之前,进一步用于通过带外方式获取第一视频的修改后的参数集, 所述修改 后的参数集中的参数集 ID为用于解码 VCL NALU的参数集的参数集 ID;或 所述接收模块 1501在所述第二获取模块 1503根据所述用于解码 VCL NALU的参数集的参数集 ID获取用于解码所述 VCL NALU的参数集之前, 进一步用于通过带外方式获取第一视频的原参数集以及用于解码 VCL NALU 的参数集的参数集 ID; 根据所述修改后参数集 ID修改所述原参数集 ID。
所述待修改的参数集 ID的参数集类型为 VCL NALU直接引用的参数集 类型;所述第一获取模块 1502具体用于:获取所述接收模块接收的与所述 VCL NALU直接引用的参数集类型对应的用于解码 VCL NALU的的 VCL NALU直接引用的参数集的参数集 ID ,并在第二获取模块 1503根据获取的 用于解码 VCL NALU的 VCL NALU直接引用的参数集的参数集 ID获取所述 第一视频码流中 VCL NALU直接引用的参数集后,第一获取模块 1502进一 步从所述所述直接引用的参数集中获取用于解码 VCL NALU的 VCL NALU 间接引用的参数集的参数集 ID;或
所述待修改的参数集 ID的参数集类型为所述 VCL NALU直接引用的参 数集类型和所述 VCL NALU间接引用的参数集类型所述第一获取模块 1502 具体用于:分别根据所述第一视频的参数集 ID修改信息获取与所述 VCL NALU直接引用的参数集类型对应的用于解码 VCL NALU的 VCL NALU的 直接引用的参数集的参数集 ID ,以及获取与所述 VCL NALU间接引用的参 数集类型对应的用于解码 VCL NALU的参数集的参数集 ID;
所述第二获取模块 1503具体用于:根据所述第一获取模块 1502获取的 直接引用的参数集的参数集 ID以及间接引用的参数集的参数集 ID获取所述 VCL NALU的直接引用的参数集以及所述 VCL NALU的间接引用的参数集; 所述解码输出模块 1504具体用于:根据所述第二获取模块 1502获取的 所述 VCL NALU的直接引用的参数集以及所述 VCL NALU的间接引用的参 数集解码所述 VCL NALU ,并输出解码后的第一视频。值得说明的是,图 15 所述的装置可以是前述实施例中的终端,可以执行前述实施例中终端执行的 任一步骤,本发明实施例在此不再 _ _详述。
图 16为本发明实施例提供的数字视频码流的拼接装置,包括:接收模块
1601、 生成模块 1602以及发送模块 1603。
具体的,接收模块 1601用于从应用服务器接收第一视频码流的信息, 所述第一视频码流信息包括第一视频的参数集修改信息;
发送模块 1603用于根据所述接收模块 1601接收的所述第一视频参数集 修改信息向终端发送第一视频码流和第一视频的参数集标识修改消息, 所述 第一视频的参数集标识修改消息携带第一视频的参数集标识 ID修改信息,以 便于终端根据第一视频的参数集 ID修改信息获取用于解码网络抽象层单元 的视频编码层 VCL NALU的参数集的参数集 ID,以及终端根据所述用于解码 VCL NALU的参数集的参数集 ID获取用于解码所述 VCL NALU的参数集, 以及终端根据所述用于解码 VCL NALU的参数集解码所述 VCL NALU ,并 输出解码后的第一视频。
作为一种可选方式,当第一视频的参数集 ID修改信息为待修改的参数集 ID的参数集类型时,所述接收模块 1601进一步用于接收终端发送的实时传 输控制协议 RTCP请求,所述 RTCP请求包含所述待修改参数集 ID的参数集 类型;所述发送模块 1603进一步用于向终端返回 RTCP响应, 所述 RTCP响 应中携带与所述待修改的参数集 ID的参数集类型对应的原参数集 ID的偏移, 或携带与待修改的参数集 ID的参数集类型对应的用于解码 VCL NALU的参 数集的参数集 ID, 或者携带与待修改的参数集 ID的参数集类型的所述原参 数集 ID以及与所述原参数集 ID对应的用于解码 VCL NALU的参数集的参数 集 ID。 可选的,所述参数集 ID修改信息包括待修改的参数集 ID的参数集类型 和与所述待修改的参数集 ID的参数集类型对应的原参数集 ID的偏移,或包 括待修改的参数集 ID的参数集类型和用于解码 VCL NALU的参数集的参数 集 ID ,或包括待修改的参数集 ID的参数集类型的所述原参数集 ID以及与所 述原参数集 ID对应的用于解码 VCL NALU的参数集的参数集 ID时,所述参 数集 ID修改信息进一步包含修改生效标志,所述发送模块 1603向终端发送 第一视频码流和第一视频的参数集标识修改消息之前,进一步用于向终端发 送所述第二视频码流的时发送不生效的第一视频的参数集标识修改消息; 所 述接收模块 1601进一步用于用于接收终端发送的第二媒体描述信息获取请 求; 所述发送模块 1603进一步用于向终端返回第二媒体描述信息获取响应, 所述第二媒体描述信息获取响应中携带第一视频的修改后的参数集, 所述第 一视频的修改后的参数集中的参数集 ID为用于解码 VCL NALU的参数集的 参数集 ID。
可选的, 该装置进步一包括生成模块 1602,用于根据所述第一视频参数 集修改信息生成第一视频的参数集标识修改消息。
值得说明的是,生成模块 1602进一步用于根据接收模块 1601接收的信 息生成发送给发送模块 1603的任一消息。 本发明实施例在此不再 _ _详述。 具体的,可参见前述方法实施例各步骤的描述。此外,图 16所述的装置可以 是前述实施中的拼接器,可以执行前述实施例中拼接器执行的任一步骤,本 发明实施例在此不再 _ _详述。
图 17为本发明实施例提供的数字视频码流的拼接装置,包括第一接收模 块 1701、 第二接收模块 1702、 确定模块 1703和发送模块 1704。
具体的,第一接收模块 1701, 用于接收第一内容服务器发送的第一视频 的媒体描述信息, 所述第一视频的媒体描述信息携带第一视频的原参数集和 第一视频的参数集的类型及与各类型对应的参数集的原参数集 ID;
第二接收模块 1702,用于接收第二内容服务器发送的第二视频的媒体描 述信息, 所述第二视频的媒体描述信息中携带第二视频的参数集、 第二视频 参数集的类型及与各类型对应的参数集的参数集 ID;
确定模块 1703, 用用于确定同一类型的所述第一接收模块 1701接收的 第一视频的原参数集 ID与所述第二接收模块 1702接收的第二视频参数集 ID 相同, 以及确定第一视频的参数集标识修改信息;
发送模块 1704, 用于向拼接器发送第一视频流的信息,所述第一视频码 流的信息包括第一视频的参数集修改信息,所述第一视频的参数集修改信息 携带在第一视频的参数集标识修改消息中,以便于拼接器将所述第一视频的 参数集标识修改消息发送给终端,以及以便于终端根据所述第一视频的参数 集标识修改消息解码并输出第一视频。
作为一种可选方式,该装置进一步包括:修改模块 1705 ,用于根据所述 确定模块 1703确定所述参数集标识修改信息将第一视频的原参数集的原参 数集 ID修改为用于解码网络抽象层单元的视频编码层 VCL NALU的参数集 的参数集 ID;
所述发送模块进一步用于:向终端发送第一视频的修改后的参数集,修改 后参数集中的参数集 ID为所述用于解码 VCL NALU的参数集的参数集 ID;
所述第一视频的参数集标识修改消息包含所述待修改的参数集 ID的参 数集类型以及与待修改的参数集 ID的参数集类型对应的第一视频的原参数 集 ID的偏移, 或包含所述待修改的参数集 ID的参数集类型以及与待修改的 参数集 ID的参数集类型对应的用于解码 VCL NALU的参数集的参数集 ID , 或第一视频的参数集标识修改消息包含所述待修改的参数集 ID的参数集类 型的与原参数集 ID对应的用于解码 VCL NALU的参数集的参数集 ID;
所述待修改的参数集 ID的参数集类型为所述 VCL NALU直接引用的参 数集类型。
作为另一种可选方式, 所述发送模块进一步用于: 向终端发送第一视频 的原参数集以及与所述原参数集 ID对应的用于解码 VCL NALU的参数集的 参数集 ID,所述第一视频的原参数集中携带所述原参数集 ID;
所述第一视频的参数集标识修改消息包含所述待修改的参数集 ID的参 数集类型以及与待修改的参数集 ID的参数集类型对应的所述原参数集 ID的 偏移,或第一视频的参数集标识修改消息包含所述待修改的参数集 ID的参数 集类型以及与待修改的参数集 ID的参数集类型对应的用于解码 VCL NALU 的参数集的参数集 ID ,或第一视频的参数集标识修改消息包含所述待修改的 参数集 ID的参数集类型中的所述原参数集 ID以及与原参数集 ID对应的用于 解码 VCL NALU的参数集的参数集 ID; 所述待修改的参数集 ID的参数集类型为所述 VCL NALU直接引用的参 数集类型,以及所述 VCL NALU间接引用的参数集类型。
图 17所示的装置可以为应用服务器,可以执行前述实施例中应用服务器 执行的任一步骤或功能, 本发明实施例在此不再详述。
图 18为本发明实施例提供的数字视频码流的解码装置或拼接装置的结 构示意图 ,包括处理器 1801、输入设备 1802、输出设备 1803、存储器 1804 和通信接口 1805。计算机系统可具体是基于处理器的计算机,如通用个人计 算机( PC ) ,便携式设备如平板计算机,或智能手机。计算机系统包括总线, 处理器,存储器,通信接口 ,输入设备和输出设备。 总线可包括一通路,在 计算机各个部件之间传送信息。 处理器 1801可以是一个通用中央处理器 ( CPU ),微处理器,特定应用集成电路 application-specific integrated circuit (ASIC) ,或一个或多个用于控制本发明方案程序执行的集成电路。 计算机系 统还包括一个或多个存储器 1805 ,可以是只读存储器 read-only memory (ROM) 或可存储静态信息和指令的其他类型的静态存储设备,随机存取存储 器 random access memory (RAM) 或者可存储信息和指令的其他类型的动 态存储设备,也可以是磁盘存储器。 这些存储器通过总线与处理器相连接。
输入设备 1801可包括一种装置,以接收用户输入的数据和信息,例如 键盘,鼠标、 摄像头,扫描仪,光笔,语音输入装置,触摸屏等。 输出设备 可包括一种装置,以允许输出信息给用户 ,包括显示屏,打印机,扬声器等。 计算机系统还包括一个通信接口 1804 ,使用任何收发器一类的装置,以便与 其他设备或通信网络通信,如以太网,无线接入网( RAN ),无线局域网 (WLAN) 等.
存储器 1805 ,如 RAM ,保存有操作系统和执行本发明方案的程序。 操 作系统是用于控制其他程序运行,管理系统资源的程序。 执行本发明方案的 程序代码保存在存储器中 ,并由处理器 1801来控制执行。
具体的, 该存储器 1805可以存储指令, 以使处理器 1801执行以下流 程:
接收第一视频码流和第一视频的参数集标识修改消息,所述第一视频的 参数集标识修改消息中包含第一视频的参数集标识 ID修改信息;根据所述第 —视频的参数集 ID修改信息获取用于解码网络抽象层单元的视频编码层 VCL NALU的参数集的参数集 ID;根据所述用于解码 VCL NALU的参数集的 参数集 ID获取用于解码所述 VCL NALU的参数集;根据所述用于解码 VCL NALU的参数集解码所述 VCL NALU ,并输出解码后的第一视频。 值得说明 的是,处理器 1805还可以用于执行方法实施例中图 1到图 15描述终端 或解码装置执行的各步骤, 本发明实施例在此不再详述。
作为本发明实施例的另一可选方式, 处理器 1801还可以执行以下流 程: 从应用服务器接收第一视频码流的信息,所述第一视频码流的信息包括 第一视频的参数集修改信息;根据所述第一视频参数集修改信息向终端发送 第一视频码流和第一视频的参数集标识修改消息, 所述第一视频的参数集标 识修改消息携带第一视频的参数集标识 ID修改信息,以便于终端根据第一视 频的参数集 ID修改信息获取用于解码网络抽象层单元的视频编码层 VCL NALU的参数集的参数集 ID,以及终端根据所述用于解码 VCL NALU的参数 集的参数集 ID获取用于解码 VCL NALU的参数集,以及终端根据所述用于 解码 VCL NALU的参数集解码所述 VCL NALU ,并输出解码后的第一视频。 值得说明的是,处理器 1805还可以用于执行方法实施例中图 1到图 16 描述拼接器执行的各步骤, 本发明实施例在此不再详述。
作为另一可选方式, 处理器还可以执行以下流程, 接收第一内容服务 器发送的第一视频的媒体描述信息, 所述第一视频的媒体描述信息携带第一 视频的原参数集和第一视频的参数集的类型及与各类型对应的参数集的原参 数集 ID;接收第二内容服务器发送的第二视频的媒体描述信息,所述第二视频 的媒体描述信息中携带第二视频的参数集第二视频参数集的类型及与各类型 对应的参数集的参数集 ID;确定同一类型的第一视频的参原参数集 ID与第二 视频的参数集的参数集 ID相同, 以及确定第一视频的参数集标识修改信息; 向拼接器发送第一视频流的信息,所述第一视频码流的信息包括第一视频的 参数集标识修改信息,所述第一视频的参数集修改标识信息携带在第一视频 的参数集标识修改消息中,以便于拼接器将所述第一视频的参数集标识修改 消息发送给终端,以及以便于终端根据所述第一视频的参数集标识修改消息 解码并输出第一视频。值得说明的是,处理器 1805还可以用于执行方法实 施例中图 1到图 17描述应用服务器执行的各步骤, 本发明实施例在此不 再详述。 所属领域的技术人员可以清楚地了解到, 为描述的方便和简洁, 上述描 述的系统, 装置和单元的具体工作过程, 可以参考前述方法实施例中的对应 过程, 在此不再赘述。
在本申请所提供的几个实施例中, 应该理解到, 所揭露的系统, 装置和 方法, 可以通过其它的方式实现。 例如, 以上所描述的装置实施例仅仅是示 意性的, 例如, 所述单元的划分, 仅仅为一种逻辑功能划分, 实际实现时可 以有另外的划分方式, 例如多个单元或组件可以结合或者可以集成到另一个 系统, 或一些特征可以忽略, 或不执行。 另一点, 所显示或讨论的相互之间 的耦合或直接耦合或通信连接可以是通过一些接口, 装置或单元的间接耦合 或通信连接, 可以是电性, 机械或其它的形式。 为单元显示的部件可以是或者也可以不是物理单元, 即可以位于一个地方, 或者也可以分布到多个网络单元上。 可以根据实际的需要选择其中的部分或 者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中, 也可以是各个单元单独物理存在, 也可以两个或两个以上单元集成在一个单 元中。 上述集成的单元既可以采用硬件的形式实现, 也可以采用硬件加软件 功能单元的形式实现。
上述以软件功能单元的形式实现的集成的单元, 可以存储在一个计算机 可读取存储介质中。 上述软件功能单元存储在一个存储介质中, 包括若干指 令用以使得一台计算机设备(可以是个人计算机, 服务器, 或者网络设备等) 或处理器 (processor )执行本申请各个实施例所述方法的部分步骤。 而前述 的存储介质包括: U盘、移动硬盘、只读存储器( Read-Only Memory, ROM )、 随机存取存储器(Random Access Memory, RAM ) 、 磁碟或者光盘等各种可 以存储程序代码的介质。
最后应说明的是: 以上实施例仅用以说明本申请的技术方案, 而非对其 限制; 尽管参照前述实施例对本申请进行了详细的说明, 本领域的普通技术 人员应当理解: 其依然可以对前述各实施例所记载的技术方案进行修改, 或 者对其中部分技术特征进行等同替换; 而这些修改或者替换, 并不使相应技 术方案的本质脱离本申请各实施例技术方案的精神和范围。

Claims (25)

  1. 权利要求 书
    1.一种数字视频码流的解码方法,其特处在于,包括
    接收第一视频码流和第一视频的参数集标识修改消息,所述第一视频的 参数集标识修改消息中包含第一视频的参数集标识 ID修改信息;
    根据所述第一视频的参数集 ID修改信息获取用于解码网络抽象层单元 的视频编码层 VCL NALU的参数集的参数集 ID;
    根据所述用于解码 VCL NALU的参数集的参数集 ID获取用于解码所述 VCL NALU的参数集;
    根据所述用于解码 VCL NALU的参数集解码所述 VCL NALU ,并输出 解码后的第一视频。
  2. 2.如权利要求 1所述的方法,其特征在于,所述参数集 ID修改信息包括 待修改的参数集 ID的参数集类型和与所述待修改的参数集 ID的参数集类型 对应的原参数集 ID的偏移;所述第一视频码流中包含用于解码所述 VCL NALU的参数集的原参数集 ID;
    所述根据所述第一视频的参数集 ID修改信息获取用于解码 VCL NALU 的参数集的参数集 ID具体为 :
    根据所述待修改的参数集 ID的参数集类型从所述第一视频码流中获取 与所述待修改的参数集 ID的参数集类型对应的所述原参数集 ID;
    根据所述原参数集 ID以及与所述待修改的参数集 ID的参数集类型对应 的原参数集 ID的偏移获取与所述待修改的参数集 ID的参数集类型对应的用 于解码 VCL NALU的参数集的参数集 ID。
  3. 3. 如权利要求 1所述的方法,其特征在于,所述参数集 ID修改信息包 括待修改的参数集 ID的参数集类型和用于解码 VCL NALU的参数集的参数 集 ID;
    所述根据所述第一视频的参数集 ID修改信息获取所述用于解码 VCL
    NALU的参数集的参数集 ID具体为 :
    根据所述待修改的参数集 ID的参数集类型从所述参数集 ID修改信息中 获取与所述待修改的参数集 ID的参数集类型对应的用于解码 VCL NALU的 参数集的参数集 ID。
  4. 4.如权利要求 1所述的方法,其特征在于,所述参数集 ID修改信息包括 待修改的参数集 ID的参数集类型的原参数集 ID, 以及与所述原参数集 ID对 应的用于解码 VCL NALU的参数集的参数集 ID;
    所述根据所述第一视频的参数集 ID修改信息获取所述用于解码 VCL NALU的参数集的参数集 ID具体为 :
    根据所述待修改的参数集 ID的参数集类型对应的原参数集 ID获取所述 原参数集 ID对应的用于解码 VCL NALU的参数集的参数集 ID。
  5. 5.如权利要求 1所述的方法,其特征在于,所述第一视频参数集 ID修改 信息为待修改的参数集 ID的参数集类型, 该方法进一步包括:
    向拼接器发送实时传输控制协议 RTCP请求, 所述 RTCP请求包含所述 待修改参数集 ID的参数集类型;
    接收所述拼接器返回的 RTCP响应, 所述 RTCP响应中携带与待修改的 参数集 ID的参数集类型对应的原参数集 ID的偏移或与待修改的参数集 ID的 参数集类型对应的用于解码 VCL NALU的参数集的参数集 ID, 或者与待修 改的参数集 ID的参数集类型的所述原参数集 ID以及与所述原参数集 ID对应 的用于解码 VCL NALU的参数集的参数集 ID;
    所述根据所述第一视频的参数集 ID修改信息获取所述用于解码 VCL NALU的参数集的参数集 ID具体为 :
    根据所述 RTCP响应中携带的与待修改的参数集 ID的参数集类型对应的 原参数集 ID的偏移或与待修改的参数集 ID的参数集类型对应的用于解码 VCL NALU的参数集的参数集 ID, 或者根据与待修改的参数集 ID的参数集 类型的原参数集 ID以及与原参数集 ID对应的用于解码 VCL NALU的参数集 的参数集 ID ,从所述参数集 ID修改信息中获取与所述待修改的参数集 ID的 参数集类型对应的用于解码 VCL NALU的参数集的参数集 ID。
  6. 6 .如权利要求 2-4任一所述的方法,其特征在于,所述参数集 ID修改 信息还包括修改生效标志,所述接收第一视频码流和第一视频的参数集标识 修改消息之前,该方法进一步包括:
    接收不生效的第一视频的参数集标识修改消息;
    确定所述不生效的第一视频的参数集标识修改消息包含指示参数集 ID 修改信息不生效的标志信息;
    向应用服务器发送第二媒体描述信息获取请求; 接收应用服务器返回的第二媒体描述信息获取响应,所述第二媒体描述 信息获取响应中携带第一视频的修改后的参数集,所述第一视频修改后的参 数集中的参数集 ID为所述用于解码 VCL NALU的参数集的参数集 ID。
  7. 7、 如权利要求 1-5任一所述的方法,其特征在于,所述根据所述用于解 码 VCL NALU的参数集的参数集 ID获取用于解码所述 VCL NALU的参数集 之前该方法进一步包括:
    通过带外方式获取第一视频的修改后的参数集, 所述修改后的参数集中 的参数集 ID为用于解码 VCL NALU的参数集的参数集 ID; 或
    通过带外方式获取第一视频的原参数集以及用于解码 VCL NALU的参数 集的参数集 ID,所述第一视频的原参数集中携带所述原参数集 ID; 根据所述 用于解码 VCL NALU的参数集的参数集 ID修改所述原参数集 ID。
    8、 如权利要求 1-7任一所述的方法,其特征在于,所述待修改的参数集 ID的参数集类型为 VCL NALU直接引用的参数集类型,所述根据所述第一 视频的参数集 ID修改信息获取用于解码 VCL NALU的参数集的参数集 ID具 体为 :获取与所述 VCL NALU直接引用的参数集类型对应的用于解码 VCL NALU的 VCL NALU直接引用的参数集的参数集 ID ,该方法进一步包括: 根据获取的用于解码 VCL NALU的 VCL NALU直接引用的参数集的参数集 ID获取所述第一视频码流中 VCL NALU直接引用的参数集;从所述直接引用 的参数集中获取用于解码 VCL NALU的 VCL NALU间接引用的参数集的参 数集 ID;或
    所述待修改的参数集 ID的参数集类型为所述 VCL NALU直接引用的参 数集类型和所述 VCL NALU间接引用的参数集类型,所述根据所述第一视频 的参数集 ID修改信息获取用于解码 VCL NALU的参数集的参数集 ID具体为 : 分别根据所述第一视频的参数集 ID修改信息获取与所述 VCL NALU直接引 用的参数集类型对应的用于解码 VCL NALU的 VCL NALU的直接引用的参 数集的参数集 ID ,以及获取与所述 VCL NALU间接引用的参数集类型对应 的用于解码 VCL NALU的 VCL NALU间接引用的参数集的参数集 ID;所述根 据所述用于解码 VCL NALU的参数集的参数集 ID获取用于解码所述 VCL NALU的参数集具体为 :根据获取的直接引用的参数集的参数集 ID以及间接 引用的参数集的参数集 ID获取所述 VCL NALU的直接引用的参数集以及所 述 VCL NALU的间接引用的参数集;
    所述根据所述用于解码 VCL NALU的参数集解码所述 VCL NALU ,并 输出解码后的第一视频具体为 :根据获取的所述 VCL NALU的直接引用的参 数集以及所述 VCL NALU的间接引用的参数集解码所述 VCL NALU,并输出 解码后的第一视频。
  8. 9、 如权利要求 1-8任一所述的方法,其特征在于,所述第一视频的参数 集标识修改消息为 :补充增强信息 SEI消息。
  9. 10、 一种数字视频码流的拼接的方法,其特处在于,包括:
    从应用服务器接收第一视频码流的信息,所述第一视频码流的信息包括 第一视频的参数集修改信息;
    根据所述第一视频参数集修改信息向终端发送第一视频码流和第一视频 的参数集标识修改消息, 所述第一视频的参数集标识修改消息携带第一视频 的参数集标识 ID修改信息,以便于终端根据第一视频的参数集 ID修改信息 获取用于解码网络抽象层单元的视频编码层 VCL NALU的参数集的参数集 ID ,以及终端根据所述用于解码 VCL NALU的参数集的参数集 ID获取用于 解码 VCL NALU的参数集,以及终端根据所述用于解码 VCL NALU的参数 集解码所述 VCL NALU ,并输出解码后的第一视频。
  10. 1 1、 如权利要求 10所述的方法,其特征在于:该方法进一步包括: 从应用服务器接收第二视频码流的信息,并且在输出第二视频码流的过 程中暂停输出所述第二视频码流。
  11. 12、 如权利要求 10或 11所述的方法,其特征在于,第一视频的参数集 ID修改信息为待修改的参数集 ID的参数集类型,该方法进一步包括:
    接收终端发送的实时传输控制协议 RTCP请求, 所述 RTCP请求包含所 述待修改参数集 ID的参数集类型;
    向终端返回 RTCP响应, 所述 RTCP响应中携带与所述待修改的参数集
    ID的参数集类型对应的原参数集 ID的偏移、 或携带与所述待修改的参数集 ID的参数集类型对应的用于解码 VCL NALU的参数集的参数集 ID、 或者携 带与待修改的参数集 ID的参数集类型的所述原参数集 ID以及与所述原参数 集 ID对应的用于解码 VCL NALU的参数集的参数集 ID。
    13、 如权利要求 10或 11所述的方法,其特征在于,所述参数集 ID修改 信息包括待修改的参数集 ID的参数集类型和与所述待修改的参数集 ID的参 数集类型对应的原参数集 ID的偏移,或包括所述待修改的参数集 ID的参数 集类型和用于解码 VCL NALU的参数集的参数集 ID,或包括待修改的参数集 ID的参数集类型的所述原参数集 ID以及与所述原参数集 ID对应的用于解码 VCL NALU的参数集的参数集 ID ,所述参数集 ID修改信息进一步包含修改 生效标志,所述根据所述用于解码 VCL NALU的参数集的参数集 ID获取用 于解码所述 VCL NALU的参数集之前,该方法进一步包括:
    向终端发送所述第二视频码流的时发送不生效的第一视频的参数集标识 修改消息;
    接收终端发送的第二媒体描述信息获取请求;
    向终端返回第二媒体描述信息获取响应,所述第二媒体描述信息获取响 应中携带第一视频的修改后的参数集,所述第一视频的修改后的参数集中的 参数集 ID为用于解码 VCL NALU的参数集的参数集 ID。 14、 如权利要趟 9-13任一所述的方法,其特征在于,所述第一视频的参 数集标识修改消息为 :参数集标识修改补充增强信息 SEI消息、 自适应参数 集标识修改 SEI消息或图片参数集标识修改 SEI消息,该方法进一步包含: 根据所述第一视频参数集修改信息生成第一视频的参数集标识修改消
  12. 15、 一种数字视频码流的拼接方法,其特征在于,包括:
    接收第一内容服务器发送的第一视频的媒体描述信息, 所述第一视频的 媒体描述信息携带第一视频的原参数集和第一视频的参数集的类型及与各类 型对应的参数集的原参数集 ID;
    接收第二内容服务器发送的第二视频的媒体描述信息, 所述第二视频的 媒体描述信息中携带第二视频的参数集第二视频参数集的类型及与各类型对 应的参数集的参数集 ID;
    确定同一类型的第一视频的参原参数集 ID与第二视频的参数集的参数 集 ID相同, 以及确定第一视频的参数集标识修改信息;
    向拼接器发送第一视频流的信息,所述第一视频码流的信息包括第一视 频的参数集标识修改信息,所述第一视频的参数集修改标识信息携带在第一 视频的参数集标识修改消息中,以便于拼接器将所述第一视频的参数集标识 修改消息发送给终端,以及以便于终端根据所述第一视频的参数集标识修改 消息解码并输出第一视频。
  13. 16、 如权利要求 15所述的方法, 其特征在于, 该方法进一步包括: 根据所述确定的第一视频的参数集标识修改信息将第一视频的原参数集 的原参数集 ID修改为用于解码网络抽象层单元的视频编码层 VCL NALU的 参数集的参数集 ID;
    向终端发送第一视频的修改后的参数集,修改后参数集中的参数集 ID为 所述用于解码 VCL NALU的参数集的参数集 ID;
    所述第一视频的参数集标识修改消息包含所述待修改的参数集 ID的参 数集类型以及与待修改的参数集 ID的参数集类型对应的第一视频的原参数 集 ID的偏移, 或包含所述待修改的参数集 ID的参数集类型以及与待修改的 参数集 ID的参数集类型对应的用于解码 VCL NALU的参数集的参数集 ID , 或第一视频的参数集标识修改消息包含所述待修改的参数集 ID的参数集类 型的与所述原参数集 ID以及与所述原参数集 ID对应的用于解码 VCL NALU 的参数集的参数集 ID;
    所述待修改的参数集 ID的参数集类型为所述 VCL NALU直接引用的参 数集类型。
    17、 如权利要求 15所述的方法, 其特征在于, 该方法进一步包括: 向终端发送第一视频的原参数集以及与所述原参数集 ID对应的用于解 码 VCL NALU的参数集的参数集 ID,所述第一视频的原参数集中携带所述原 参数集 ID;
    所述第一视频的参数集标识修改消息包含所述待修改的参数集 ID的参 数集类型以及与待修改的参数集 ID的参数集类型对应的所述原参数集 ID的 偏移,或第一视频的参数集标识修改消息包含所述待修改的参数集 ID的参数 集类型以及与待修改的参数集 ID的参数集类型对应的用于解码 VCL NALU 的参数集的参数集 ID ,或第一视频的参数集标识修改消息包含所述待修改的 参数集 ID的参数集类型的所述原参数集 ID以及与原参数集 ID对应的用于解 码 VCL NALU的参数集的参数集 ID; 所述待修改的参数集 ID的参数集类型为所述 VCL NALU直接引用的参 数集类型,以及所述 VCL NALU间接引用的参数集类型。
  14. 18、 一种数字视频码流的解码装置,其特征在于包括:
    接收模块,用于接收第一视频码流和第一视频的参数集标识修改消息, 所述第一视频的参数集标识修改消息中包含第一视频的参数集标识 ID修改
    '害、,
    第一获取模块,用于根据所接收模块接收的所述第一视频的参数集 ID修 改信息获取用于解码网络抽象层单元的视频编码层 VCL NALU的参数集的参 数集 ID;
    第二获取模块,用于根据所述第一获取模块获取的用于解码 VCL NALU 的参数集的参数集 ID获取用于解码所述 VCL NALU的参数集;
    解码输出模块,用于根据所述第二获取模块获取的所述用于解码 VCL NALU的参数集解码所述 VCL NALU ,并输出解码后的第一视频。
  15. 19、 如权利要求 18所述的装置,其特征在于,所述参数集 ID修改信息 包括待修改的参数集 ID的参数集类型和与所述待修改的参数集 ID的参数集 类型对应的原参数集 ID的偏移;所述第一视频码流中包含用于解码所述 VCL NALU的参数集的原参数集 ID;
    所述第一获取模块具体用于:根据所述接收模块接收的所述待修改的参 数集 ID的参数集类型从所述第一码流中获取与所述待修改的参数集 ID的参 数集类型对应的所述原参数集 ID;
    根据所述原参数集 ID以及所述待修改的参数集 ID的参数集类型对应的 原参数集 ID的偏移从获取与所述待修改的参数集 ID的参数集类型对应的用 于解码 VCL NALU的参数集的参数集 ID。
    20、 如权利要求 18所述的装置,其特征在于,所述参数集 ID修改信息 包括待修改的参数集 ID的参数集类型和用于解码 VCL NALU的参数集的参 数集 ID ,所述第一获取模块具体用于:根据所述接收模块接收的待修改的参 数集 ID的参数集类型从所述参数集 ID修改信息中获取与所述待修改的参数 集 ID的参数集类型对应的用用于解码 VCL NALU的参数集的参数集 ID。
  16. 21、 如权利要求 18所述的装置,其特征在于,所述参数集 ID修改信息 为待修改的参数集 ID的参数集类型的原参数集 ID、与所述原参数集 ID对应 的用于解码 VCL NALU的参数集的参数集 ID;
    所述第一获取模块具体用于:根据所述接收模块接收的所述待修改的参 数集 ID的参数集类型对应的所述原参数集 ID获取所述原参数集 ID对应的用 于解码 VCL NALU的参数集的参数集 ID。
  17. 22、 如权利要求 18所述的装置,其特征在于,所述第一视频参数集 ID 修改信息为待修改的参数集 ID的参数集类型, 所述装置进一步包括:
    发送模块,用于向拼接器发送实时传输控制协议 RTCP请求,所述 RTCP 请求包含所述待修改参数集 ID的参数集类型;
    所述接收模块进一步用于: 接收所述拼接器返回的 RTCP响应, 所述 RTCP响应中携带与待修改的参数集 ID的参数集类型对应的原参数集 ID的 偏移, 或与待修改的参数集 ID的参数集类型对应的用于解码 VCL NALU的 参数集的参数集 ID, 或与待修改的参数集 ID的参数集类型的所述原参数集 ID以及与所述原参数集 ID对应的用于解码 VCL NALU的参数集的参数集 ID; 所述第一获取模块具体用于:根据所述接收模块接收的所述 RTCP响应 中携带的与待修改的参数集 ID的参数集类型对应的原参数集 ID的偏移或与 待修改的参数集 ID的参数集类型对应的用于解码 VCL NALU的参数集的参 数集 ID,或者根据与待修改的参数集 ID的参数集类型的原参数集 ID以及与 原参数集 ID对应的用于解码 VCL NALU的参数集的参数集 ID ,从所述参数 集 ID修改信息中获取与所述待修改的参数集 ID的参数集类型对应的用于解 码 VCL NALU的参数集的参数集 ID。
  18. 23、 如权利要求 19-21任一所述的装置,其特征在于,所述参数集 ID修 改信息还包括修改生效标志,
    所述接收模块进一步用于,在接收第一视频码流和第一视频的参数集标 识修改消息之前,接收不生效的第一视频的参数集标识修改消息;
    该装置进一步包括: 确定模块用于, 确定所述接收模块接收的所述不生 效的第一视频的参数集标识修改消息包含指示参数集 ID修改信息不生效的 标志信息;
    发送模块, 用于向应用服务器发送第二媒体描述信息获取请求; 所述接收模块进一步用于:接收应用服务器返回的第二媒体描述信息获 取响应,所述第二媒体描述信息获取响应中携带第二视频参数集、 第一视频 的修改后的参数集,所述第一视频修改后的参数集中的参数集 ID为所述用于 解码 VCL NALU的参数集的参数集 ID。
  19. 24、 如权利要求 18-23任一所述的装置,其特征在于,
    所述接收模块在所述第二获取模块根据所述用于解码 VCL NALU的参数 集的参数集 ID获取用于解码所述 VCL NALU的参数集之前,进一步用于通 过带外方式获取第一视频的修改后的参数集, 所述修改后的参数集中的参数 集 ID为用于解码 VCL NALU的参数集的参数集 ID;或
    所述接收模块在所述第二获取模块根据所述用于解码 VCL NALU的参数 集的参数集 ID获取用于解码所述 VCL NALU的参数集之前,进一步用于通 过带外方式获取第一视频的原参数集以及用于解码 VCL NALU的参数集的参 数集 ID; 根据所述用于解码 VCL NALU的参数集的参数集 ID修改所述原参 数集 ID。
  20. 25、 如权利要求 18-24任一所述的装置,其特征在于,
    所述待修改的参数集 ID的参数集类型为 VCL NALU直接引用的参数集 类型;所述第一获取模块具体用于:获取所述接收模块接收的与所述 VCL NALU直接引用的参数集类型对应的用于解码 VCL NALU的的 VCL NALU 直接引用的参数集的参数集 ID,并在第二获取模块根据获取的用于解码 VCL NALU的 VCL NALU直接引用的参数集的参数集 ID获取所述第一视频码流 中 VCL NALU直接引用的参数集后,第一获取模块进一步从所述所述直接引 用的参数集中获取用于解码 VCL NALU的 VCL NALU间接引用的参数集的 参数集 ID;或
    所述待修改的参数集 ID的参数集类型为所述 VCL NALU直接引用的参 数集类型和所述 VCL NALU间接引用的参数集类型,所述第一获取模块具体 用于:分别根据所述第一视频的参数集 ID修改信息获取与所述 VCL NALU 直接引用的参数集类型对应的用于解码 VCL NALU的 VCL NALU的直接引 用的参数集的参数集 ID ,以及获取与所述 VCL NALU间接引用的参数集类 型对应的用于解码 VCL NALU的参数集的参数集 ID;
    所述第二获取模块具体用于:根据所述第一获取模块获取的直接引用的 参数集的参数集 ID以及间接引用的参数集的参数集 ID获取所述 VCL NALU 的直接引用的参数集以及所述 VCL NALU的间接引用的参数集; 所述解码输出模块具体用于:根据所述第二获取模块获取的所述 VCL NALU的直接引用的参数集以及所述 VCL NALU的间接引用的参数集解码所 述 VCL NALU ,并输出解码后的第一视频。 26、 一种数字视频码流的拼接装置,其特征在于,包括:
    接收模块,用于从应用服务器接收第一视频码流的信息,所述第一视频 码流信息包括第一视频的参数集修改信息;
    发送模块,用于根据所述接收模块接收的所述第一视频参数集修改信息 向终端发送第一视频码流和第一视频的参数集标识修改消息, 所述第一视频 的参数集标识修改消息携带第一视频的参数集标识 ID修改信息,以便于终端 根据第一视频的参数集 ID修改信息获取用于解码网络抽象层单元的视频编 码层 VCL NALU的参数集的参数集 ID ,以及终端根据所述用于解码 VCL NALU的参数集的参数集 ID获取用于解码所述 VCL NALU的参数集,以及 终端根据所述用于解码 VCL NALU的参数集解码所述 VCL NALU ,并输出 解码后的第一视频。
  21. 27、 如权利要求 26所述的装置,其特征在于,第一视频的参数集 ID修 改信息为待修改的参数集 ID的参数集类型,
    所述接收模块进一步用于接收终端发送的实时传输控制协议 RTCP请 求, 所述 RTCP请求包含所述待修改参数集 ID的参数集类型;
    所述发送模块进一步用于向终端返回 RTCP响应, 所述 RTCP响应中携 带与所述待修改的参数集 ID的参数集类型对应的原参数集 ID的偏移, 或携 带与待修改的参数集 ID的参数集类型对应的用于解码 VCL NALU的参数集 的参数集 ID, 或者携带与待修改的参数集 ID的参数集类型的所述原参数集 ID以及与所述原参数集 ID对应的用于解码 VCL NALU的参数集的参数集 ID。
    28、 如权利要求 26所述的装置,其特征在于,所述参数集 ID修改信息 包括待修改的参数集 ID的参数集类型和与所述待修改的参数集 ID的参数集 类型对应的原参数集 ID的偏移,或包括所述待修改的参数集 ID的参数集类 型和用于解码 VCL NALU的参数集的参数集 ID ,或包括待修改的参数集 ID 的参数集类型的所述原参数集 ID以及与所述原参数集 ID对应的用于解码 VCL NALU的参数集的参数集 ID ,所述参数集 ID修改信息进一步包含修改 生效标志,所述发送模块向终端发送第一视频码流和第一视频的参数集标识 修改消息之前,进一步用于向终端发送所述第二视频码流的时发送不生效的 第一视频的参数集标识修改消息;
    所述接收模块进一步用于接收终端发送的第二媒体描述信息获取请求; 所述发送模块进一步用于向终端返回第二媒体描述信息获取响应,所述 第二媒体描述信息获取响应中携带第一视频的修改后的参数集, 所述第一视 频的修改后的参数集中的参数集 ID为用于解码 VCL NALU的参数集的参数 集 ID。
  22. 29、 如权利要求 26-28任一所述的装置,其特征在于,该装置进一步包 括:
    生成模块,用于根据所述第一视频参数集修改信息生成第一视频的参数 集标识修改消息。
  23. 30、 数字视频码流的拼接装置,其特征在于,包括:
    第一接收模块, 用于接收第一内容服务器发送的第一视频的媒体描述信 息, 所述第一视频的媒体描述信息携带第一视频的原参数集和第一视频的参 数集的类型及与各类型对应的参数集的原参数集 ID;
    第二接收模块,用于接收第二内容服务器发送的第二视频的媒体描述信 息, 所述第二视频的媒体描述信息中携带第二视频的参数集、 第二视频参数 集的类型及与各类型对应的参数集的参数集 ID;
    确定模块, 用于确定同一类型的所述第一接收模块接收的第一视频的原 参数集 ID与所述第二接收模块接收的第二视频参数集 ID相同, 以及确定第 一视频的参数集标识修改信息;
    发送模块, 用于向拼接器发送第一视频流的信息,所述第一视频码流的 信息包括第一视频的参数集修改信息,所述第一视频的参数集修改信息携带 在第一视频的参数集标识修改消息中,以便于拼接器将所述第一视频的参数 集标识修改消息发送给终端,以及以便于终端根据所述第一视频的参数集标 识修改消息解码并输出第一视频。
  24. 31、 如权利要求 30所述的装置,其特征在于:该装置进一步包括: 修改模块,用于根据所述确定模块确定所述参数集标识修改信息将第一 视频的原参数集的原参数集 ID修改为用于解码网络抽象层单元的视频编码 层 VCL NALU的参数集的参数集 ID;
    所述发送模块进一步用于:向终端发送第一视频的修改后的参数集,修改 后参数集中的参数集 ID为所述用于解码 VCL NALU的参数集的参数集 ID;
    所述第一视频的参数集标识修改消息包含所述待修改的参数集 ID的参 数集类型以及与待修改的参数集 ID的参数集类型对应的第一视频的原参数 集 ID的偏移, 或包含所述待修改的参数集 ID的参数集类型以及与待修改的 参数集 ID的参数集类型对应的用于解码 VCL NALU的参数集的参数集 ID , 或第一视频的参数集标识修改消息包含所述待修改的参数集 ID的参数集类 型的与原参数集 ID对应的用于解码 VCL NALU的参数集的参数集 ID;
    所述待修改的参数集 ID的参数集类型为所述 VCL NALU直接引用的参 数集类型。
  25. 32、 如权利要求 31所述的装置,其特征在于:
    所述发送模块进一步用于: 向终端发送第一视频的原参数集以及与所述 原参数集 ID对应的用于解码 VCL NALU的参数集的参数集 ID,所述第一视频 的原参数集中携带所述原参数集 ID;
    所述第一视频的参数集标识修改消息包含所述待修改的参数集 ID的参 数集类型以及与待修改的参数集 ID的参数集类型对应的所述原参数集 ID的 偏移,或第一视频的参数集标识修改消息包含所述待修改的参数集 ID的参数 集类型以及与待修改的参数集 ID的参数集类型对应的用于解码 VCL NALU 的参数集的参数集 ID ,或第一视频的参数集标识修改消息包含所述待修改的 参数集 ID的参数集类型中的所述原参数集 ID以及与原参数集 ID对应的用于 解码 VCL NALU的参数集的参数集 ID;
    所述待修改的参数集 ID的参数集类型为所述 VCL NALU直接引用的参 数集类型,以及所述 VCL NALU间接引用的参数集类型。
CN201280002009.5A 2012-09-29 2012-09-29 数字视频码流的解码方法拼接方法和装置 Active CN103959796B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2012/082483 WO2014047938A1 (zh) 2012-09-29 2012-09-29 数字视频码流的解码方法拼接方法和装置

Publications (2)

Publication Number Publication Date
CN103959796A true CN103959796A (zh) 2014-07-30
CN103959796B CN103959796B (zh) 2017-11-17

Family

ID=50386903

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201280002009.5A Active CN103959796B (zh) 2012-09-29 2012-09-29 数字视频码流的解码方法拼接方法和装置

Country Status (2)

Country Link
CN (1) CN103959796B (zh)
WO (1) WO2014047938A1 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109587478A (zh) * 2017-09-29 2019-04-05 华为技术有限公司 一种媒体信息的处理方法及装置
CN110248221A (zh) * 2019-06-18 2019-09-17 北京物资学院 一种视频广告动态插入方法及装置

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2584295A (en) * 2019-05-28 2020-12-02 Canon Kk Method and apparatus for encoding and decoding a video bitstream for merging regions of interest

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004056169A (ja) * 2002-07-16 2004-02-19 Matsushita Electric Ind Co Ltd 画像データ受信装置、画像データ送信装置
US20050254526A1 (en) * 2004-05-12 2005-11-17 Nokia Corporation Parameter sets update in streaming applications
CN101453653A (zh) * 2007-12-07 2009-06-10 中兴通讯股份有限公司 一种传播数字音视频参数集的方法
CN101606389A (zh) * 2007-01-08 2009-12-16 汤姆森特许公司 用于视频流拼接的方法及装置
CN101663893A (zh) * 2007-04-18 2010-03-03 汤姆森许可贸易公司 编码系统
WO2010122147A1 (en) * 2009-04-24 2010-10-28 Ge Healthcare Uk Limited Method and apparatus for multi-parameter data analysis
US20120230430A1 (en) * 2011-03-10 2012-09-13 Stephan Wenger Parameter Set Maintenance in Video Coding

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101582908B (zh) * 2009-06-30 2013-01-09 浙江宇视科技有限公司 一种参数配置方法和设备
EA021750B1 (ru) * 2009-10-30 2015-08-31 Панасоник Интеллекчуал Проперти Корпорэйшн оф Америка Способ декодирования, декодирующее устройство, способ кодирования и кодирующее устройство

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004056169A (ja) * 2002-07-16 2004-02-19 Matsushita Electric Ind Co Ltd 画像データ受信装置、画像データ送信装置
US20050254526A1 (en) * 2004-05-12 2005-11-17 Nokia Corporation Parameter sets update in streaming applications
CN101606389A (zh) * 2007-01-08 2009-12-16 汤姆森特许公司 用于视频流拼接的方法及装置
CN101663893A (zh) * 2007-04-18 2010-03-03 汤姆森许可贸易公司 编码系统
CN101453653A (zh) * 2007-12-07 2009-06-10 中兴通讯股份有限公司 一种传播数字音视频参数集的方法
WO2010122147A1 (en) * 2009-04-24 2010-10-28 Ge Healthcare Uk Limited Method and apparatus for multi-parameter data analysis
US20120230430A1 (en) * 2011-03-10 2012-09-13 Stephan Wenger Parameter Set Maintenance in Video Coding

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109587478A (zh) * 2017-09-29 2019-04-05 华为技术有限公司 一种媒体信息的处理方法及装置
CN109587478B (zh) * 2017-09-29 2023-03-31 华为技术有限公司 一种媒体信息的处理方法及装置
CN110248221A (zh) * 2019-06-18 2019-09-17 北京物资学院 一种视频广告动态插入方法及装置

Also Published As

Publication number Publication date
WO2014047938A1 (zh) 2014-04-03
CN103959796B (zh) 2017-11-17

Similar Documents

Publication Publication Date Title
CN110431850B (zh) 在使用mime类型参数的网络视频流式传输中发信重要视频信息
US20070186005A1 (en) Method to embedding SVG content into ISO base media file format for progressive downloading and streaming of rich media content
RU2764459C2 (ru) Способ и устройство для инкапсуляции активов медиатранспорта стандарта экспертной группы по движущимся изображениям в международной организации стандартизации базовых медиафайлов
US6580756B1 (en) Data transmission method, data transmission system, data receiving method, and data receiving apparatus
CN110832872B (zh) 使用用于文件格式方框的通用描述符处理媒体数据
CN107637040A (zh) 使用websocket子协议来传输媒体数据
CN101924742B (zh) 媒体传输方法及设备、媒体存储方法及设备
WO2018187318A1 (en) Segment types as delimiters and addressable resource identifiers
US9369508B2 (en) Method for transmitting a scalable HTTP stream for natural reproduction upon the occurrence of expression-switching during HTTP streaming
CN110870282B (zh) 使用网络内容的文件轨处理媒体数据
CN112771876B (zh) 检索媒体数据的方法和设备以及发送媒体数据的方法和设备
CN103959796A (zh) 数字视频码流的解码方法拼接方法和装置
CN110870323B (zh) 使用全向媒体格式处理媒体数据
CN110832878B (zh) 增强区域取向包封及视区独立高效视频译码媒体配置文件
EP4042690A1 (en) Av1 codec for real-time video communication
Setlur et al. More: a mobile open rich media environment
US20240098130A1 (en) Mixed media data format and transport protocol
CN117099375A (zh) 通过实时传输协议传输经heif格式化的图像
CN116389798A (zh) 一种基于sip的合成媒体播放方法及装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant