多媒体数据格式转换方法

文档序号:7886949阅读:1345来源:国知局
专利名称:多媒体数据格式转换方法
技术领域
本发明涉及多媒体处理技术领域,特别涉及一种多媒体数据格式转换方法。
背景技术
随着人民生活水平的不断提高,人们审美观越来越高。各种各样式的音视频格式和相关资源层出不穷,不断满足现代人的娱乐需求,但目前的播放平台很难覆盖全部格式的音视频文件格式,因此大量音视频格式转换的工具出现。同时人们对其转换方法的速度和转换后音视频的质量要求也越来越高。传统的音视频转换方法多采用单线程转换引擎,采用单线程链路循环。单线程转换引擎的方法具体实现是,获取源文件,预览并分析源文件,对源文件进行解复用,分解出相应的音频流和视频流以及字幕,分别对音频流和视频流解码,再进行编码,将源文件转换为目标文件格式并输出,整个过程是一个即串行的过程。在整个循环链路中,每一帧数据的流动都需要等待上一级操作处理后输出给下一级操作端进行处理,每一级操作端的工作触发都是基于上一级数据的输出传送。传统单线程转换引擎的方法对多核CPU的利用率较低,单核CPU的负荷较重,且冗余时间较长。无法根据用户计算机的能力进行智能判断,造成整体转换时间较长。由于是单线程运转操作,造成系统部分资源浪费,CPU利用率不高等缺点。且数据传输采用传统的“推”模式,整个链路的数据传输较慢,造成转换时间较长,转换速率较低。

发明内容
(一 )要解决的技术问题本发明要解决的技术问题是:如何使得音视频格式转换过程中缩短转换时间,提高转换效率。( 二 )技术方案为解决上述技术问题,本发明提供了一种多媒体数据格式转换方法,依次包括步骤:读取原多媒体文件、分离原多媒体文件的码流数据、解码、按待转换格式编码、将编码后的多媒体数据打包成目标转换文件,上述转换步骤中,下一步骤实时地获取上一步骤的输出数据,并发地完成格式转换。其中,每个所述转换步骤分别在独立的线程中执行。其中,前后两个转换步骤对应的线程之间分别共享一个缓存队列,上一步骤将处理的多媒体数据存入队列的队尾,下一步骤实时监测队列中的数据,并从队头读取多媒体数据。其中,若上一步骤检测到所述缓存队列已满,则停止向其中存储数据,直到所述缓存队列有新的存储空间,若下一步骤检测到所述缓存队列为空,则下一步骤对应的线程休眠,直到有新的数据将其唤醒。其中,所述解码的线程包括:音频解码线程、视频解码线程和/或字幕解码线程,所述编码的线程与解码的线程对应,包括:音频编码线程、视频编码线程和/或字幕编码线程。其中,所述音频解码线程、视频解码线程和/或字幕解码线程分别与所述分离原多媒体文件的码流数据的线程共享缓存队列,音频解码线程、视频解码线程和/或字幕解码线程分别与相应地编码线程共享缓存队列,所述音频编码线程、视频编码线程和/或字幕编码线程分别与所述将编码后的多媒体数据打包成目标转换文件的线程共享缓存队列。其中,在多核处理器中,所述转换步骤对应的不同的线程至少在两个核中进行处理。(三)有益效果与传统方法相比,本发明提出的多媒体数据格式转换方法中每一个步骤作为一个独立的线程,多个步骤之间并发执行,数据传输采用FIFO缓存机制共享,并采用“拉”模式进行数据调用,从而避免了传统方法中因等待数据造成的时间冗余以及计算机CPU的浪费;本发明的方法可以充分利用计算机的CPU和运算能力,智能化的选择工作链路,从本质上解决转换速度慢、转换时间长的问题。


