一种多媒体流的处理方法、装置和嵌入式设备与流程

文档序号:11156640
一种多媒体流的处理方法、装置和嵌入式设备与制造工艺

本发明实施例涉及信息处理技术,尤其涉及一种多媒体流的处理方法、装置和嵌入式设备。



背景技术:

近几年来,随着IP(Internet Protocol,网际协议)网络的快速发展,视频监控行业进入了全网络化时代,网络摄像机、以及NVR(Network Video Recorder,网络硬盘录像机)产品的应用也越来越广泛。

上述产品一般有两大主要功能:实时播放和录像。录像一般都会挂载一张SD Card(Secure Digital Memory Card,安全数字存储卡)或者其他存储设备中,用来保存大量的音视频数据。保存在SD卡中的视频文件,通常会用来做视频回放,这就需要对音视频流打包封装成多媒体文件,以提供给客户端或者移动应用程序的播放器播放。在一些场景下需要同时将多路网络摄像头拍摄的录音录像打包封装成多媒体文件;在另一些场景下可能需要将有价值的录音录像片段通过网络上传到云服务器中,再下载到客户端,同时又需要支持通过点播或者直播的形式在移动设备上查看录像文件,这就避免不了对音视频混流封装成多个格式的多媒体文件,如FLV(Flash Video,流媒体格式)、MP4(Moving Picture Experts Group 4,动态图像专家组)、TS(transport stream,传送流)或PS(Program Stream,节目流)等格式。

现有的音视频混流打包的管理方式,只支持单路音视频流的处理或者仅支持对音视频流进行单一封装格式的处理逻辑,直接增添多路或多种格式的封装打包往往会使系统逻辑变得复杂,且容易出现问题。此外扩展性也差,增加新的功能的时候,代码改动量大。由于代码臃肿,也使后期的维护成本很高。



技术实现要素:

本发明实施例提供一种多媒体流的处理方法、装置和嵌入式设备,以实现简单、高效将音视频流混流生成满足设定封装需求的多媒体文件。

第一方面,本发明实施例提供了一种多媒体流的处理方法,该方法包括:

根据封装要求确定多媒体流数量和预设封装格式,对相应封装格式的编码组件模板进行配置,以获得对应的编码组件实例;

将输入的多媒体流,输入至所述编码组件实例进行所述预设封装格式的封装;

输出具有所述预设封装格式的多媒体流。

第二方面,本发明实施例还提供了一种多媒体流的处理装置,该装置包括:

编码组件实例获取模块,用于根据封装要求确定多媒体流数量和预设封装格式,对相应封装格式的编码组件模板进行配置,以获得对应的编码组件实例;

多媒体流封装模块,用于将输入的多媒体流,输入至所述编码组件实例进行所述预设封装格式的封装;

多媒体流输出模块,用于输出具有所述预设封装格式的多媒体流。

第三方面,本发明实施例还提供了一种嵌入式设备,包括:本发明实施例所述的多媒体流的处理装置。

本发明实施例根据封装要求确定多媒体流数量和预设封装格式,对相应封装格式的编码组件模板进行配置,以获得对应的编码组件实例;将输入的多媒体流,输入至所述编码组件实例进行所述预设封装格式的封装;输出具有所述预设封装格式的多媒体流,解决了现有的音视频混流打包的管理方式,只支持单路音视频流的处理或者仅支持对音视频流进行单一封装格式的处理逻辑,直接增添多路或多种格式的封装打包往往会使系统逻辑变得复杂的技术问题,实现了简单、高效将音视频流混流生成满足需求的多媒体文件的技术效果。

附图说明

图1是本发明实施例一中的一种多媒体流的处理方法的流程图;

图2a是本发明实施例二中的一种多媒体流的处理方法的流程图;

图2b是一种应用于本发明实施例二中的多媒体流的处理方法的编码组件模板的结构示意图;

图2c是一种应用于本发明实施例二中的多媒体流的处理方法的混流过滤器的功能示意图;

图2d是一种应用于本发明实施例二中的多媒体流的处理方法的优先级队列的功能示意图;

图3是本发明实施例三中的一种多媒体流的处理装置的结构图;

