一种应用于数字家庭的媒体格式转换系统及方法

文档序号:7924071阅读:191来源:国知局
专利名称:一种应用于数字家庭的媒体格式转换系统及方法
技术领域
本发明属于数字家庭的多媒体格式转换领域。技术背景数字家庭标准IGRS (Intelligent Grouping and Resource Sharing)的 AV应用框架定义了 IGRS AV设备,其中包括媒体服务器和媒体播放器,媒体服 务器提供媒体内容的浏览和传输,媒体播放器负责媒体播放。媒体转码服务是 媒体服务器内容目录服务中的一个可选功能,用于在媒体播放器向媒体服务器 请求传输媒体文件时,实现不同媒体格式之间的实时转换,将待传输的媒体文 件实时转码成媒体播放器所支持并能够实时播放的某种媒体格式,整个转码过 程对用户来说是透明的。目前关于媒体转码服务中转码的实现, 一般的做法是在进行实际转码过程 时调用相应的转码函数库完成具体的媒体转码过程,但这种方法的缺点是只能 提供对特定的几种媒体格式的转码功能,支持的媒体格式数量有限,不利于系 统对媒体格式支持的扩展,不能做到灵活适应不同应用环境的需求。而且运行 媒体服务器软件的硬件平台本身所提供的转码能力会由于其集成的转码芯片的 不同而各有不同。所以,这样的设计方法不能灵活适应实际的需要。发明内容本发明的目的在于克服现有技术的不足,针对IGRS媒体服务器软件的媒体 转码服务设计并实现了一种具有可扩展性的、可配置的外部转码设计方案。另外本发明还提供了一种基于FIFO的方法,能够支持一边转码一边传输媒 体数据流一边播放的功能。为了实现发明目的,采用的技术方案如下一种应用于数字家庭的媒体格式转换系统,包括媒体服务器以及媒体播放 器,所述媒体服务器通过数字家庭网络与媒体播放器连接,还设置有独立的转 码器程序以负责具体的媒体格式转换过程,所述媒体服务器通过配置文件控制 媒体格式转码的调配,即针对不同格式的媒体转码要求调配适当的转码器程序。本发明设计了一种外部转码的方案,即将具体的媒体格式转码过程从媒体 服务器系统中分离出来,将其调配给适当的转码器程序进行处理。而媒体服务 器系统则专注于媒体转码任务的调配,针对不同格式的媒体内容调配适当的转 码器程序完成具体的媒体转码过程。通过设计配置文件,将有关媒体转码任务 调配的配置保存在配置文件中,实现媒体转码服务的可配置性,例如增加或删 除可以转码的媒体格式,增加或删除转码器程序。用到配置文件的地方有两处 (1)媒体服务器根据配置文件中的相关设置将媒体内容映射到发送给媒体播放 器的媒体内容列表中;(2)当媒体播放器请求媒体服务器传输需进行媒体转码 的媒体内容时,媒体服务器读取配置文件,根据配置文件中的相关设置,执行 一系列动作进行具体的媒体格式转码过程。通过这种设计,本发明可以适应不 同的应用场合和硬件平台对不同媒体格式的支持,而且可以通过配置灵活地调 用各种转码器程序来完成转码过程,还可以灵活增加或替换转码器程序,更加 容易随时适应不同的应用需要,支持更多的媒体格式。上述技术方案中,所述独立的转码器程序包括运行时采用与媒体服务器主 进程独立的转码子进程实现,需要转码时,媒体服务器创建子进程执行转码策略中指定的转码器程序,将具体的转码过程交给转码器子进程,而媒体服务器 主进程负责调配转码任务和读取转码输出。转码过程结束后,转码器子进程马 上退出。或者是所述转码器程序为独立的转码服务设备,所述媒体服务器通过 直接调用或远程调用该转码服务设备实现转码过程,此种结构下,转码服务设 备可作为第三方的服务设备,供媒体服务器调用。本发明所述配置文件包含有转码规则和转码策略,所述转码规则指明了对 哪种媒体格式进行转码,以及进行转码时所使用的转码策略,所述转码策略则 指定了将一种媒体格式转码成另一种媒体格式将需要调用哪个转码器程序,并 指定了运行该转码器程序时的命令行参数。所述媒体服务器还创建一个FIFO作为转码器程序的输入输出队列,由一个或多个转码器程序向FIFO队列的一端写入数据,而媒体服务器从FIFO队列的 另 一端读出转码输出的媒体数据。本发明的一种应用于数字家庭的媒体格式转换方法,包括如下步骤(1) 媒体内容的映射媒体服务器读取配置文件中的转码规则和转码策略,并在向媒体播放器发 送媒体内容列表时,将能够进行转码的媒体内容映射成多个不同媒体格式的媒体内容列表项,包括原始格式的和转码输出格式;(2) 转码任务的调配 媒体服务器收到媒体播放器的请求后,将根据该播放请求判断是否需要进行媒体转码,若需要则读取配置文件的转码策略,通过转码策略指定的转码器 程序完成具体的转码过程,而媒体服务器负责调配不同转码器程序的转码任务, 并读取转码输出传送给媒体播放器。所述步骤(1)的媒体服务器向媒体播放器发送的媒体内容列表中,其媒体内容列表项的URI参数包括了媒体对象ID和转码策略ID,媒体服务器根据转码 策略ID参数的有无来判断是原始格式还是转码输出格式,以决定是否进行转码。所述步骤(2)的媒体服务器创建一个FIFO作为转码器程序的转码输出, 利用FIFO,转码器程序进行媒体转码并把转码输出到FIFO,媒体服务器从FIFO 的另外一端读取转码输出的媒体数据并传输给媒体播放器,实现了一边转码一 边播放。本发明提供一种针对IGRS媒体服务器软件的媒体转码服务的可扩展性的、 可配置的媒体转码服务解决方案,该发明的特点是设计了媒体转码服务的配置 文件,将有关媒体转码任务调配的配置保存在配置文件中,实现媒体转码服务 的可配置性,例如增加或删除可以转码的媒体格式,增加或删除转码器程序。 从而使得IGRS媒体服务器软件灵活地调用各种不同的转码器程序来完成不同格 式的转码过程。另外本发明提供了一种基于FIFO的方法,能够支持一边转码一 边传输媒体数据流一边播放的功能。本发明采用独立的转码器程序专门进行特定媒体格式之间的转码过程,将 输入的媒体文件转码并保存成另外一种格式的媒体文件。对转码器程序的要求 是可以在命令行参数中设置待转码文件路径和转码输出文件路径。独立的转码器程序实现了外部转码,外部转码就是把具体转码过程交给作 为子程序运行的转码器程序。这样,就可以根据实际需要,例如基于转码芯片 硬件平台自行开发某种格式的转码器程序,或者直接利用已有的第三方转码器 程序。还可以编写转码脚本作为转码器程序,而在转码脚本中,可以通过管道 命令调用多个转码器程序实现转码,在转码脚本中还可以进行转码参数的设置。例如编写一个转码脚本调用开源转码器程序ogg 123和lame,以便将ogg格式 转码成mp3格式。本发明可以将配置文件以XML格式保存,在配置文件中可以设置转码规则, 以及可以针对每一种能转码的媒体格式设置转码策略。有了转码规则和转码策 略,于是媒体服务器可以针对不同格式的媒体内容调配适当的转码器程序完成 具体的媒体转码过程。通过修改配置文件就能灵活地增加、修改或删除转码规 则和转码策略,于是可以实现媒体转码服务的可配置性。转码规则指明了可以对哪种媒体格式进行转码,以及进行转码时所使用的 转码策略。转码规则在配置文件中的〈transcode〉标签项中设置,其中mimetype 属性表示可以进行转码的媒体格式;profile属性表示所使用的转码策略。示例 如下<transcode mimetype=〃audio/x-vorbis+ogg〃 profile =〃oggprof7>转码策略体现在配置文件中定义的〈profile〉标签项分节,每一个 〈profile〉标签项表示一种转码策略,转码策略指定了将一种媒体格式转码成另 一种媒体格式将需要调用哪个转码器程序,并指定了运行该转码器程序时的命 令行参数。转码规则所对应的转码策略oggprof的设置如下所示 <profile name=〃 oggprof 〃 ><mimetype>audio/x—wav〈/mimetype〉〈codec command="oggl23" arguments=〃-d wav -f %out c %in 7> 〈/profile>上述转码策略示例中,〈profile〉标签的name属性表示转码策略的名称,〈mimetype〉子标签表示转码的目标媒体格式,< codec〉子标签用于设置转码器 程序,其中command属性表示转码器程序名称,arguments属性表示调用该转码 器程序时的命令行参数,注意其中的y。in和Q/。out标记符,它们不属于命令行参 数的一部分,在媒体服务器中有特定的含义标记符。Mn将会被输入文件名所代 替,该文件就是需要进行转码的媒体文件;。/。out将会被用于转码输出的FIFO名 代替。


