首页 / 专利库 / 视听技术与设备 / 视频编码层 / 一种视频编解码方法及装置

一种视频编解码方法及装置

阅读:709发布:2020-06-02

专利汇可以提供一种视频编解码方法及装置专利检索,专利查询,专利分析的服务。并且本 发明 实施例 提供了一种视频编解码方法及装置,应用于视频编解码技术领域,所述编码方法包括:对 视频编码 数据进行打包,生成第一数据包,其中,所述视频编码数据是对待编码的视频信息按照预设编码方式进行编码生成的;对所述第一数据包中的第二数据包新增第一序列号,得到网络中传输的第三数据包,其中,所述第二数据包为用于解码所述视频信息的数据包,所述第一序列号使所述第二数据包连续。所述解码方法包括:接收第三数据包,在接收到的数据包发生丢包、但所述第二数据包完整时,根据所述第二数据包的连续的第一序列号,按照预设解码方式对所述第二数据包进行解码,得到解码后的视频信息。本发明实施例可提升实时传输中的视频 质量 。,下面是一种视频编解码方法及装置专利的具体信息内容。

1.一种视频编码方法,应用于编码端,其特征在于,包括:
对视频编码数据进行打包,生成第一数据包,其中,所述视频编码数据是对待编码的视频信息按照预设编码方式进行编码生成的;
对所述第一数据包中的第二数据包新增第一序列号,得到网络中传输的第三数据包,其中,所述第二数据包为用于解码所述视频信息的数据包,所述第一序列号使所述第二数据包连续。
2.根据权利要求1所述的视频编码方法,其特征在于,所述对视频编码数据进行打包,生成第一数据包,包括:
对所述视频编码数据进行打包,生成第一视频数据包;
当按照所述预设编码方式启用前向纠错编码时,根据所述第一视频数据包生成第一前向纠错包;
根据所述第一视频数据包和所述第一前向纠错包生成所述第一数据包;
其中,所述第一视频数据包和所述第一前向纠错包形成连续的实时传输协议序列号。
3.根据权利要求1所述的视频编码方法,其特征在于,所述对所述第一数据包中的第二数据包新增第一序列号,包括:
将所述第二数据包中的每一个关键对应的数据包的第二序列号设置为第一初始值,其中,所述第二数据包为所述第一视频数据包;
确定所述每一个关键帧后面的不同帧,将不同帧对应的数据包的第二序列号依次加1直至下一个关键帧,得到使所述第二数据包连续的第一序列号,其中,所述第二数据包中同一帧对应的多个数据包的第二序列号相同。
4.根据权利要求1所述的视频编码方法,其特征在于,所述对视频编码数据进行打包,生成第一数据包,包括:
当通过时间分级编码方式对所述视频信息进行编码时,对通过时间分级编码方式生成的视频编码数据进行打包,生成第一数据包,其中,所述第一数据包包括:位于时间分级的基本层中的基本数据包和位于时间分级的增强层中的增强数据包,所述基本数据包和所述增强数据包形成连续的实时传输协议序列号。
5.根据权利要求4所述的视频编码方法,其特征在于,所述对所述第一数据包中的第二数据包新增第一序列号,包括:
将所述基本层的层标识设置为基本层标识,将所述增强层的层标识设置为增强层标识;
将第二数据包中的每一个关键帧对应的数据包的第三序列号设置为第二初始值,其中,所述第二数据包为所述基本数据包;
确定所述每一个关键帧后面的不同帧,将不同帧对应的数据包的第三序列号依次加1直至下一个关键帧,得到使所述第二数据包连续的第一序列号,其中,所述第二数据包中同一帧对应的多个数据包的第三序列号相同。
6.根据权利要求5所述的视频编码方法,其特征在于,所述对视频编码数据进行打包,生成第一数据包,包括:
当在所述基本层启用前向纠错编码时,根据所述基本数据包生成位于所述基本层的第二前向纠错包;
根据所述基本数据包、所述第二前向纠错包和所述增强数据包生成所述第一数据包,其中,所述基本数据包、所述第二前向纠错包和所述增强数据包形成连续的实时传输协议序列号。
7.根据权利要求1所述的视频编码方法,其特征在于,所述第三数据包中的每一个数据包的包头包括:数据包的ID、数据包包体的长度、第二序列号、层标识和第三序列号。
8.一种视频解码方法,应用于解码端,其特征在于,包括:
接收网络中传输的第三数据包,其中,所述第三数据包是对第一数据包中的第二数据包新增第一序列号生成的,所述第一序列号使所述第二数据包连续,所述第一数据包是对视频编码数据进行打包生成的,所述视频编码数据是对待编码的视频信息按照预设编码方式进行编码生成的,所述第二数据包为用于解码所述视频信息的数据包;
在接收到的数据包发生丢包、但所述第二数据包完整时,根据所述第二数据包的连续的第一序列号,按照预设解码方式对所述第二数据包进行解码,得到解码后的视频信息。
9.一种视频编码装置,其特征在于,包括:
数据包生成模,用于对视频编码数据进行打包,生成第一数据包,其中,所述视频编码数据是对待编码的视频信息按照预设编码方式进行编码生成的;
序列号增加模块,用于对所述第一数据包中的第二数据包新增第一序列号,得到网络中传输的第三数据包,其中,所述第二数据包为用于解码所述视频信息的数据包,所述第一序列号使所述第二数据包连续。
10.根据权利要求9所述的视频编码装置,其特征在于,所述数据包生成模块,包括:
视频数据包生成子模块,用于对所述视频编码数据进行打包,生成第一视频数据包;
前向纠错包生成子模块,用于当按照所述预设编码方式启用前向纠错编码时,根据所述第一视频数据包生成第一前向纠错包;
第一数据包生成子模块,用于根据所述第一视频数据包和所述第一前向纠错包生成所述第一数据包;
其中,所述第一视频数据包和所述第一前向纠错包形成连续的实时传输协议序列号。
11.根据权利要求9所述的视频编码装置,其特征在于,所述序列号增加模块,包括:
第一序号设置子模块,用于将所述第二数据包中的每一个关键帧对应的数据包的第二序列号设置为第一初始值,其中,所述第二数据包为所述第一视频数据包;
第二序号设置子模块,用于确定所述每一个关键帧后面的不同帧,将不同帧对应的数据包的第二序列号依次加1直至下一个关键帧,得到使所述第二数据包连续的第一序列号,其中,所述第二数据包中同一帧对应的多个数据包的第二序列号相同。
12.根据权利要求9所述的视频编码装置,其特征在于,所述数据包生成模块,包括:
时间分级数据包生成子模块,用于当通过时间分级编码方式对所述视频信息进行编码时,对通过时间分级编码方式生成的视频编码数据进行打包,生成第一数据包,其中,所述第一数据包包括:位于时间分级的基本层中的基本数据包和位于时间分级的增强层中的增强数据包,所述基本数据包和所述增强数据包形成连续的实时传输协议序列号。
13.根据权利要求12所述的视频编码装置,其特征在于,所述序列号增加模块,包括:
层标识设置子模块,用于将所述基本层的层标识设置为基本层标识,将所述增强层的层标识设置为增强层标识;
第三序号设置子模块,用于将第二数据包中的每一个关键帧对应的数据包的第三序列号设置为第二初始值,其中,所述第二数据包为所述基本数据包;
第四序号设置子模块,用于确定所述每一个关键帧后面的不同帧,将不同帧对应的数据包的第三序列号依次加1直至下一个关键帧,得到使所述第二数据包连续的第一序列号,其中,所述第二数据包中同一帧对应的多个数据包的第三序列号相同。
14.根据权利要求13所述的视频编码装置,其特征在于,所述时间分级数据包生成子模块,包括:
第二前向纠错包生成单元,用于当在所述基本层启用前向纠错编码时,根据所述基本数据包生成位于所述基本层的第二前向纠错包;
数据包生成单元,用于根据所述基本数据包、所述第二前向纠错包和所述增强数据包生成所述第一数据包,其中,所述基本数据包、所述第二前向纠错包和所述增强数据包形成连续的实时传输协议序列号。
15.根据权利要求9所述的视频编码装置,其特征在于,所述第三数据包中的每一个数据包的包头包括:数据包的ID、数据包包体的长度、第二序列号、层标识和第三序列号。
16.一种视频解码装置,其特征在于,包括:
数据包接收模块,用于接收网络中传输的第三数据包,其中,所述第三数据包是对第一数据包中的第二数据包新增第一序列号生成的,所述第一序列号使所述第二数据包连续,所述第一数据包是对视频编码数据进行打包生成的,所述视频编码数据是对待编码的视频信息按照预设编码方式进行编码生成的,所述第二数据包为用于解码所述视频信息的数据包;
数据包解码模块,用于在接收到的数据包发生丢包、但所述第二数据包完整时,根据所述第二数据包的连续的第一序列号,按照预设解码方式对所述第二数据包进行解码,得到解码后的视频信息。
17.一种编码器,其特征在于,包括:
所述编码器用于对视频编码数据进行打包,生成第一数据包,对所述第一数据包中的第二数据包新增第一序列号,得到网络中传输的第三数据包,其中,所述视频编码数据是对待编码的视频信息按照预设编码方式进行编码生成的;所述第二数据包为用于解码所述视频信息的数据包,所述第一序列号使所述第二数据包连续。
18.一种解码器,其特征在于,包括:
所述解码器用于接收网络中传输的第三数据包,在接收到的数据包发生丢包、但所述第二数据包完整时,根据所述第二数据包的连续的第一序列号,按照预设解码方式对所述第二数据包进行解码,得到解码后的视频信息,其中,所述第三数据包是对第一数据包中的第二数据包新增第一序列号生成的,所述第一序列号使所述第二数据包连续,所述第一数据包是对视频编码数据进行打包生成的,所述视频编码数据是对待编码的视频信息按照预设编码方式进行编码生成的,所述第二数据包为用于解码所述视频信息的数据包。