图4是本发明实施例四中的一种嵌入式设备的结构图。

具体实施方式

下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。

实施例一

图1为本发明实施例一提供的一种多媒体流的处理方法的流程图,本实施例可适用于对音视频流进行混流封装的情况,该方法可以由多媒体流的处理装置来执行,该装置可通过软件,和/或硬件的方式实现,并一般可集成于完成音视频混流封装功能的硬件设备中(典型的,音视频复用器),所述方法具体包括如下步骤:

S110、根据封装要求确定多媒体流数量和预设封装格式,对相应封装格式的编码组件模板进行配置,以获得对应的编码组件实例。

在本实施例中,所述封装要求用于指明待处理的多媒体流数量,以及所述多媒体流的封装格式。

其中,所述多媒体流可以包括音视频流、也可以仅包括音频流或者视频流。所述多媒体流数量可以为一个或者多个。典型的,所述多媒体流可以为一个或者多个IP Camera(网络摄像头)采集的音视频流。所述多媒体流的封装格式可以为一个,也可以为多个。其中,所述多媒体流的封装格式可以包括:RTP格式、TS格式、MP4格式或者FLV格式等多媒体文件封装格式。

相应的,根据封装要求确定多媒体流数量和预设封装格式可以包括:

如果接收到的封装要求中确定待处理的多媒体流为多个,或者预设封装格式有多个,则根据多媒体流的数量和/或预设封装格式的数量,将多媒体流复制生成多路多媒体流,以分别进行处理。

典型的,所述封装要求可以为对多路IP Camera采集的音视频流进行封装处理生成一种封装格式的多媒体文件的要求,或者对一路IP Camera采集的音视频流进行封装处理生成多种封装格式的多媒体文件的要求,或者对多路IP Camera采集的音视频流进行封装处理生成多种封装格式的多媒体文件的要求等。

所述编码组件模板具体是指预先编写的,用于将输入的音视频流编码为相应封装格式的多媒体文件的模板函数。其中,所述编码组件模板可以包括一个或者多个用于执行设定功能的模板函数,用于根据所述多媒体流数量和预设封装格式,生成相应的编码组件实例,以实现针对实际的封装要求,适应性生成相应的编码组件实例,以实现将输入的多媒体流封装为相应的封装格式。

其中,所述编码组件模板中包括与封装格式对应的至少两个编码程序模板,以实现生成至少两个封装格式的多媒体文件。

S120、将输入的多媒体流,输入至所述编码组件实例进行所述预设封装格式的封装。

如前所述,所述多媒体流具体是指一路或者多路音频流,和/或视频流。

所述编码组件实例中包括输入接口以及输出接口,用于将输入的所述多媒体流,进行所述预设封装格式的封装处理,以最终生成所述预设封装格式的多媒体流,即:RTP(Real-time Transport Protocol,实时传输协议)、TS、MP4或者FLV等格式的多媒体文件。

S130、输出具有所述预设封装格式的多媒体流。

本发明实施例根据封装要求确定多媒体流数量和预设封装格式,对相应封装格式的编码组件模板进行配置,以获得对应的编码组件实例;将输入的多媒体流,输入至所述编码组件实例进行所述预设封装格式的封装;输出具有所述预设封装格式的多媒体流,解决了现有的音视频混流打包的管理方式,只支持单路音视频流的处理或者仅支持对音视频流进行单一封装格式的处理逻辑,直接增添多路或多种格式的封装打包往往会使系统逻辑变得复杂的技术问题,实现了简单、高效将音视频流混流生成满足需求的多媒体文件的技术效果。

实施例二

图2a是本发明实施例二提供的一种多媒体流的处理方法的流程图,本实施例以上述实施例为基础进行优化,在本实施例中,将根据封装要求和预设封装格式,对相应封装格式的编码组件模板进行配置,以获得对应的编码组件实例具体优化为:根据封装要求和预设封装格式,对相应封装格式的音频编码组件模板、视频编码组件模板和混流组件模板分别进行配置,以获得对应的音频编码组件实例、视频编码组件实例和混流组件实例;

相应的,将输入的多媒体流,输入至所述编码组件实例进行所述预设封装格式的封装具体优化为:

