一种码流分析方法和装置 【技术领域】
本发明涉及音视频编解码技术领域, 特别涉及一种码流分析的方法和装置。背景技术 近年来, 随着集成电路技术的不断革新和发展, 消费电子产业得到了长足的发展。 消费电子产品所具有的一大功能是对多媒体内容的兼容, 因此各大消费电子产品厂商十分 重视多媒体解码器和编码器的研发。在相关研发过程中, 获取并分析多媒体码流中的编码 信息都是十分重要的环节, 该环节被称为码流分析。
涉足多媒体编解码器的公司都发布了用于进行码流分析的工具, 但这些公司发布 的码流分析工具的适用范围一般仅限于本公司的编码标准, 只能支持一种或很少的几种编 码格式码流。而目前流行的编码标准分属好几个公司, 没有哪一种码流分析工具可以支持 全部常用的编码标准。目前进行码流分析时, 使用码流分析工具 A 对符合 A 公司编码标准 的多媒体码流进行分析 ; 当需要对符合 B 公司编码标准的多媒体码流进行分析时, 只能换
用另一个码流分析工具, 使用起来很不方便。 发明内容
有鉴于此, 本发明的目的在于, 提出一种码流分析方法和装置, 可以对符合各种常 用编码标准的多媒体码流进行分析。
本发明实施例提出的一种码流分析装置包括 :
解码器库, 由多于一个的解码器和统一的接口单元所组成, 每个解码器用于对一 种编码格式码流进行解码, 提取出码流中的数据 ; 所述统一的接口单元至少包括识别接口 单元以及参数集信息接口单元, 识别接口单元用于根据码流的属性信息识别码流的格式 ; 参数集信息接口单元用于输出从码流中提取的数据 ;
组件模块, 调用解码器识别接口单元选择相应的解码器, 并根据来自用户界面模 块的操作指示, 调用解码器库的统一的接口单元, 以及接收来自解码器库的参数集信息接 口单元输出的数据, 将所述数据输出至用户界面模块 ;
用户界面模块, 用于提供用户可见的人机交互界面, 接收来自用户的操作指示, 将 所述操作指示输出至组件模块 ; 以及在所述人机交互界面上显示来自组件模块的数据。
所述组件模块进一步包括 : 分析单元, 用于对来自解码器库的数据进行分析, 将分 析结果输出至用户界面模块。
所述组件模块还可以进一步包括 : 统计单元, 用于根据预先定义或者用户自定义 的公式, 对来自解码器库的数据进行相关统计计算, 并将计算结果输出至用户界面模块。
所述解码器提供的统一的接口单元还包括 :
主要信息接口单元, 用于解码码流中的主要节点以及主要节点的上层节点, 列出 码流的语法层次结构信息 ; 所述主要节点为码流语法层次中预先指定的第 n 层节点, n 为自 然数 ;主要节点解码接口单元, 用于对当前选中的主要节点以及所述主要节点的下层节 点进行解码。
所述码流为视频码流, 所述主要节点为帧对应的语法结构节点。
所述组件模块进一步包括 : 编辑模块, 用于根据用户指令, 对来自解码器库的数据 中的头部信息进行修改 ;
所述解码器提供的接口单元进一步包括 : 保存文件接口单元, 用于按照所述编辑 模块实施的修改, 对修改后的码流进行保存。
所述解码器提供的统一的接口单元还包括 : 关闭解码器接口单元, 用于释放解码 器使用的软硬件资源。
所述解码器提供的统一的接口单元还包括 : 解码器信息接口单元, 用于提供解码 器解码过程中的相关信息。
所述用户界面模块进一步包括 :
码流层次结构表示界面, 用树状结构表示码流的语法结构 ; 或
数据列表界面, 用表格给出了码流各个参数的语义 ; 或
解码结果表示界面, 用图像展示解码结果。
本发明实施例提出的一种码流分析方法包括如下步骤 :
根据输入的码流的属性信息, 从多于一个的解码器中选择与该属性信息匹配的解 码器 ;
用所选择的解码器对所述码流进行解码, 提取出码流中的数据 ;
在用户可见的人机交互界面上显示所述提取自码流中的数据。
所述在用户可见的人机交互界面上显示所述提取自码流中的数据的步骤包括 :
对所述数据进行分析, 在人机交互界面上显示分析结果。
所述在用户可见的人机交互界面上显示所述提取自码流中的数据的步骤包括 :
根据预先定义或者用户自定义的公式, 对所述数据进行相关统计计算, 在人机交 互界面上显示计算结果。
所述用所选择的解码器对所述码流进行解码, 提取出码流中的数据的步骤包括 :
解码码流中的主要节点以及主要节点的上层节点, 列出码流的语法层次结构信 息; 所述主要节点为码流语法层次中预先指定的第 n 层节点, n 为自然数。
所述列出码流的语法层次结构信息之后进一步包括 :
将用户选择的主要节点作为当前主要节点, 对当前主要节点的下层节点进行解 码。
所述在用户可见的人机交互界面上显示所述提取自码流中的数据之后, 进一步包 括:
对所述数据中的头部信息进行修改, 并保存修改后的码流。
从以上技术方案可以看出, 在码流分析装置中设置多种解码器, 采用统一的平台 运行各种解码器, 对于输入的码流自动识别出对应的解码器进行解码, 从而实现支持多种 编码标准的多媒体码流。 更进一步地, 本发明采用按需解码的方式, 可以精确地响应使用者 的分析需求, 并极大地提升了工具的运行效率 ; 本发明方案可以在对码流数据分析的基础 上, 进行信息统计、 码流编辑等操作, 更加丰富了码流分析的功能。附图说明
图 1 为本发明实施例提出的码流分析装置的结构框图 ; 图 2 为图 1 所示码流分析装置的用户界面模块 103 所显示的主界面的示意图 ; 图 3 为 mpeg4 格式码流的语法层次结构示意图 ; 图 4 为本发明实施例的码流分析装置的运行流程图 ; 图 5 为本发明实施例的码流分析流程图。具体实施方式
为使本发明的目的、 技术方案和优点更加清楚, 下面结合附图对本发明作进一步 的详细阐述。
本发明实施例提出的码流分析装置的结构框图如图 1 所示, 该码流分析装置主要 包括解码器库 101、 组件模块 102 和用户界面模块 103。
解码器库 101 包括多于一个的解码器, 每个解码器对应一种格式的码流, 用于对 该格式的码流进行解码, 提取码流中的数据。所述数据包括从码流数据包净荷中提取的多 媒体解码数据, 以及从码流数据包头中提取的相关信息。所述码流格式可以包括但不限于 H.264、 mpeg1、 mpeg2、 mpeg4、 mp3、 mp4、 wmv 等。各个解码器提供统一的接口单元 ; 所述接口 单元至少包括识别接口单元以及参数集信息接口单元, 识别接口单元用于根据码流的属性 信息识别码流的格式 ; 参数集信息接口单元用于对外输出从码流中提取的数据。
组件模块 102 用于调用解码器识别接口单元选择相应的解码器, 并根据来自用户 界面模块 103 的操作指示, 调用解码器库 101 对应的接口单元, 以及接收来自解码器库 101 的数据, 将所述数据输出至用户界面模块 103。
组件模块 102 提供如下功能单元实现分析、 统计、 编辑操作 :
分析单元, 用于对解码数据进行分析, 显示解码数据的相关参数信息, 例如, 显示 当前帧图像的大小, 编码压缩效率。
统计单元, 用于根据预先定义或者用户自定义的公式, 根据解码数据和 / 或头部 信息进行相关统计计算, 并在码流结果表示界面或数据列表界面显示计算结果, 比如统计 码流中特定类型的帧占全部帧的比例。帧类型包括 I 类型、 P 类型以及 B 类型。
编辑单元, 用于对头部信息进行修改, 比如更改当前帧的时间戳 (time_stamp)。
用户界面模块 103 用于提供用户可见的人机交互界面, 将码流数据形象地展示, 接收来自用户的操作指示, 将所述操作指示输出至组件模块 102 ; 以及在所述人机交互界 面上显示来自组件模块 102 的数据。
用户界面模块 103 所显示的主界面分为三个部分, 分别是码流层次结构表示界面 201、 数据列表界面 202 以及解码结果表示界面 203, 如图 2 所示。其中, 码流层次结构表示 界面 201 用树状结构表示了欲分析的码流的语法结构, 数据列表界面 202 用表格给出了码 流各个参数的语义, 解码结果表示界面 203 用图像展示了解码结果。
多媒体编码数据具有压缩率高的特点, 解码是一个相当耗费计算资源的过程。以 下以常见的 mpeg4 格式为例说明多媒体码流的结构特点。图 3 根据 mpeg4 视频码流标 准 -ISO/IEC 14496-2 形象地给出了 mpeg4 格式码流的语法层次结构。图中, mpeg4ASPBitstream 表示了一个符合 mpeg4ASP profile 的码流, VOSi 代表了此码流的第 i 个视 觉对象序列 (Visual Object Sequence), VOi 代表了 VOSi 中的第 i 个视觉对象 (Visual Object), VOLi 代表了 VOi 中的第 i 个视觉对象层 (Video Object Layer), VOPi 代表了 VOLi 中的第 i 个视觉对象平面 (Video Object Plane), MBi 代表了 VOPi 中的第 i 个宏块 (Macro Block), SB1 到 SB6 代表了 MBi 中的六个子块 (Sub-Block)。多媒体数据都具有与图 3 类似 的码流语法层次结构, 这是由各种压缩标准所规定的。
现有技术中采用的方式通常是只对码流中的一部分内容进行分析, 例如分析内容 限于文件头和数据包头 ; 或者, 只分析码流的比特率信息。这样从码流中得到的数据具有 很大的局限。本发明方案可以对码流中的全部信息进行分析, 但为了节约计算资源采用按 需分析的方式。本发明将各类型多媒体数据语法结构上的每个单元称为 “节点” 或 “语法 节点” 。码流中包括多个层次的节点, 并将其中某一层节点定义为 “主干节点” 或者 “主要节 点” 。例如在视频码流中, 将帧所对应的节点称为 “主干节点” 或者 “主要节点” , 在图 3 中, 帧所对应的节点是 VOP。
解码器库包含了多于一个的解码器, 按组件模块的调用需求, 这些解码器将对码 流进行解码。本发明实施例的解码器库包含了 H.264 解码器, mp3 解码器, mpeg1/2 解码器, jpeg 解码器。每个解码器库设计了多个接口单元。对于每一个解码器来说, 都应该具有如 下接口单元 : 识别接口单元 : 每一种码流归属于一类编码标准, 因此每种码流都有独特的起始 码来标识自己属于何种编码格式, 该起始码即为前文所述的属性信息。例如, 十六进制数 0x000001B0 为 Visual Object Sequence 的起始码, 标识了 mpeg4 码流一个 VOS 的开始。解 码器将根据自身支持的的编码格式判断本解码器是否支持当前码流的解码。
主要信息接口单元 : 解码码流中的主要节点以及主要节点的上层节点, 列出码流 的语法层次结构信息 ;
主要节点解码接口单元 : 解码当前选中的主要节点, 如果该节点之下还有码流 语法层次的话, 解码这些层次之上的节点, 比如主要节点——帧之下还有 Macro Block 和 Sub-Block 两层节点 ;
参数集信息接口单元 : 每一个节点都有其不同的参数集信息, 音频数据还有音频 脉冲数据信息, 视频还有图像数据信息, 解码器的此接口将提供这些信息 ;
保存文件接口单元 : 解码器按照用户操作保存被修改后的码流 ;
解码器信息接口单元 : 用于提供解码器解码过程中的相关信息, 以便实现错误控 制, 解码状态控制等功能。 例如, 在出错时解码器可以输出出错状态值 ; 在解码耗时较长时, 可以通过这一接口提供解码进度。
关闭解码器接口单元 : 在替换解码器或关闭分析工具时, 释放解码器使用的软硬 件资源 ;
由以上描述可知, 多媒体数据分层结构复杂, 解码过程耗费资源。有鉴于此, 本发 明将码流分析装置的运行流程设计成按需进行的方式, 如图 4 所示, 包括如下步骤 :
步骤 401 : 打开阶段 : 根据输入的码流的属性信息, 从多于一个的解码器中选择 与该属性信息匹配的解码器 ; 用所选择的解码器对所述码流进行解码, 提取出码流中的数 据;
步骤 402 : 分析阶段 : 在用户可见的人机交互界面上显示所述提取自码流中的数据。 步骤 403 : 关闭阶段 : 关闭码流文件, 关闭解码器, 释放程序运行时占用的资源。 如 果使用者对码流进行了编辑, 则将修改的内容进行保存。
以下通过一具体实施例对按需解码过程的过程进行具体说明。 本发明实施例的具 体流程如图 5 所示, 包括如下步骤 :
步骤 501 : 根据输入的码流的属性信息, 选择与该属性信息匹配的解码器。
本发明实施例在实现各个解码器时, 每个解码器都包括一个识别子模块, 用于判 断输入的码流的属性信息是否与本解码器匹配。 组件模块通过调用各个解码器的识别子模 块, 来选择可以支持这一码流的解码器。 当找到能支持当前码流的解码器后, 组件模块将会 调用该解码器对码流进行分析, 后续的解码动作都由该解码器完成 ; 如果没有一个解码器 能支持当前的码流, 则表示不支持这一码流, 通过用户界面模块显示相应的提示信息。
步骤 502 : 由所述支持当前码流的解码器获取码流主要信息。
码流主要信息可以由各个解码器单独来定义, 一般可以定义为 : 主要节点以及主 要节点的上层节点的相关信息。比如对于视频码流来说, 码流主要信息定义在帧以及帧以 上的层次, 特别地, mpeg4 ASP Bitstream 将码流主要信息定义在 VOP、 VOL、 VO、 VOS 四层。 这一定义决定了首次打开码流时的解码复杂度, 因此是影响工具效率的因素之一。
步骤 503 : 根据使用者的选择确定当前节点, 根据预先定义的主要节点判断当前 节点是否为主要节点, 若是则执行步骤 504, 否则转至步骤 505。
具体实施方式如下 : 使用者用鼠标点击码流层次结构表示界面中显示的某一个节 点, 用户界面模块将用户点击节点的信息发送到组件模块, 组件模块收到用户界面模块的 信息后, 将使用者点击的节点作为当前节点, 调用支持当前码流的解码器判断当前节点是 否为其所定义的主要节点, 解码器将判断结果返回组件模块。
步骤 504 : 组件模块调用解码器获取当前主要节点下的子节点信息。本实施例如 图 3 所示, 主要节点会包含两层子节点。
步骤 505 : 组件模块调用解码器对当前模块进行解码, 获取语法节点的头部信息 和解码得到的数据。 码流的每一个语法节点都有对应的头部信息, 如 mpeg4 ASP Bitstream 的 VOL 节 点 就 会 有 帧 类 型 (picture_type)、 时 间 戳 (time_stamp)、 宽 度 (width)、 高度 (height) 等头部信息。解码得到的数据, 比如音频码流解码出来的是脉冲编码调制波形数 据, 视频码流解码出来的是某一色度空间的图像数据。
步骤 506 : 对头部信息和数据进行分析、 统计和 / 或编辑操作。当头部信息和解码 数据被获取后, 头部信息会以字符串的形式展示在数据列表界面, 解码数据以波形或图像 的形式展示在码流结果表示界面。
步骤 507 : 当使用者进行了码流的编辑操作, 然后请求保存修改后码流文件的副 本时, 保存修改后的码流文件。该步骤仅当使用者进行了码流编辑操作时执行, 为可选步 骤。
步骤 508 : 使用者继续点击码流语法节点进行分析, 此时流程将转到步骤 503, 若 使用者未点击其他码流语法节点, 则执行步骤 509。
步骤 509 : 使用者选择退出后, 组件模块将释放解码器资源, 关闭解码器, 释放运
行时资源, 并退出程序。
本发明提出的码流分析方法和装置可以对多种音频文件、 视频文件以及图像数据 进行分析。码流信息被直观地展示给用户, 对于音频文件, 可以分析文件的采样率、 码率等 参数, 分析每一个采样点的值 ; 对于视频文件, 可以读取编码器、 帧类型、 宏块类型等参数, 可以观察每帧的图像、 每个宏块的运动向量、 宏块色度空间数据等等信息。
本发明方案中, 码流分析装置的架构包括用户操作窗口、 组件和解码器库, 很好地 解决了多种解码器、 多种数据类型在同一平台运行和共享的问题。这一问题的解决能提升 码流分析装置的兼容性和功能。在流程设计上采用 “按需解码” 的方式, 可以精确地响应使 用者的分析需求, 并且极大地提升了运行效率。本发明对于解码器设计了 7 个接口, 统一了 不同码流格式的解码器, 提供了码流分析、 信息统计、 码流编辑的功能。按照本发明的码流 分析方案支持码流数据的分析、 信息统计和码流编辑, 有功能丰富、 兼容性好和易于扩展的 特点。
通过以上的实施方式的描述, 本领域的技术人员可以清楚地了解到本发明可借 助软件加必需的硬件平台的方式来实现, 当然也可以全部通过硬件来实施, 但很多情况下 前者是更佳的实施方式。基于这样的理解, 本发明的技术方案对背景技术做出贡献的全部 或者部分可以以软件产品的形式体现出来, 该计算机软件产品可以存储在存储介质中, 如 ROM/RAM、 磁碟、 光盘等, 包括若干指令用以使得一台计算机设备 ( 可以是个人计算机, 服务 器, 或者网络设备等 ) 执行本发明各个实施例或者实施例的某些部分所述的方法。
以上所述仅为本发明的较佳实施例而已, 并不用以限制本发明, 凡在本发明的精 神和原则之内所作的任何修改、 等同替换和改进等, 均应包含在本发明的保护范围之内。