说明书全文

一种视频编解码方法及装置

技术领域

[0001] 本发明涉及视频编解码技术领域,特别是涉及一种视频编解码方法及装置。

背景技术

[0002] 随着智能手机、4G移动网络以及Wi-Fi(Wireless-Fidelity,无线保真)热点的普及,促进了移动通讯市场的快速发展,基于互联网的音视频通话具有廉价易用,功能丰富的特点,因此,实时通信技术在互联网行业中将呈现大规模应用。WebRTC(Web Real-Time Communication,网页实时通信)是Google的开源多媒体实时通信引擎,其关键技术包括:视频编解码、音频编解码、RTP(Real-time Transport Protocol,实时传输协议)传输、回音消除等语音处理技术和QoS(Quality of Service,服务质量)控制等。由于互联网网络条件的不稳定性,使得QoS控制策略成为提升通信质量的关键。
[0003] 相比于音频,视频数据量大,更加容易导致网络拥塞,从而导致视频质量下降,因此,视频质量更加依赖于QoS控制策略。WebRTC的QoS控制策略包括:码率控制、发送控制、FEC(Forward Error Correction,前向纠错)、丢包重传、时间分级编码和RTP Packet级的错误检测等。其中,FEC编码的冗余部分允许接收方检测传输的视频信息的有限个差错,并且通常可以纠正这些差错而不用数据重传。时间分级编码将视频信息分为多个重要性不等的层,包括:基本层和增强层,基本层包含了视频最重要的信息,可以保证最基本的视频质量;增强层在基本层的基础上进一步提高视频的质量。由于FEC编码和时间分级编码的优点,使得FEC编码和时间分级编码被应用于多种编码器,例如:VP8、VP9等。
[0004] 但是,当H264和H265启用FEC编码或时间分级编码时,如果发生丢包问题,即使用于解码的视频信息的数据包是完整的,视频信息也是无法被正确解码的,导致视频信息的卡顿,使得在实时通信中的视频质量比较低。

发明内容