将输入的多媒体流中的音频流,输入至所述音频编码组件实例进行封装,并输出至混流组件实例;将输入的多媒体流中的视频流,输入至所述视频编码组件实例进行封装,并输出至混流组件实例;通过所述混流组件实例,按照音频流和视频流中的时间戳,将音频流和视频流进行混流处理,形成具有预设封装格式的多媒体流。

相应的,本实施例的方法具体包括如下步骤:

S210、根据封装要求和预设封装格式,对相应封装格式的音频编码组件模板、视频编码组件模板和混流组件模板分别进行配置,以获得对应的音频编码组件实例、视频编码组件实例和混流组件实例。

可以理解的是,为了实现将输入的音视频流最终封装为相应封装格式的多媒体文件,需要首先将音频流以及视频流首先封装成适宜的音频格式以及视频格式。在一个具体例子中,如果需要最终生成的多媒体文件为MP4格式,则需要首先将输入的音频流封装为MP3格式。

相应的,为了便于程序代码的模块化处理,以及扩展,在本实施例中,将所述编码组件模板具体优化为:音频编码组件模板、视频编码组件模板和混流组件模板。

其中,所述音频编码组件模板,用于将输入的音频流封装为与封装要求对应的音频封装格式;所述视频编码组件模板,用于将输入的视频流封装为与封装要求对应的视频封装格式;所述混流模板组件,用于将所述通过所述音频编码组件模板以及所述视频编码组件模板输出的音视频流进行混流,以最终生成所述预设封装格式的多媒体流。

S220、将输入的多媒体流中的音频流,输入至所述音频编码组件实例进行封装,并输出至混流组件实例。

在本实施例的一个可选的实施方式中,将输入的多媒体流中的音频流,输入至所述音频编码组件实例进行封装,可以包括:

通过所述音频编码组件实例,获取设定大小(典型的,1kb(千字节)或者2kb等)的音频流,在预存的音频编码格式集中获取与封装要求对应的音频编码格式对所述音频流进行封装。

其中,所述音频编码格式集预存在所述音频编码组件模板(实例)中,包括有至少两个音频编码格式等的编码算法以实现对输入的音频流进行相应音频编码格式的封装,典型的所述音频编码格式可以包括:MP3、WAV(Windows Media Audio,微软媒体音频)以及AAC(Advanced Audio Coding高级音频编码)等。

S230、将输入的多媒体流中的视频流,输入至所述视频编码组件实例进行封装,并输出至混流组件实例。

S240、通过所述混流组件实例,按照音频流和视频流中的时间戳,将音频流和视频流进行混流处理,形成具有预设封装格式的多媒体流。

在本实施例的一个可选的实施方式中,通过所述混流组件实例,按照音频流和视频流中的时间戳,将音频流和视频流进行混流处理,形成具有预设封装格式的多媒体流,可以包括:

通过所述混流组件实例,获取与预设封装格式对应的参数配置信息,根据所述参数配置信息创建相应的多媒体容器,并将混流处理的所述音频流和视频流写入所述多媒体容器中,形成具有预设封装格式的多媒体流。

进一步的,在所述混流组件模板中还可以包括有扩展接口,用于支持对至少一个新增封装格式的扩展。

S250、输出具有所述预设封装格式的多媒体流。

本发明实施例的技术方案通过将输入的多媒体流中的音频流,输入至所述音频编码组件实例进行封装,并输出至混流组件实例;将输入的多媒体流中的视频流,输入至所述视频编码组件实例进行封装,并输出至混流组件实例;通过所述混流组件实例,按照音频流和视频流中的时间戳,将音频流和视频流进行混流处理,形成具有预设封装格式的多媒体流,可以提高了现有的多媒体流处理方法的可扩展性,当增加新的封装格式或者多媒体流的数量时,仅需要对音频编码组件模板、视频编码组件模板和混流组件模板进行适应性配置即可,不需要另外开发数据的读写、管理接口等,减少了大量的系统逻辑,提高代码的稳定性,给程序瘦身,减少软件维护成本。