图l为本发明的实现示意图。
具体实施方式
下面结合附图对本发明做进一步的说明。本发明的转码系统包括几个主要模块HTTP服务器模块、虚拟目录文件IO 请求处理模块、转码任务调配模块,具体介绍如下(1) HTTP服务器模块在数字家庭标准IGRS中,媒体服务器和媒体播放器之间媒体内容数据的传 输采用IGRS以外的协议,因此称作媒体带外传输,对于媒体带外传输没有指定 特定的协议,在此本发明采用HTTP作为媒体带外传输的协议,为此,在媒体服 务器中必须实现内置HTTP服务器功能。HTTP服务器模块负责接收并处理媒体 播放器发送的HTTP-Get请求,并负责将读取到的媒体内容数据以HTTP协议方 式进行媒体带外传输,以发送给媒体播放器。(2) 虚拟目录文件10请求处理模块虚拟目录文件10请求处理模块负责接受HTTP服务器的文件10操作调用。 本模块的主要函数包括void * web_open(const char *0bjectURI, struct File—Info *info, enum OpenFileMode mode);int web一read(Void * f, char氺buf, size—t length) , Ref〈RequestHandler〉 create_request—handler(const char氺ObjectURI);函数web—open:当HTTP服务器需要打开一个文件时,该函数将被回调。 web—open调用create—request—handler函数,该函数根据请求返回合适的10 Handler。待打开文件由媒体内容的URI指定,分两种情况处理(l)如果URI 中只包括媒体对象ID (0bjectlD),代表待打开文件是普通文件,则交由用于处 理普通文件10请求的模块进行处理,返回FileIOHandler; (2)如果URI中的参 数中除了包括ObjectID,还包括转码策略ID,则代表待打开文件是以转码输出 格式呈现的媒体内容,需要媒体服务器进行媒体转码,所以要交由转码任务调 配模块进行处理,最终返回ProcessIOHandler。函数web—read: HTTP服务器回调该函数,对一个已经打开了的文件进行顺 序读取操作。web—read首先分析请求,然后调用合适的10 hanlder (FileIOHandler或ProcessI0Handler)的read函数,该read函数从文件或 转码输出缓冲区中读取length字节的数据并写入到输出缓冲中。(3)转码任务调配模块转码任务调配模块负责以下工作根据待转码的媒体内容的0bjectlD获取其对应的媒体文件的在文件系统中 的路径,判断媒体文件路径的正确性,包括是否存在、是否可读等; 根据转码策略ID获取转码策略的详细设置值; 创建一个临时FIFO,用于转码输出;创建子进程,执行转码策略中指定的转码器程序;创建用于读取FIFO的工0句柄ProcessIOHandler, ProcessIOHandler负责 FIF0的I0操作。媒体转码的流程如附图1所示,为IGRS媒体服务器的媒体转码控制流程, 假设媒体服务器上共享有一个Hv格式的视频文件,文件名是myvideo. flv。媒 体播放器只支持播放mpeg格式而不支持f lv格式。而媒体服务器具有媒体转码 服务,在配置文件中已经对flv格式设置了转码策略,转码策略中指定了转码 器软件是vlc,转码输出格式是mpeg。以下描述媒体转码交互流程(1) 媒体播放器向媒体服务器发送browse的IGRS请求数据包,要求浏览 媒体服务器上共享的媒体内容;(2) 媒体服务器响应媒体播放器的browse请求,以IGRS响应数据包形式 将媒体内容列表发送给媒体播放器,媒体内容列表中包括了关于每 -项媒体内 容的URI属性和媒体格式属性。视频文件myvideo.flv在媒体内容列表中对应 有两个列表项,其中一项的媒体格式为flv,其URI中内含了该文件在媒体服 务器媒体库中的媒体对象ID (ObjectID);另一项的媒体格式为mpeg,其URI 中除了包含该文件的媒体对象ID,还有转码策略ID (TranscodeID)。(3) 媒体播放器请求播放媒体内容列表中的媒体格式为mpeg的媒体内容, 于是发送HTTP-Get请求给媒体服务器,在HTTP-Get请求数据包中包含了待播 放媒体内容的URI;(4) 媒体服务器中的内建HTTP服务器接收到媒体播放器的HTTP-Get请求 数据包后对其进行解析和处理,HTTP服务器首先对URI调用文件操作open;(5) HTTP服务器对URI调用文件操作叩en,其实是回调虚拟目录文件10请求处理模块中的web—open函数,web—open函数负责分析URI中的参数,根据 参数的不同将调用不同模块的open接口如果URI中只包含了 ObjectID参数 而没有TranscodeID参数,则调用媒体文件10请求处理模块的open接口 ,该 接口将调用普通文件的open操作以打开OjbectID所对应的媒体服务器上的实 际的媒体文件;如果URI中包含了ObjectID参数和TranscodeID参数,则表明 需要进行媒体转码,将调用转码任务调配模块的open接口,该接口将进行以下 一系列操作(6)至(11);(6) 转码任务调配模块的open接口首先读取系统的媒体信息数据库,根 据0bjectlD获取其对应的媒体文件在文件系统中的路径;(7) 转码任务调配模块的open接口接着读取媒体转码的配置文件,获取 TranscodeID所对应的转码策略,转码策略中包括转码器程序的路径、命令行参 数s(8) 创建一个FIFO文件;(9) 用刚才得到的媒体文件路径和刚才创建的FIFO路径分别替换转码策 略中命令行参数的y。in和。/。out标记符,然后创建子进程,执行转码策略中指定 的转码器程序;(10) 转码器子进程开始进行媒体转码,将媒体文件作为转码输入,FIFO 作为转码输出;(11) 创建IO句柄,用该10句柄调用标准操作open打开FIFO,然后转码 任务调配模块的open接口返回10句柄,最终HTTP服务器的open文件操作成 功返回了IO句柄;(12) HTTP服务器调用10操作read,最终从FIFO中读取转码输出;(13) HTTP服务器将转码输出发送给媒体播放器,媒体播放器接收到媒体 内容数据后开始播放;此后,转码器程序以媒体服务器主进程的一个子进程的形式运行, 一边转码, 一边将转码输出写到FIFO中,同时媒体服务器主进程从FIFO读取转码输 出,发送给媒体播放器进行播放。
权利要求
1、一种应用于数字家庭的媒体格式转换系统,包括媒体服务器以及媒体播放器,所述媒体服务器通过数字家庭网络与媒体播放器连接,其特征在于还设置有独立的转码器程序以负责具体的媒体格式转换过程,所述媒体服务器通过配置文件控制媒体格式转码的调配,即针对不同格式的媒体转码要求调配适当的转码器程序。
2、 根据权利要求1所述的应用于数字家庭的媒体格式转换系统,其特征在于所述独立的转码器程序包括运行时采用与媒体服务器主进程独立的转码子进 程实现,或者是所述转码器程序为独立的转码服务设备,所述媒体服务器通过 直接调用或远程调用该转码服务设备实现转码过程。
3、 根据权利要求1或2所述的应用于数字家庭的媒体格式转换系统,其特 征在于所述配置文件包含有转码规则和转码策略,所述转码规则指明了对哪种 媒体格式进行转码,以及进行转码时所使用的转码策略,所述转码策略则指定 了将一种媒体格式转码成另一种媒体格式将需要调用哪个转码器程序,并指定 了运行该转码器程序时的命令行参数。
4、 根据权利要求3所述的应用于数字家庭的媒体格式转换系统,其特征在 于所述媒体服务器还创建一个FIFO作为转码器程序的输入输出队列,由一个或 多个转码器程序向FIFO队列的一端写入数据,而媒体服务器从FIFO队列的另 一端读出转码输出的媒体数据。
5、 一种采用权利要求4所述媒体格式转换系统的媒体格式转换方法,其特征在于包括如下步骤(l)媒体内容的映射媒体服务器读取配置文件中的转码规则和转码策略,并在向媒体播放器发 送媒体内容列表时,将能够进行转码的媒体内容映射成多个不同媒体格式的媒 体内容列表项,包括原始格式的和转码输出格式; (2)转码任务的调配媒体服务器收到媒体播放器的请求后,将根据该播放请求判断是否需要进 行媒体转码,若需要则读取配置文件的转码策略,通过转码策略指定的转码器 程序完成具体的转码过程,而媒体服务器负责调配不同转码器程序的转码任务, 并读取转码输出传送给媒体播放器。
6、 根据权利要求5所述的应用于数字家庭的媒体格式转换方法,其特征在于所述步骤(1)的媒体服务器向媒体播放器发送的媒体内容列表中,其媒体内容列表项的URI参数包括了媒体对象ID和转码策略ID,媒体服务器根据转码策 略ID参数的有无来判断是原始格式还是转码输出格式,以决定是否进行转码。
7、 根据权利要求5所述的应用于数字家庭的媒体格式转换方法,其特征在 于所述步骤(2)的媒体服务器创建一个FIFO作为转码器程序的转码输出,利 用FIFO,转码器程序进行媒体转码并把转码输出到FIFO,媒体服务器从FIFO 的另外一端读取转码输出的媒体数据并传输给媒体播放器,实现了一边转码一 边播放。
全文摘要
本发明提供了一种应用于数字家庭的媒体格式转换系统及方法,包括媒体服务器以及媒体播放器,所述媒体服务器通过数字家庭网络与媒体播放器连接,还设置有独立的转码器程序以负责具体的媒体格式转换过程,所述媒体服务器通过配置文件控制媒体格式转码的调配,即针对不同格式的媒体转码要求调配适当的转码器程序。本发明克服了现有技术的不足,针对IGRS媒体服务器软件的媒体转码服务设计并实现了一种具有可扩展性的、可配置的外部转码设计方案。另外还提供了一种基于FIFO的方法,能够支持一边转码一边传输媒体数据流一边播放的功能。
文档编号H04L29/06GK101404652SQ20081019906
公开日2009年4月8日 申请日期2008年10月10日 优先权日2008年10月10日
发明者刘发贵, 邝耀宗 申请人:华南理工大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1