[0005] 本发明实施例的目的在于提供一种视频编解码方法及装置,以提高实时通信中的视频质量。具体技术方案如下:
[0006] 本发明实施例公开了一种视频编码方法,应用于编码端,包括:
[0007] 对视频编码数据进行打包,生成第一数据包,其中,所述视频编码数据是对待编码的视频信息按照预设编码方式进行编码生成的;
[0008] 对所述第一数据包中的第二数据包新增第一序列号,得到网络中传输的第三数据包,其中,所述第二数据包为用于解码所述视频信息的数据包,所述第一序列号使所述第二数据包连续。
[0009] 可选的,所述对视频编码数据进行打包,生成第一数据包,包括:
[0010] 对所述视频编码数据进行打包,生成第一视频数据包;
[0011] 当按照所述预设编码方式启用前向纠错编码时,根据所述第一视频数据包生成第一前向纠错包;
[0012] 根据所述第一视频数据包和所述第一前向纠错包生成所述第一数据包;
[0013] 其中,所述第一视频数据包和所述第一前向纠错包形成连续的实时传输协议序列号。
[0014] 可选的,所述对所述第一数据包中的第二数据包新增第一序列号,包括:
[0015] 将所述第二数据包中的每一个关键对应的数据包的第二序列号设置为第一初始值,其中,所述第二数据包为所述第一视频数据包;
[0016] 确定所述每一个关键帧后面的不同帧,将不同帧对应的数据包的第二序列号依次加1直至下一个关键帧,得到使所述第二数据包连续的第一序列号,其中,所述第二数据包中同一帧对应的多个数据包的第二序列号相同。
[0017] 可选的,所述对视频编码数据进行打包,生成第一数据包,包括:
[0018] 当通过时间分级编码方式对所述视频信息进行编码时,对通过时间分级编码方式生成的视频编码数据进行打包,生成第一数据包,其中,所述第一数据包包括:位于时间分级的基本层中的基本数据包和位于时间分级的增强层中的增强数据包,所述基本数据包和所述增强数据包形成连续的实时传输协议序列号。
[0019] 可选的,所述对所述第一数据包中的第二数据包新增第一序列号,包括:
[0020] 将所述基本层的层标识设置为基本层标识,将所述增强层的层标识设置为增强层标识;
[0021] 将第二数据包中的每一个关键帧对应的数据包的第三序列号设置为第二初始值,其中,所述第二数据包为所述基本数据包;
[0022] 确定所述每一个关键帧后面的不同帧,将不同帧对应的数据包的第三序列号依次加1直至下一个关键帧,得到使所述第二数据包连续的第一序列号,其中,所述第二数据包中同一帧对应的多个数据包的第三序列号相同。
[0023] 可选的,所述对视频编码数据进行打包,生成第一数据包,包括:
[0024] 当在所述基本层启用前向纠错编码时,根据所述基本数据包生成位于所述基本层的第二前向纠错包;
[0025] 根据所述基本数据包、所述第二前向纠错包和所述增强数据包生成所述第一数据包,其中,所述基本数据包、所述第二前向纠错包和所述增强数据包形成连续的实时传输协议序列号。
[0026] 可选的,所述第三数据包中的每一个数据包的包头包括:数据包的ID、数据包包体的长度、第二序列号、层标识和第三序列号。
[0027] 本发明实施例公开了一种视频解码方法,应用于解码端,包括:
[0028] 接收网络中传输的第三数据包,其中,所述第三数据包是对第一数据包中的第二数据包新增第一序列号生成的,所述第一序列号使所述第二数据包连续,所述第一数据包是对视频编码数据进行打包生成的,所述视频编码数据是对待编码的视频信息按照预设编码方式进行编码生成的,所述第二数据包为用于解码所述视频信息的数据包;
[0029] 在接收到的数据包发生丢包、但所述第二数据包完整时,根据所述第二数据包的连续的第一序列号,按照预设解码方式对所述第二数据包进行解码,得到解码后的视频信息。
[0030] 本发明实施例公开了一种视频编码装置,包括:
[0031] 数据包生成模,用于对视频编码数据进行打包,生成第一数据包,其中,所述视频编码数据是对待编码的视频信息按照预设编码方式进行编码生成的;
[0032] 序列号增加模块,用于对所述第一数据包中的第二数据包新增第一序列号,得到网络中传输的第三数据包,其中,所述第二数据包为用于解码所述视频信息的数据包,所述第一序列号使所述第二数据包连续。
[0033] 可选的,所述数据包生成模块,包括:
[0034] 视频数据包生成子模块,用于对所述视频编码数据进行打包,生成第一视频数据包;
[0035] 前向纠错包生成子模块,用于当按照所述预设编码方式启用前向纠错编码时,根据所述第一视频数据包生成第一前向纠错包;
[0036] 第一数据包生成子模块,用于根据所述第一视频数据包和所述第一前向纠错包生成所述第一数据包;
[0037] 其中,所述第一视频数据包和所述第一前向纠错包形成连续的实时传输协议序列号。
[0038] 可选的,所述序列号增加模块,包括:
[0039] 第一序号设置子模块,用于将所述第二数据包中的每一个关键帧对应的数据包的第二序列号设置为第一初始值,其中,所述第二数据包为所述第一视频数据包;
[0040] 第二序号设置子模块,用于确定所述每一个关键帧后面的不同帧,将不同帧对应的数据包的第二序列号依次加1直至下一个关键帧,得到使所述第二数据包连续的第一序列号,其中,所述第二数据包中同一帧对应的多个数据包的第二序列号相同。
[0041] 可选的,所述数据包生成模块,包括:
[0042] 时间分级数据包生成子模块,用于当通过时间分级编码方式对所述视频信息进行编码时,对通过时间分级编码方式生成的视频编码数据进行打包,生成第一数据包,其中,所述第一数据包包括:位于时间分级的基本层中的基本数据包和位于时间分级的增强层中的增强数据包,所述基本数据包和所述增强数据包形成连续的实时传输协议序列号。
[0043] 可选的,所述序列号增加模块,包括:
[0044] 层标识设置子模块,用于将所述基本层的层标识设置为基本层标识,将所述增强层的层标识设置为增强层标识;
[0045] 第三序号设置子模块,用于将第二数据包中的每一个关键帧对应的数据包的第三序列号设置为第二初始值,其中,所述第二数据包为所述基本数据包;
[0046] 第四序号设置子模块,用于确定所述每一个关键帧后面的不同帧,将不同帧对应的数据包的第三序列号依次加1直至下一个关键帧,得到使所述第二数据包连续的第一序列号,其中,所述第二数据包中同一帧对应的多个数据包的第三序列号相同。
[0047] 可选的,所述时间分级数据包生成子模块,包括:
[0048] 第二前向纠错包生成单元,用于当在所述基本层启用前向纠错编码时,根据所述基本数据包生成位于所述基本层的第二前向纠错包;
[0049] 数据包生成单元,用于根据所述基本数据包、所述第二前向纠错包和所述增强数据包生成所述第一数据包,其中,所述基本数据包、所述第二前向纠错包和所述增强数据包形成连续的实时传输协议序列号。
[0050] 可选的,所述第三数据包中的每一个数据包的包头包括:数据包的ID、数据包包体的长度、第二序列号、层标识和第三序列号。
[0051] 本发明实施例公开了一种视频解码装置,包括:
[0052] 数据包接收模块,用于接收网络中传输的第三数据包,其中,所述第三数据包是对第一数据包中的第二数据包新增第一序列号生成的,所述第一序列号使所述第二数据包连续,所述第一数据包是对视频编码数据进行打包生成的,所述视频编码数据是对待编码的视频信息按照预设编码方式进行编码生成的,所述第二数据包为用于解码所述视频信息的数据包;
[0053] 数据包解码模块,用于在接收到的数据包发生丢包、但所述第二数据包完整时,根据所述第二数据包的连续的第一序列号,按照预设解码方式对所述第二数据包进行解码,得到解码后的视频信息。
[0054] 本发明实施例公开了一种编码器,包括:
[0055] 所述编码器用于对视频编码数据进行打包,生成第一数据包,对所述第一数据包中的第二数据包新增第一序列号,得到网络中传输的第三数据包,其中,所述视频编码数据是对待编码的视频信息按照预设编码方式进行编码生成的;所述第二数据包为用于解码所述视频信息的数据包,所述第一序列号使所述第二数据包连续。
[0056] 本发明实施例公开了一种解码器,包括:
[0057] 所述解码器用于接收网络中传输的第三数据包,在接收到的数据包发生丢包、但所述第二数据包完整时,根据所述第二数据包的连续的第一序列号,按照预设解码方式对所述第二数据包进行解码,得到解码后的视频信息,其中,所述第三数据包是对第一数据包中的第二数据包新增第一序列号生成的,所述第一序列号使所述第二数据包连续,所述第一数据包是对视频编码数据进行打包生成的,所述视频编码数据是对待编码的视频信息按照预设编码方式进行编码生成的,所述第二数据包为用于解码所述视频信息的数据包。
[0058] 本发明实施例提供的视频编解码方法及装置,编码端通过对视频编码数据进行打包,生成第一数据包;对第一数据包中的第二数据包新增第一序列号,得到网络中传输的第三数据包。解码端接收第三数据包,在接收到的数据包发生丢包、但第二数据包完整时,根据第二数据包的连续的第一序列号,按照预设解码方式对第二数据包进行解码,得到解码后的视频信息。本发明实施例不会因为数据包的丢失而出现视频信息的卡顿,减少了时延,提高了视频信息在实时传输中的质量,有效改善了视频信息的清晰度。当然,实施本发明的任一产品或方法必不一定需要同时达到以上所述的所有优点。附图说明
[0059] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0060] 图1为本发明实施例的视频编码方法的流程图
[0061] 图2为本发明实施例的视频解码方法的流程图;
[0062] 图3为本发明实施例的启用FEC时生成第一数据包的流程图;
[0063] 图4为本发明实施例的增加第一序列号方法的流程图;
[0064] 图5为本发明实施例的视频编码装置的一种结构图;
[0065] 图6为本发明实施例的视频解码装置的一种结构图;
[0066] 图7为本发明实施例的视频编码装置的另一种结构图;
[0067] 图8为本发明实施例的视频编码装置的另一种结构图。