在图2b是一种应用于本发明实施例二中的多媒体流的处理方法的编码组件模板的结构示意图。如图2b所示,所述编码组件模板主体架构以记录引擎管理器(也可称为Record Engine Manager)为中心管理引擎,音频输入过滤器(也可称为Audio Input Filter),用于获取设定大小(典型的,1kb(千字节)或者2kb等)的音频流,音频编码过滤器(也可称为Audio Encode Filter)用于将在预存的音频编码格式集中获取与封装要求对应的音频编码格式对所述音频流进行封装,其中,所述音频输入过滤器以及音频编码过滤器共同构成音频编码组件模板;视频编码过滤器(也可称为Video Encode Filter)构成音频编码组件模板,用于输出设定视频编码格式的视频流。

混流过滤器(也可称为Muxer Filters),用于将输入的一个或者多个音视频流(在图2b中仅示出一个音视频输入)组合成一个单独的数据流(即:预设封装格式的多媒体流,或者多媒体文件),混流配置过滤器(也可称为Muxer Config Filters)用于存储音视频编码,和/或混流格式的参数配置信息,混流控制过滤器(也可称为Muxer Control Filter)用于控制整个流程的开始,结束等操作,同时支持设定数据库(典型的,sqllite数据库)的管理。其中,混流过滤器、混流配置过滤器以及混流控制过滤器共同构成混流组件模板。

可选的,所述记录引擎管理器是主体,用来控制所有的过滤器,主要有以下的功能:用来管理协调不同过滤器之间的状态改变,从而使记录引擎管理器中的所有的过滤器的状态的改变应该一致,将过滤器的消息通知返回给主程序。

过滤器是每个工作阶段,每个过滤器拥有唯一的身份标识号,每一个过滤器都一个其他的一个或者两个过滤器相连接。通过标识出一个过滤器的输入过滤器,和/或输出过滤器的身份标识,可以实现将多媒体流从一个过滤器传输至另一个过滤器,进而实现多媒体流在由过滤器组成的链表中流动。

一个过滤器可以有一个或者多个输入接口、以及一个或者多个输出接口,具体的接口数量取决于过滤器的功能。多媒体流在一个方向传播,即从音频编码过滤器,和/或视频编码过滤器流入混流过滤器。

一个过滤器在获取音视频流并进行相应处理后,通过其输出接口发送处理后的音视频流到该过滤器连接的下一个过滤器的输入接口。下一个过滤器进行相应处理后,发送到下一个过滤器,如此类推。最终各个过滤器实现将输入的音视频数据封装为预设封装格式的多媒体文件。

图2c是一种应用于本发明实施例二中的多媒体流的处理方法的混流过滤器的功能示意图,如图2c所示,所述混流过滤器的工作流程包括:

创建一路或者多路音频编码过滤器或者视频编码过滤器,以记录引擎管理器为时钟基准,将相匹配的音频编码过滤器以及视频编码过滤器输入的音频流以及视频流加上同步时间戳,同时,音频编码过滤器将音频流转换为预设的音频编码格式(例如:G711或者AAC)等。

相应的,通过音频编码过滤器输出的混流输入音频流以及通过视频编码过滤器输出的混流输入视频流被输入至混流过滤器中。

混流过滤器内部将音频流以及视频流送入优先级队列(也可称为Priority Queue)中,优先级队列将音视频流按帧时间戳重新排序,输出时间戳最小的帧数据;流控制器(也称为stream control)收到开始混流的消息后,读取优先级队列中的数据并以第一帧数据为时钟基准计算打包时间,并将音视频流分发到混流核心器中,混流核心器为所有多媒体容器的管理者,通过混流配置过滤器传送的配置参数,混流核心器创建对应的多媒体容器(例如,MP4容器),并将音视频流写入到所建立的容器中,并按照配置进行自动分片,同时支持动态的分片,保证了在对不同场景下录像需求。这样基本完成一个完整的工作流程。

扩展方面,混流核心器导出了扩展接口,如果想加入新的媒体容器(例如,AVI格式)的封装,在AVI库中实现扩展接口后,即可加入到混流核心器中,实现一个新的容器的扩展,同时支持流的方式输出,比如RTP等。

多路复用方面,只需要创建多个(音频编码过滤器与视频编码过滤器)的输入,系统内部自动同步创建相应的其他过滤器将其对应连接起来完成封装打包。