图1是本发明实施例的一种多媒体数据格式转换方法流程图;图2是图1中每个线程模块示意图;图3是的两个线程共享FIFO缓存队列示意图。
具体实施例方式下面结合附图和实施例,对本发明的具体实施方式
作进一步详细描述。以下实施例用于说明本发明,但不用来限制本发明的范围。为了避免传统的串行转换执行效率低下的问题,本发明中采用并发地格式转换方式,即在整个转换过程中下一步骤实时地获取上一步骤的输出数据,并发地完成格式转换。为了便于理解和描述,将整个转换过程抽象成一个图(graph)结构,如图1所示,转换过程的每一个步骤抽象成不同的模块,简称为filter,一个filter是对一种编解码器或其它处理器的封装,如负责解码的decode filter,负责编码的encode filter,各个模块工作在不同的线程中,通过抽象结构pin进行通信和传输数据,如图1所示,encode filter抽象为一个单独的模块,主要负责对数据流进行编码,通过抽象结构的input pin和outputpin进行数据传输,即为编解码器的对外接口,input pin主要连接上一级filter上的output pin,而其output pin主要连接下一级filter上的input pin。不同的编解码器具有不同的 input pin 和 output pin。下面将介绍本发明中Graph的创建过程:如图2所述,当用户指定转码文件并配置相应的转码输出条件即profile后,创建相应的source filter,将source filter上的各个output pin按照用户的profile去搜索具有与该output_pin吻合的input pin的filter,即编解码格式相符的filter,并将该filter的这个input pin与该output pin连接起来,生成相应的output pin。通常该filter会是demux filter,这里以它为例,继续寻找demux filter上的output pin匹配的input pin的filter,并将这两个pin连接起来。以此类推逐层次链接各级filter形成最终的转码graph。Graph的运行过程如下:整个转码链路中会有图2中的各种filter,分别负责转码过程中各部分工作。Source filter:负责原始视频文件的读写。Demux filter:负责分离输入流中的各种码流数据,如视频流,字幕流,音频流。Video/Audio/Subtitle decode filter:负责视频 / 音频 / 字幕的解码。Video/Audio/Subtitle encode filter:负责视频 / 音频 / 字幕的编码。Mux filter:负责将输入的各种码流汇编并打包输出到目标转换文件。当转码graph运行时,这些filter各自工作在不同的线程中并发执行,它们之间通过相互连接的pin进行通信及数据传输。由于不同的filter处理数据的能力不同,通常上级的filter的输出数据在下一级来不及处理,反之亦然。在上下级的filter的pin之间引入了 FIFO的缓存机制,FIFO由固定数目的数据单元组成,这里称之为报文,报文由报
文头与数据组成,报文头中标明数组的属性及大小等信息,具体如下:
权利要求
1.一种多媒体数据格式转换方法,依次包括步骤:读取原多媒体文件、分离原多媒体文件的码流数据、解码、按待转换格式编码、将编码后的多媒体数据打包成目标转换文件,其特征在于,上述转换步骤中,下一步骤实时地获取上一步骤的输出数据,并发地完成格式转换。
2.如权利要求1所述的多媒体数据格式转换方法,其特征在于,每个所述转换步骤分别在独立的线程中执行。
3.如权利要求2所述的多媒体数据格式转换方法,其特征在于,前后两个转换步骤对应的线程之间分别共享一个缓存队列,上一步骤将处理的多媒体数据存入队列的队尾,下一步骤实时监测队列中的数据,并从队头读取多媒体数据。
4.如权利要求3所述的多媒体数据格式转换方法,其特征在于,若上一步骤检测到所述缓存队列已满,则停止向其中存储数据,直到所述缓存队列有新的存储空间,若下一步骤检测到所述缓存队列为空,则下一步骤对应的线程休眠,直到有新的数据将其唤醒。
5.如权利要求4所述的多媒体数据格式转换方法,其特征在于,所述解码的线程包括:音频解码线程、视频解码线程和/或字幕解码线程,所述编码的线程与解码的线程对应,包括:音频编码线程、视频编码线程和/或字幕编码线程。
6.如权利要求5所述的多媒体数据格式转换方法,其特征在于,所述音频解码线程、视频解码线程和/或字幕解码线程分别与所述分离原多媒体文件的码流数据的线程共享缓存队列,音频解码线程、视频解码线程和/或字幕解码线程分别与相应地编码线程共享缓存队列,所述音频编码线程、视频编码线程和/或字幕编码线程分别与所述将编码后的多媒体数据打包成目标转换文件的线程共享缓存队列。
7.如权利要求2 6中任一项所述的多媒体数据格式转换方法,其特征在于,在多核处理器中,所述转换步骤对应的不同的线程至少在两个核中进行处理。
全文摘要
本发明公开了一种多媒体数据格式转换方法,涉及多媒体处理技术领域,该方法依次包括步骤读取原多媒体文件、分离原多媒体文件的码流数据、解码、按待转换格式编码、将编码后的多媒体数据打包成目标转换文件,上述转换步骤中,下一步骤实时地获取上一步骤的输出数据,并发地完成格式转换。本发明的方法缩短了音视频格式转换过程中的转换时间,提高转换效率。
文档编号H04N7/01GK103200380SQ20121000640
公开日2013年7月10日 申请日期2012年1月10日 优先权日2012年1月10日
发明者张彦丁 申请人:北京世纪高蓝科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1