具体实施方式

[0068] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0069] 随着互联网技术的发展以及计算机处理能的迅速提高,多媒体业务的应用层出不穷,视频流媒体也正在迅速发展并逐步走进人们的生活,视频应用必然成为网络业务的主体。其中,WebRTC是基于浏览器的实时多媒体通信技术,该技术旨在使Web浏览器具备实时通信能力。WebRTC的关键技术包括:视频编解码,因此,WebRTC也加速了视频编解码技术的发展。WebRTC支持的视频编码器包括:VP8、VP9和H264等。其中,VP8和VP9可以使用FEC编码和时间分级编码技术。当启用FEC编码时,数据包丢失时有较大概率从接收到的FEC包中恢复,所以,可以大大降低数据包重传的概率,可以有效降低时延。当启用时间分级编码时,因为增强层数据包的丢失不会对数据解码造成影响,所以增强层不需要FEC保护,当增强层的数据包丢失的时候,也不需要重传进行恢复,所以可以降低时延,同时还可以更加有效地利用网络带宽,提升视频质量。
[0070] 但是,H264或H265在使用FEC编码和时间分级编码技术时,即使用于解码视频信息的数据包是完整的,如果发生丢包,解码视频信息的数据包也是无法被解码的,这样,就会导致实时传输中的视频质量不高,例如:视频清晰度比较低、出现视频的卡顿等等。
[0071] 具体的,当启用FEC编码时,由于根据用于解码视频信息的数据包产生了FEC包,这样,导致用于解码视频信息的数据包的RTP序列号是不连续的,造成了在数据包接收的时候,无法判断视频信息是否可以被正确解码,从而导致数据在解码端Jitter Buffer(抖动缓冲器)中长时间等待,只有等待关键帧之后才能恢复视频解码。因此,在有丢包的网络中,容易出现长时间的视频卡顿,影响用户体验。
[0072] 当启用时间分级编码时,视频数据包可以根据帧率分割为基本层和增强层,其中,基本层为一层,增强层可以为一层,也可以为多层。例如:输入的视频信息为每秒30帧的序列,将该序列分割为时间层级为两层的序列,即,基本层为一层,增强层为一层。其中,基本层为每秒15帧的序列,它是可以被独立解码的;增强层是其余的每秒15帧的序列,增强层的解码是依赖于基本层的,它可以和基本层合在一起,将视频恢复成为每秒30帧的序列。所以,当启用时间分级编码之后,在RTP序列号不连续的时候,视频信息也是有可能被正确解码的。但是,由于H264的RTP组包协议的缺陷,在WebRTC中仍然无法正确判断数据的完整性,使得丢包重传是唯一被使用的错误恢复技术,否则,视频信息将无法被正确解码。
[0073] 针对上述H264在启用FEC编码和时间分级编码时,如果发生丢包而导致无法正确解码视频信息的问题,本发明实施例提供了一种视频编解码方法及装置,以提高实时传输中视频信息的质量。当然,本发明实施例对于H265等其他编码器也是适用的。下面首先对本发明实施例的视频编解码方法进行详细说明。
[0074] 参见图1,图1为本发明实施例的视频编码方法的流程图,包括以下步骤:
[0075] S101,对视频编码数据进行打包,生成第一数据包。其中,视频编码数据是对待编码的视频信息按照预设编码方式进行编码生成的。
[0076] 需要说明的是,视频信息是由一帧一帧的图片组成的,因此视频信息的数据,尤其高清视频信息的数据是比较大的,为了方便传输,需要对视频信息进行压缩。对视频信息进行编码可以达到压缩视频信息的目的,这样,编码之后再对视频信息进行传输,减少了视频信息在网络传输中的数据量,使得接收端可以快速得到视频编码数据,进而对接收到的视频编码数据进行解码,得到解码后的视频信息。其中,预设编码方式包括:VC(Video Codec,视讯编解码器)-1、MPEG(Moving Picture Experts Group,动态图像专家组)-2、MPEG-4和H264等。另外,视频编码数据在网络中是以数据包的形式进行传输的,因此,需要对视频编码数据进行打包,生成第一数据包。
[0077] S102,对第一数据包中的第二数据包新增第一序列号,得到网络中传输的第三数据包,其中,第二数据包为用于解码视频信息的数据包,第一序列号使第二数据包连续。
[0078] 具体的,在对视频信息进行编码时,生成关于视频信息的视频编码数据之后,通常情况下,为了防止数据包在网络中传输时发生丢包而导致视频信息无法在解码端解码的问题,第一数据包中不仅包含用于解码视频信息的数据包,还包括纠错数据包,例如:FEC包等。需要说明的是,通过FEC编码方式生成FEC包的过程,属于信道编码,即信源数据(待编码的视频信息)在经过编码之后,得到编码数据,在网络传输中,根据编码数据生成FEC包,FEC包允许接收方检测可能出现在信息任何地方的有限个差错,并且通常可以纠正这些差错而不用数据重传。当启用RFC5109(RTP Payload Format for Generic Forward Error Correction)所定义的FEC的时候,FEC包和用于解码视频信息的数据包是属于同一个RTP通道的,RTP序列号是被FEC包和用于解码视频信息的数据包所共享的,因此,用于解码视频信息的数据包和FEC包共同组成的第一数据包的RTP序列号是连续的。
[0079] 由于H264能使用的信息仅仅是RTP序列号,RTP Packet级的错误检测通过检查数据连续性来判断接收到的数据是否可被正确解码。那么,如果发生丢包问题,即使丢失的数据包是FEC包,用于解码视频信息的数据包是完整的,视频信息也是无法被正确解码的。因此,对用于解码视频信息的数据包新增序列号,即,第一序列号,使得第一序列号是连续的,得到网络中传输的第三数据包。这样,在发生丢包的情况下,只要第二数据包是完整的,根据连续的第一序列号,视频信息就可以被正确解码。
[0080] 需要强调的是,本发明实施例的数据包中,现有的RTP序列号仍然是保留的,在原有数据包格式的基础上新增第一序列号,这样,可以保持对现有技术中数据包的兼容。
[0081] 参见图2,图2为本发明实施例的视频解码方法的流程图,包括以下步骤:
[0082] S201,接收网络中传输的第三数据包。其中,第三数据包是对第一数据包中的第二数据包新增第一序列号生成的,第一序列号使第二数据包连续,第一数据包是对视频编码数据进行打包生成的,视频编码数据是对待编码的视频信息按照预设编码方式进行编码生成的,第二数据包为用于解码视频信息的数据包。
[0083] 通常,在编码端对视频信息进行编码、打包之后,网络模块将生成的第三数据包传输至解码端,解码端接收第三数据包,进一步对接收到的第三数据包进行解码。
[0084] S202,在接收到的数据包发生丢包、但第二数据包完整时,根据第二数据包的连续的第一序列号,按照预设解码方式对第二数据包进行解码,得到解码后的视频信息。
[0085] 需要说明的是,由于数据包在网络传输中可能发生丢包的问题,编码端生成的数据包和解码端接收到的数据包可能并不一致,解码端接收到的数据包可能少于编码端生成的数据包。本发明实施例中,在解码端接收到的第二数据包完整时,解码端根据第一序列号,对第二数据包进行解码。其中,第二数据包和第一序列号是一一对应的,且第一序列号是连续的。这样,即使发生数据包丢失的问题,但是第二数据包是完整的,解码端也可以对第二数据包进行解码,得到解码后的视频信息。当然,如果第二数据包发生丢包时,第一序列号也是不连续的,视频信息也是无法被正确解码的。需要强调的是,预设解码方式与预设编码方式是相对应的。例如:如果预设编码方式为MPEG-4,那么预设解码方式为MPEG-4;如果预设编码方式为VC-1,那么预设解码方式为VC-1,本发明实施例中不对预设编码方式和预设解码方式做限定。
[0086] 可见,本发明实施例提供的视频编解码方法,编码端通过对视频编码数据进行打包,生成第一数据包;对第一数据包中的第二数据包新增第一序列号,得到网络中传输的第三数据包。解码端接收第三数据包,在接收到的数据包发生丢包、但第二数据包完整时,根据第二数据包的连续的第一序列号,按照预设解码方式对第二数据包进行解码,得到解码后的视频信息。本发明实施例不会因为数据包的丢失而出现视频的卡顿,减少了时延,提高了视频信息在实时传输中的质量,有效改善了视频信息的清晰度。
[0087] 参见图3,图3为本发明实施例的启用FEC时生成第一数据包的流程图,包括以下步骤:
[0088] S301,对视频编码数据进行打包,生成第一视频数据包。
[0089] 需要说明的是,在对视频信息进行编码得到视频编码数据之后,需要对视频编码数据进行打包,得到可以在网络中传输的数据包,即第一视频数据包。其中,第一视频数据包是完整的用于解码该视频信息的数据包。
[0090] S302,根据第一视频数据包生成第一前向纠错包。
[0091] 更为具体的,由于FEC编码是一种纠错保护措施,广泛应用于视频编码中。因此,当启用FEC编码时,根据第一视频数据包生成第一前向纠错包,第一前向纠错包允许接收方检测可能出现在视频信息任何地方的有限个差错,并且通常可以纠正这些差错而不用数据重传,即,在网络传输中,如果发生有限个数据包丢失,不用数据重传,解码端仍然可以解码视频信息。
[0092] S303,根据第一视频数据包和第一前向纠错包生成第一数据包。其中,第一视频数据包和第一前向纠错包形成连续的实时传输协议序列号。
[0093] 通过S302得到第一前向纠错包之后,编码端将第一视频数据包和第一前向纠错包一起发送至解码端,通过该纠错保护方法使解码端正确解码。因此,网络中传输的第一数据包包括:第一视频数据包和第一前向纠错包,且第一视频数据包和第一前向纠错包形成连续的RTP序列号。
[0094] 为了使第一数据包中的第一视频数据包的RTP序列号和FEC包的RTP序列号更加清晰,下面首先对不启用FEC编码时的数据包进行说明。需要说明的是,本发明实施例中,数据包s中的s表示RTP序列号,s包含本发明实施例中提到的任意符号。
[0095] 举例而言,在不启用FEC编码时,对视频编码数据进行打包,得到第一视频数据包,该第一视频数据包即为第一数据包。该第一视频数据包包括:数据包n、数据包n+1、数据包n+2、数据包n+3和数据包n+4。数据包n和数据包n+1为Frame A对应的数据包,数据包n+2为Frame B对应的数据包,数据包n+3和数据包n+4为Frame C对应的数据包,n为大于0的整数。其中,Frame A、Frame B和Frame C为视频编码数据的帧,每一帧在网络传输中可对应一个数据包,也可以对应多个数据包。那么,第一数据包表示如下:
[0096]
[0097] 在启用FEC编码之后,根据数据包n、数据包n+1和数据包n+2生成FEC包,即第一前向纠错包。根据第一视频数据包和第一前向纠错包生成第一数据包,且第一视频数据包和第一前向纠错包形成连续的RTP序列号。需要强调的是,第一前向纠错包位于生成该第一前向纠错包的数据包的后面,即第一前向纠错包的RTP序列号在生成该第一前向纠错包的数据包的RTP序列号的基础上加1,如果生成该第一前向纠错包的数据包为多个,那么,第一前向纠错包的RTP序列号为、在该多个数据包的最后一个数据包的RTP序列号的基础上加1。也就是,FEC包是根据数据包n、数据包n+1和数据包n+2生成的,所以,FEC包的RTP序列号为n+2(数据包n+2的RTP序列号)加1,即n+3。相应地,原有的数据包n+3和数据包n+4的RTP序列号自动顺延。那么,网络中传输的数据包(第一数据包)包括:数据包n、数据包n+1、数据包n+2、数据包n+3、数据包n+4、数据包n+5。表示如下:
[0098]
[0099] 参见图4,图4为本发明实施例的增加第一序列号方法的流程图,包括以下步骤:
[0100] S401,将第二数据包中的每一个关键帧对应的数据包的第二序列号设置为第一初始值,其中,第二数据包为第一视频数据包。
[0101] 更为具体的,第二数据包为用于解码视频信息的数据包,一个视频信息中包含很多个帧,包括:关键帧、过渡帧,其中,关键帧属于帧内编码,不参考其他任何图像而独立编码,过渡帧在关键帧的基础上进行编码。因此,本发明实施例中,将关键帧对应的数据包的第二序列号设置为第一初始值,一般的,第一初始值为0,当然也可以是其他值,在此不做限定。需要说明的是,该第二序列号即为S102中的第一序列号,第二序列号的标识可以是PICTURE_ID,也可以是其他标识,本发明实施例中以PICTURE_ID为例进行说明。通常情况下,一个视频信息中包含多个关键帧,本发明实施例中,将每一个关键帧对应的数据包的设置为第一初始值,也就是,第二数据包中包含多个为第一初始值的数据包。
[0102] S402,确定每一个关键帧后面的不同帧,将不同帧对应的数据包的第二序列号依次加1直至下一个关键帧,得到使第二数据包连续的第一序列号,其中,第二数据包中同一帧对应的多个数据包的第二序列号相同。
[0103] 需要说明的是,由于在编码过程中关键帧是过渡帧的基础,因此,本发明实施例提出的数据包的第二序列号,关键帧仍然是过渡帧的基础。更为具体的,在确定关键帧后,确定每一个关键帧后面的不同帧,将不同帧对应的数据包的第二序列号依次加1、直至下一个关键帧,如果同一帧包含多个数据包,那么,该多个数据包的第二序列号设置为相同。这样,得到的第二数据包的第一序列号是连续的,在发生丢包但第二数据包完整的情况下,视频信息可以被正确解码。
[0104] 举例而言,假设网络中传输第二数据包包括:数据包n、数据包n+1、数据包n+2、数据包n+4、数据包n+5、数据包n+6、数据包n+7。其中,数据包n+3为FEC包,显然,第二数据包的RTP序列号是不连续的。其中,数据包n和数据包n+1为Frame A对应的数据包,且Frame A为关键帧,数据包n+2为Frame B对应的数据包,数据包n+4和数据包n+5为Frame C对应的数据包,数据包n+6为Frame D对应的数据包,且Frame D为关键帧,数据包n+7为Frame E对应的数据包。第一数据包表示如下:
[0105]
[0106]
[0107] 根据第一数据包得到第二数据包,第二数据包表示如下:
[0108]
[0109] 本发明实施例中,Frame A和Frame D为关键帧,因此,数据包n和数据包n+1的PICTURE_ID设置为0,数据包n+6的PICTURE_ID也为0。相应地,数据包n+2的PICTURE_ID为1,数据包n+4和数据包n+5属于同一个Frame,即Frame C,所以数据包n+4和数据包n+5的PICTURE_ID为2。而数据包n+7以关键帧Frame D为基础,所以,数据包n+7的PICTURE_ID为1。需要强调的是,同一帧对应的数据包的PICTURE_ID是相同的,且数据包的PICTURE_ID是在该数据包前面最接近的关键帧的基础上依次加1,直至下一个关键帧。得到第二数据包的第一序列号PICTURE_ID表示如下:
[0110]
[0111] 可见,虽然在启用FEC编码后得到的第二数据包的RTP序列号是不连续的,但是,不论FEC包(数据包n+3)在网络传输中是否丢失,第二数据包的PICTURE_ID是连续的,因此,在第二数据包完整的情况下,即,在Frame A、Frame B、Frame C、Frame D和Frame E完整时,解码端就可以对视频信息进行正确解码,得到解码后的视频信息。
[0112] 本发明实施例的一种实现方式中,对视频编码数据进行打包,生成第一数据包,包括:
[0113] 当通过时间分级编码方式对视频信息进行编码时,对通过时间分级编码方式生成的视频编码数据进行打包,生成第一数据包,其中,第一数据包包括:位于时间分级的基本层中的基本数据包和位于时间分级的增强层中的增强数据包,基本数据包和增强数据包形成连续的RTP序列号。
[0114] 需要说明的是,在通过时间分级编码方式对视频信息进行编码时,时间分级编码将视频信息分为多个重要性不等的层,包括:基本层和增强层,基本层包含了视频最重要的信息,可以保证最基本的视频质量。增强层在基本层的基础上进一步提高视频的质量,因此,在网络传输中,基本层的数据包被赋予了更高的传输优先级或者是更多的纠错保护,而增强层的数据包被赋予较低的传输优先级。这样,在发生网络拥塞或丢包时,可以先丢弃优先级低的增强层,或者因为基本层和增强层的不同保护机制使得基本层发生丢包的几率比增强层小,从而在保证丢包的情况下仍然可以根据基本层的数据包得到最基本视频质量的视频信息。
[0115] 另外,在通过时间分级进行编码时,基本层只有一层,而增强层可以有一层、两层甚至更多层,可根据实际情况进行设定。例如,当增强层有两层时,增强层可包括:第一增强层和第二增强层。本发明实施例中以增强层为一层进行详细说明,基本层中的数据包为基本数据包,增强层中的数据包为增强数据包,因此,网络中传输的第一数据包包括:基本数据包和增强数据包,且基本数据包和增强数据包形成连续的RTP序列号。
[0116] 本发明实施例的一种实现方式中,对第一数据包中的第二数据包新增第一序列号,包括:
[0117] 首先,将基本层的层标识设置为基本层标识,将增强层的层标识设置为增强层标识。
[0118] 然后,将第二数据包中的每一个关键帧对应的数据包的第三序列号设置为第二初始值,其中,第二数据包为基本数据包。
[0119] 最后,确定每一个关键帧后面的不同帧,将不同帧对应的数据包的第三序列号依次加1直至下一个关键帧,得到使第二数据包连续的第一序列号,其中,第二数据包中同一帧对应的多个数据包的第三序列号相同。
[0120] 本发明实施例中,通过时间分级编码方式得到的第一数据包包括:基本数据包和增强数据包,且基本数据包和增强数据包的优先级在网络传输中是不同的,为了对基本数据包和增强数据包进行区分,对基本层和增强层分别设置不同的标识,例如:基本层的层标识设置为基本层标识,增强层的层标识设置为增强层标识。层标识可以是TID,也可以是其他标识,本发明实施例中以TID为例进行说明。由于通过时间分级编码可以将时间层级分割为多层,其中,基本层为一层,增强层可以为一层,也可以为多层。那么,当时间层级为两层时,基本层的TID为0,即,基本层标识为0;增强层的TID可以为1,即,增强层标识为1。当时间层级为三层时,基本层为一层,增强层为两层,增强层包括:第一增强层和第二增强层,那么,可以将基本层设置为0,第一增强层设置为1,第二增强层设置为2。当然,基本层标识和增强层标识可以为其他任意可以区分基本数据包和增强数据包的标识,其他任意区分基本数据包和增强数据包的标识都属于本发明实施例保护的范围。
[0121] 由于基本层包含了视频最重要的信息,可以保证最基本的视频质量,基本层的数据包被赋予了更高的传输优先级或者是更多的纠错保护。因此,本发明实施例中,对第一数据包中的基本数据包新增序列号。更为具体的,一个视频信息中包含多个关键帧,将每一个关键帧的第三序列号设置为第二初始值,第二初始值可以和第一初始值相同,也可以和第一初始值不同。其中,第三序列号的标识可以为TL0_PIC_ID,也可以为其他标识,本发明实施例中以TL0_PIC_ID为例进行说明。第二初始值可以为0,也可以为其他值,在此不做限定。在确定关键帧后,确定每一个关键帧后面的不同帧,将不同帧对应的数据包的第三序列号依次加1直至下一个关键帧,如果同一帧包含多个数据包,那么,该多个数据包的第三序列号设置为相同。这样,得到的第二数据包的第一序列号是连续的,在发生丢包但第二数据包完整的情况下,视频信息可以被正确解码。
[0122] 举例而言,由于基本数据包和增强数据包形成连续的RTP序列号,单独的基本数据包的RTP序列号是不连续的。因此,假设网络中传输的第一数据包,包括:数据包m、数据包m+1、数据包m+2、数据包m+3、数据包m+4、数据包m+5、数据包m+6、数据包m+7、数据包m+8,m为大于0的整数。其中,基本数据包包括:数据包m、数据包m+2、数据包m+4、数据包m+6、数据包m+
8;增强数据包包括:数据包m+1、数据包m+3、数据包m+5、数据包m+7。基本数据包的TID为0,增强数据包的TID为1,表示如下:
[0123]
[0124] 根据第一数据包得到第二数据包,表示如下:
[0125]
[0126] 其中,数据包m为Frame H对应的数据包,且Frame H为关键帧,数据包m+2为Frame I对应的数据包,数据包m+4为Frame J对应的数据包,数据包m+6为Frame K对应的数据包,且Frame K为关键帧,数据包m+8为Frame L对应的数据包。
[0127] 本发明实施例中,Frame H和Frame K为关键帧,因此,数据包m和数据包m+6的TL0_PIC_ID设置为0。相应地,数据包m+2的TL0_PIC_ID为1,数据包m+4的TL0_PIC_ID为2。而数据包m+8以关键帧Frame K为基础,所以,数据包m+8的TL0_PIC_ID为1。
[0128]
[0129] 可见,由于时间分级编码中存在增强数据包,所以第二数据包的RTP序列号是不连续的,但是,第二数据包的TL0_PIC_ID是连续的,因此,只要第二数据包完整,即Frame H、Frame I、Frame J、Frame K和Frame L是完整的,就可以对视频信息进行正确解码。
[0130] 需要说明的是,当解码端对第二数据包按照预设解码方式进行解码、且增强数据包完整时,解码端对增强数据包按照预设解码方式进行解码。其中,基本数据包可以单独解码,当前基本数据包可解码的条件是当前基本数据包完整,且前一个基本数据包可解码。而增强层是在基本层的基础上进行解码的,增强层可解码的条件是当前增强数据包完整,且前一个数据包可解码。需要强调的是,数据包完整指的是,每一帧对应的数据包是完整的,即视频信息的每一帧是完整的。对基本数据包进行正确解码,可以保证最基本的视频质量。当对基本数据包可以进行正确解码,且增强数据包完整时,对增强数据包进行解码,得到视频质量更高的视频信息。
[0131] 举例而言,在启用时间分级编码时,将时间层级分割为两层,假设每一帧对应一个数据包。网络中传输第一数据包包括:数据包p、数据包p+1、数据包p+2、数据包p+3、数据包p+4、数据包p+5、数据包p+6和数据包p+7,p为大于0的整数。其中,数据包p、数据包p+2、数据包p+4和数据包p+6是基本层数据包;数据包p+1、数据包p+3、数据包p+5和数据包p+7是增强层数据包。假设基本数据包的TID为0,增强数据包的TID为1,表示如下:
[0132]
[0133] 在对上述第一数据包进行解码时,基本层数据包可以单独解码,基本数据包可解码的条件是前一个基本数据包可解码且当前数据包完整。例如:数据包p+2可解码的条件是数据包p可解码,且数据包p+2完整。假设数据包p、数据包p+2、数据包p+4和数据包p+6都可以进行正确解码。增强层可以被解码的条件是前一帧可以被正确解码,且当前帧完整,即,前一个数据包可以被正确解码,且当前数据包自身完整。那么,数据包p+1可以正确解码的条件是,数据包p可以正确解码,且数据包p自身完整;数据包p+3可以正确解码的条件是,数据包p+2可以正确解码,且数据包p自身完整;依次类推,直至所有增强数据包可以被正确解码。与单独的基本数据包得到正确解码相比,可提高视频的清晰度。
[0134] 本发明实施例的一种实现方式中,对视频编码数据进行打包,生成第一数据包,包括:
[0135] 首先,当在基本层启用前向纠错编码时,根据基本数据包生成位于基本层的第二前向纠错包。
[0136] 然后,根据基本数据包、第二前向纠错包和增强数据包生成第一数据包,其中,基本数据包、第二前向纠错包和增强数据包形成连续的RTP序列号。
[0137] 需要说明的是,在启用时间分级编码时,基本层的数据包被赋予了更高的传输优先级或者是更多的纠错保护,增强层数据的传输优先级比较低且不启用纠错保护。因此,本发明实施例中,当在基本层启用FEC编码时,根据基本数据包生成第二前向纠错包,其中,第二前向纠错包也位于基本层。那么,在网络中传输的第一数据包包括:基本数据包、第二前向纠错包和增强数据包,基本数据包、第二前向纠错包和增强数据包形成连续的RTP序列号。
[0138] 举例而言,在启用时间分级编码时,将时间层级分割为两层,且每一帧对应一个数据包。网络中传输第一数据包包括:数据包r、数据包r+1、数据包r+2、数据包r+3、数据包r+4、数据包r+5和数据包r+6,r为大于0的整数。在不启用FEC编码时,第一数据包表示如下:
[0139]
[0140] 当对基本层启用FEC编码时,如果根据Frame A(数据包r)生成第一FEC包,根据Frame E(数据包r+4)生成第二FEC包,那么,该第一FEC包会紧跟在Frame A对应的数据包后面,因此,该第一FEC包的RTP序列号为r+1,然后,再传输增强数据包,即Frame B对应的数据包,Frame B对应的数据包的RTP序列号为r+2。同样地,后面的数据包的RTP序列号依次类推。Frame C对应的数据包的RTP序列号为r+3,Frame D对应的数据包的RTP序列号为r+4,根据Frame E生成的第二FEC包的序列号会紧跟在数据包r+5后面,因此,该第二FEC包的RTP序列号为r+6,然后,再传输增强数据包Frame F对应的数据包,Frame F对应的数据包的RTP序列号为r+6,Frame G对应的数据包的RTP序列号为r+8。那么,得到的新的第一数据包表示如下:
[0141]
[0142] 启用FEC编码后,根据上述第一数据包得到的第二数据包表示如下:
[0143]
[0144]
[0145] 可见,在启用FEC编码后,第二数据包中不仅包含用于解码视频信息的基本数据包,还包括根据基本数据包生成的FEC包,这样,通过对基本数据包增加纠错保护,提高了视频信息被正确解码的概率,进而提高实时传输中视频信息的质量。
[0146] 可选的,本发明实施例的视频编码方法中,第三数据包中的每一个数据包的包头包括:数据包的ID、数据包包体的长度、第二序列号、层标识和第三序列号。
[0147] 需要说明的是,网络中传输的数据包包括:header(数据包的头部)和Payload(数据包的内容),也就是包括:数据包包头和数据包包体。本发明实施例中,由于新增了第二序列号、层标识和第三序列号等信息,本发明实施例对第二序列号、层标识和第三序列号的标识不做具体限定。为了保持与RFC6184(RTP Payload Format for H264 Video)的兼容,在标准的RTP Header Extension的基础上增加以下信息,包括:
[0148]
[0149] 在RTP Header Extension中,“+”、“-”、“|”表示分隔符,其中,“|”为字段分隔符,例如,tid和tl0_pic_id属于不同的字段,通过“|”分开使得tid和tl0_pic_id所占用的字节更清晰。
[0150] ID占用4bits,表示数据包的ID,即每一个数据包都有对应的身份标识;
[0151] L占用4bits,其值为3,表示数据包包体的长度;
[0152] r1-1bits,保留位;
[0153] picture_id–15bits,为第二序列号,表示用于解码视频信息的数据包的序列号;
[0154] r2–4bits,保留位;
[0155] tid–4bits,为层标识,表示在启用时间分级编码时,基本层和增强层的层标识;
[0156] tl0_pic_id,8bits,为第三序列号,表示用于解码视频信息的数据包的序列号。
[0157] 相应于上述方法实施例,本发明实施例还公开了一种视频编解码装置,参见图5,图5为本发明实施例的视频编码装置的一种结构图,包括:
[0158] 数据包生成模块501,用于对视频编码数据进行打包,生成第一数据包。其中,视频编码数据是对待编码的视频信息按照预设编码方式进行编码生成的。
[0159] 序列号增加模块502,用于对第一数据包中的第二数据包新增第一序列号,得到网络中传输的第三数据包,其中,第二数据包为用于解码视频信息的数据包,第一序列号使第二数据包连续。
[0160] 参见图6,图6为本发明实施例的视频解码装置的一种结构图,包括:
[0161] 数据包接收模块601,用于接收网络中传输的第三数据包。
[0162] 数据包解码模块602,用于在接收到的数据包发生丢包、但第二数据包完整时,根据第二数据包的连续的第一序列号,按照预设解码方式对第二数据包进行解码,得到解码后的视频信息。
[0163] 可见,本发明实施例提供的视频编解码装置,编码端通过对视频编码数据进行打包,生成第一数据包;对第一数据包中的第二数据包新增第一序列号,得到网络中传输的第三数据包。解码端接收第三数据包,在接收到的数据包发生丢包、但第二数据包完整时,根据第二数据包的连续的第一序列号,按照预设解码方式对第二数据包进行解码,得到解码后的视频信息。本发明实施例不会因为数据包的丢失而出现视频的卡顿,减少了时延,提高了视频信息在实时传输中的质量,有效改善了视频信息的清晰度。
[0164] 需要说明的是,本发明实施例的装置是应用上述视频编码方法和上述视频解码方法的装置,则上述视频编码方法和上述视频解码方法的所有实施例均适用于该装置,且均能达到相同或相似的有益效果。
[0165] 参见图7,图7为本发明实施例的视频编码装置的另一种结构图,包括:数据包生成模块700和序列号增加模块710,其中:
[0166] 数据包生成模块700,包括:
[0167] 视频数据包生成子模块701,用于对视频编码数据进行打包,生成第一视频数据包。
[0168] 前向纠错包生成子模块702,用于当按照预设编码方式启用前向纠错编码时,根据第一视频数据包生成第一前向纠错包。
[0169] 第一数据包生成子模块703,用于根据第一视频数据包和第一前向纠错包生成第一数据包。
[0170] 其中,第一视频数据包和第一前向纠错包形成连续的RTP序列号。
[0171] 序列号增加模块710,包括:
[0172] 第一序号设置子模块711,用于将第二数据包中的每一个关键帧对应的数据包的第二序列号设置为第一初始值,其中,第二数据包为第一视频数据包。
[0173] 第二序号设置子模块712,用于确定每一个关键帧后面的不同帧,将不同帧对应的数据包的第二序列号依次加1直至下一个关键帧,得到使第二数据包连续的第一序列号,其中,第二数据包中同一帧对应的多个数据包的第二序列号相同。
[0174] 参见图8,图8为本发明实施例的视频编码装置的另一种结构图,包括:数据包生成模块800和序列号增加模块810,其中:
[0175] 数据包生成模块800,包括:
[0176] 时间分级数据包生成子模块801,用于当通过时间分级编码方式对视频信息进行编码时,对通过时间分级编码方式生成的视频编码数据进行打包,生成第一数据包,其中,第一数据包包括:位于时间分级的基本层中的基本数据包和位于时间分级的增强层中的增强数据包,基本数据包和增强数据包形成连续的RTP序列号。
[0177] 序列号增加模块810,包括:
[0178] 层标识设置子模块811,用于将基本层的层标识设置为基本层标识,将增强层的层标识设置为增强层标识。
[0179] 第三序号设置子模块812,用于将第二数据包中的每一个关键帧对应的数据包的第三序列号设置为第二初始值,其中,第二数据包为基本数据包。
[0180] 第四序号设置子模块813,用于确定每一个关键帧后面的不同帧,将不同帧对应的数据包的第三序列号依次加1直至下一个关键帧,得到使第二数据包连续的第一序列号,其中,第二数据包中同一帧对应的多个数据包的第三序列号相同。
[0181] 可选的,本发明实施例的视频编码装置中,时间分级数据包生成子模块,包括:
[0182] 第二前向纠错包生成单元,用于当在基本层启用前向纠错编码时,根据基本数据包生成位于基本层的第二前向纠错包。
[0183] 数据包生成单元,用于根据基本数据包、第二前向纠错包和增强数据包生成第一数据包,其中,基本数据包、第二前向纠错包和增强数据包形成连续的RTP序列号。
[0184] 可选的,本发明实施例的视频编码装置中,第三数据包中的每一个数据包的包头包括:数据包的ID、数据包包体的长度、第二序列号、层标识和第三序列号。
[0185] 本发明实施例公开了一种编码器,包括:
[0186] 编码器用于对视频编码数据进行打包,生成第一数据包,对第一数据包中的第二数据包新增第一序列号,得到网络中传输的第三数据包,其中,视频编码数据是对待编码的视频信息按照预设编码方式进行编码生成的;第二数据包为用于解码视频信息的数据包,第一序列号使第二数据包连续。
[0187] 本发明实施例公开了一种解码器,包括:
[0188] 解码器用于接收网络中传输的第三数据包,在接收到的数据包发生丢包、但第二数据包完整时,根据第二数据包的连续的第一序列号,按照预设解码方式对第二数据包进行解码,得到解码后的视频信息,其中,第三数据包是对第一数据包中的第二数据包新增第一序列号生成的,第一序列号使第二数据包连续,第一数据包是对视频编码数据进行打包生成的,视频编码数据是对待编码的视频信息按照预设编码方式进行编码生成的,第二数据包为用于解码视频信息的数据包。
[0189] 需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
[0190] 本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
[0191] 以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