另外,需要说明的是:音频编码过滤器以及视频编码过滤器并非一定要成对创建,可允许仅输入视频流或者音频流进行封装。

实施例三

在图3中示出了本发明实施例三提供的一种多媒体流的处理装置的结构图。如图3所示,所述装置包括:编码组件实例获取模块310、多媒体流封装模块320以及多媒体流输出模块330。

编码组件实例获取模块310,用于根据封装要求确定多媒体流数量和预设封装格式,对相应封装格式的编码组件模板进行配置,以获得对应的编码组件实例。

多媒体流封装模块320,用于将输入的多媒体流,输入至所述编码组件实例进行所述预设封装格式的封装。

多媒体流输出模块330,用于输出具有所述预设封装格式的多媒体流。

本发明实施例根据封装要求确定多媒体流数量和预设封装格式,对相应封装格式的编码组件模板进行配置,以获得对应的编码组件实例;将输入的多媒体流,输入至所述编码组件实例进行所述预设封装格式的封装;输出具有所述预设封装格式的多媒体流,解决了现有的音视频混流打包的管理方式,只支持单路音视频流的处理或者仅支持对音视频流进行单一封装格式的处理逻辑,直接增添多路或多种格式的封装打包往往会使系统逻辑变得复杂的技术问题,实现了简单、高效将音视频流混流生成满足需求的多媒体文件的技术效果。

在上述各实施例的基础上,编码组件实例获取模块,进一步可以用于:

根据封装要求和预设封装格式,对相应封装格式的音频编码组件模板、视频编码组件模板和混流组件模板分别进行配置,以获得对应的音频编码组件实例、视频编码组件实例和混流组件实例;

相应的,多媒体流封装模块,可以包括:

音频流封装单元,用于将输入的多媒体流中的音频流,输入至所述音频编码组件实例进行封装,并输出至混流组件实例;

视频流封装单元,用于将输入的多媒体流中的视频流,输入至所述视频编码组件实例进行封装,并输出至混流组件实例;

混流单元,用于通过所述混流组件实例,按照音频流和视频流中的时间戳,将音频流和视频流进行混流处理,形成具有预设封装格式的多媒体流。

在上述各实施例的基础上,编码组件实例获取模块可以用于:

如果接收到的封装要求中确定待处理的多媒体流为多个,或者预设封装格式有多个,则根据多媒体流的数量和/或预设封装格式的数量,将多媒体流复制生成多路多媒体流,以分别进行处理。

在上述各实施例的基础上,所述编码组件模板中可以包括与封装格式对应的至少两个编码程序模板。

在上述各实施例的基础上,所述混流单元,具体可以用于:

通过所述混流组件实例,获取与预设封装格式对应的参数配置信息,根据所述参数配置信息创建相应的多媒体容器,并将混流处理的所述音频流和视频流写入所述多媒体容器中,形成具有预设封装格式的多媒体流。

在上述各实施例的基础上,所述音频流封装单元,可以用于:通过所述音频编码组件实例,获取设定大小的音频流,在预存的音频编码格式集中获取与封装要求对应的音频编码格式对所述音频流进行封装。

在上述各实施例的基础上,在所述混流组件模板中包括有扩展接口,可以用于支持对至少一个新增封装格式的扩展。

上述产品可执行本发明任意实施例所提供的方法,具备执行方法相应的功能模块和有益效果。

实施例四

在图4中示出了本发明实施例四提供的一种嵌入式设备的结构图。如图4所示,所述嵌入式设备包括:本发明任意实施例所述的多媒体流的处理装置410。

一般来说,嵌入式设备中可以运行的程序空间有限,无法引入大型的软件框架,现有技术中无法在嵌入式设备中实现多路多媒体流以及多种媒体容器来管理大量音视频文件或流的情况。在本实施例中,通过在嵌入式设备中引入本发明任意实施例所述的多媒体流的处理装置410,可以在有限的程序空间中,实现简单、高效的将多路音视频流混流生成满足需求的多路多媒体文件的技术效果,可维护性高、使用难度低以及可移植性好。

注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。

再多了解一些
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1