专利名称:多媒体工程及对第三方库文件进行编译的系统和方法
技术领域:
本发明涉及多々某体^支术领域,尤其涉及一种FFmpeg工程的编i奪系统和方 法,以及一种对第三方库文件进行编译的系统和方法。
背景技术:
FFmpeg是一个在Linux下开发的开源免费项目,它提供了录制、转换以 及流化音、视频的完整解决方案,支持绝大部分常见的多媒体文件格式,例如 支持常见的以mpeg、 AVI格式封装的DIVX文件或Xvid文件等等。由于FFmpeg 是基于Linux开发的,其源代码与Windows下最常见的Visual Studio提供的 C/C+十编译器并不兼容,因此想要使用FFmpeg,最先要解决的问题就是在 Windows下配置一个类似Linux的编译环境。在现有技术中,这一编译环境是 采用MSys + MinGW系统来实现的,其中MSys的全称是Minimalist GNU System on Windows,是Windows下最优秀的GNU环境;而MinGW的全称是 Minimalist GNU for Windows,是运行在Windows平台上的一种GCC(GNU Compiler C)编译器,MSys + MinGW系统就是指利用编码器MinGW在编译环 境MSys下进行编译。MSys + MinGW系统的配置可以通过在Windows下的安装和整合来实现, 而如果要在该系统中使用FFmpeg,还需要对FFmpeg进行编译,重新生成 FFmpeg工程。FFmpeg工程的生成是通过整合FFmpeg源文件、FFmpeg本身库文件和第 三方库文件来实现的。其中FFmpeg源文件包含FFmpeg源代码和一些控制代 码;FFmpeg本身库文件包含编码方式部分、格式部分及控制部分,该三个部 分被对应编译成三个库,这三个库可以在重新生成FFmpeg工程时被调用;而第三方库文件可以是任意支持FFmpeg的库文件,可以是静态库文件也可以是 动态库文件,在链接第三方库文件和FFmpeg本身库文件时,为了避免修改 FFmpeg中的源代码,通常都会对第三方库文件进行编译,生成第三方动态链 4妄库文件。重新生成FFmpeg工程的过程可以简单表示为如图1所示首先配置编译 环境(步骤10 );然后将第三方库文件编译成第三方动态链接库文件(步骤20 ); 再进行链接第三方动态《连接库文件和FFmpeg本身库文件,生成信息库文件 Libraryl (步骤30);最后整合信息库文件Libraryl和FFmpeg源文件,生成 FFmpeg工程(步骤40 )。在上述过程中,由于FFmpeg源文件中的FFmpeg源代码是存放在一个免 费的、开放源码的版本控制系统(SVN, Subversion)中的,因此,只能采用命 令行的操作对FFmpeg源文件进行访问,而命令行的操作方式较为复杂,这使 得习惯在集成开发环境(IDE, Integrated Development Environment)下工作的 人员难于上手;此外,在此过程中,由于对第三方库文件只是进行了简单的编 译,而没有提出调试的方法,因此导致整合了第三方库文件在内的FFmpeg工 程无法实现完全调试和编译,从而操作人员只能从FFmpeg工程海量的源代码 中理解工程的工作原理,而不能实现对FFmpeg源代码的实时跟踪。发明内容本发明提供了一种FFmpeg工程的编译系统和方法,用以解决现有技术中 编译方案采用全命令行方式而难于上手的问题。本发明提供了 一种对第三方库文件进行编译的系统和方法,用以解决现有 技术中只能对第三方库文件进行编译,而无法对其进行调试的问题。为此,本发明采用如下方案一种FFmpeg工程的编译系统,包括第三方库文件编译模块,用于在支 持FFmpeg的编译环境下,对第三方库文件进行编译,生成对应的第三方动态链接库文件;链接模块,用于将FFmpeg本身库文件和第三方库文件编译模块 生成的第三方动态链接库文件链接,生成包含有第三方动态链接库文件信息和 FFmpeg本身库文件信息的信息库文件;图形化编译平台模块,用于在预设的 图形化编译环境下,将FFmpeg源文件和链接模块生成的信息库文件中的 FFmpeg本身库文件信息编译成可执行文件;将编译生成的可执行文件及链接 模块生成的信息库文件中的第三方动态链接库文件信息展开,得到FFmpeg源 文件、FFmpeg本身库文件及第三方动态链接库文件各自对应的编译前源码。
其中所述的编译系统还包括调试信息接收模块,用于在对第三方库文件 进行编译前,接收用户输入的用于调试第三方库文件的调试信息;调试信息加 入模块,用于将调试信息接收模块接收到的用于调试第三方库文件的调试信息 加入到编译前的第三方库文件中。
一种FFmpeg工程的编译方法,包括在支持FFmpeg的编译环境下,将 第三方库文件编i奪成为第三方动态链接库文件;链4妄第三方动态链接库文件和 FFmpeg本身库文件,生成包含有第三方动态链接库文件信息和FFmpeg本身 库文件信息的信息库文件;在预设的图形化编译环境下,将FFmpeg源文件和 信息库文件中的FFmpeg本身库文件信息编i奪成可执行文件;将编译生成的可 执行文件及信息库文件中的第三方动态链接库文件信息展开,得到FFmpeg源 文件、FFmpeg本身库文件及第三方动态链接库文件各自对应的编译前源码。
其中所述的在将第三方库文件编译成为第三方动态链接库文件之前,还包 括步骤接收用户输入的用于调试第三方库文件的调试信息;将接收到的用于 调试第三方库文件的调试信息加入到第三方库文件中。
一种对第三方库文件进行编译的系统,包括调试信息接收模块,用于接 收用户输入的用于调试第三方库文件的调试信息;调试信息加入模块,用于将 调试信息接收模块接收到的用于调试第三方库文件的调试信息加入到第三方 库文件中。
一种对第三方库文件进行编译的方法,包括接收用户输入的用于调试第三方库文件的调试信息;将接收到的用于调试第三方库文件的调试信息加入到 第三方库文件中。
本发明对FFmpeg工程的编译方案采用在图形化的编译环境下,对FFmpeg 工程进行编译,从而可以避免现有技术中对FFmpeg工程的编译采用全命令行 方式而难于上手的弊端,使得对FFmpeg工程的编译大大简化,易于上手。
本发明对第三方库文件进行编译的方案通过在第三方库文件中加入调试 信息的方法,使第三方库文件实现可调试,从而使操作人员在对FFmpeg工程 进行重建的过程中,能实现源代码的实时跟踪。
图1为现有技术中生成FFmpeg工程的流程图2为本发明方案中提供的一种FFmpeg工程编译系统组成结构示意图; 图3为本发明方案中提供的图形化编译平台模块的组成结构示意图; 图4为本发明方案中提供的一种FFmpeg工程编译方法流程图; 图5为本发明方案中提供的又一种FFmpeg工程编译系统组成结构示意
图6为本发明方案中提供的又一种FFmpeg工程编译方法流程图。
具体实施例方式
本发明实施例首先提出 一种FFmpeg工程的编-泽方案,可以实现对FFmpeg 工程的图形化编译,从而解决现有技术中对FFmpeg工程的编译方案采用全命 令行方式而难于上手的问题。
如图2所示,为本发明实施例提出的一种FFmpeg工程编译系统的组成结 构示意图。该系统包括三个模块第三方库文件编译模块100、链接模块200 以及图形化编译平台模块300。其中各个组成部分的具体作用如下
第三方库文件编译模块100,用于在预设的支持FFmpeg的编译环境下,对第三方库文件进行编译,生成对应的第三方动态链接库文件;
链接模块200,用于将FFmpeg本身库文件和由第三方库文件编译模块100 生成的第三方动态链接库文件进行链接,生成包含有第三方动态链接库文件信 息和FFmpeg本身库文件信息的信息库文件;
图形化编译平台模块300,用于在预设的图形化编译环境下,将FFmpeg 源文件和由《连4妻才莫块200生成的信息库文件中的FFmpeg本身库文件信息编i奪 成可执行文件,以及将编译生成的可执行文件及由链接模块200生成的信息库 文件中的第三方动态链接库文件信息展开,得到FFmpeg源文件、FFmpeg本 身库文件及第三方动态链接库文件各自对应的编译前源码。
基于图形化编译平台模块300的具体工作原理,本发明实施例提出的图形 化编译平台模块300的具体组成结构如图3所示,包括
编译子模块301,用于在预设的图形化编译环境下,将FFmpeg源文件和 由链接模块200生成的信息库文件中的FFmpeg本身库文件信息编译成可执行 文件;
展开子模块302,用于将编译子模块301编译生成的可执行文件及由链接 模块200生成的信息库文件中的第三方动态链接库文件信息展开,得到FFmpeg 源文件、FFmpeg本身库文件及第三方动态链接库文件各自对应的编译前源码。
相应的,本发明实施例还提出了一种FFmpeg工程编译方法,其具体实现 流程如图4所示,该方法的具体实现过程如下
步骤41,在预设的支持FFmpeg的编译环境下,对第三方库文件进行编译, 生成对应的第三方动态4连4妄库文件;
步骤42 ,链接上述生成的第三方动态链接库文件和FFmpeg本身库文件, 生成包含有第三方动态链接库文件信息和FFmpeg本身库文件信息的信息库文 件Library2;
步骤43,在预设的图形化编译环境下,将FFmpeg源文件和上述生成的信 息库文件Library2中的FFmpeg本身库文件信息编译成可执行文件;步骤44,将上述编译生成的可执行文件及信息库文件Library2中的第三方 动态链接库文件信息展开,得到FFmpeg源文件、FFmpeg本身库文件及第三方 动态链接库文件各自对应的编译前源码。
再次,本发明实施例提出了另一种FFmpeg工程的编译方案,不仅可以实 现对FFmpeg工程的图形化编i奪,还同时能实现对FFmpeg工程的调试。
如图5所示,为本发明实施例提出的又一种FFmpeg工程编译系统的组成 结构示意图。该系统包括调试信息接收模块1000,调试信息加入模块2000, 第三方库文件编译模块3000、链接模块4000以及图形化编译平台模块5000。 其中各个组成部分的具体作用如下
调试信息接收模块1000,用于接收用户输入的用于调试第三方库文件的调 试信息;
调试信息加入模块2000,用于在预设的支持FFmpeg的编译环境下,将调 试信息接收模块接收到的用于调试第三方库文件的调试信息加入到第三方库 文件中,生成带有可调试信息的第三方库文件;
第三方库文件编译模块3000,用于对调试信息加入模块2000生成的带有 可调试信息的第三方库文件进行编译,生成对应的第三方动态链接库文件;
链接模块4000,用于将第三方库文件编译模块3000生成的第三方动态链 接库文件与FFmpeg本身库文件进行链接,生成包含有第三方动态链接库文件 信息和FFmpeg本身库文件信息的信息库文件;
图形化编译平台模块5000,用于在预设的图形化编译环境下,将FFmpeg 源文件和由链接模块4000生成的信息库文件中的FFmpeg本身库文件信息编 译成可执行文件,以及将编译生成的可执行文件及由链接模块4000生成的信 息库文件中的第三方动态链接库文件信息展开,得到FFmpeg源文件、FFmpeg 本身库文件及第三方动态链接库文件各自对应的编译前源码。
其中,调试信息加入模块2000将用于调试第三方库文件的调试信息加入 到第三方库文件中的方式是,将用于调试第三方库文件的调试信息写入到第三方库文件中,并且,将用于调试第三方库文件的调试信息写入到第三方库文件
中的方式包括但不限于为 写命令行的方式; 写脚本的方式。
基于图形化编译平台模块5000的具体工作原理,本发明实施例提出的图 形化编译平台模块5000的具体组成结构具体包括
编译子模块,用于在预设的图形化编译环境下,将FFmpeg源文件和由链 接模块4000生成的信息库文件中的FFmpeg本身库文件信息编译成可执行文 件;
展开子模块,用于将编译子模块编译生成的可执行文件和由链接模块4000 生成的信息库文件中的第三方动态链接库文件信息展开,得到FFmpeg源文件、 FFmpeg本身库文件及第三方动态链接库文件各自对应的编译前源码。
相应的,本发明实施例还提出了另一种FFmpeg工程编译方法,如图6所 示,为本发明实施例才是出的又一种FFmpeg工程编译方法流程图。该方法的具 体实现过程如下
步骤601,接收用户输入的用于调试第三方库文件的调试信息;
步骤602,在预设的支持FFmpeg的编译环境下,将接收到的用于调试第 三方库文件的调试信息加入到第三方库文件中;
步骤603,将加入了调试信息的第三方库文件编译成为第三方动态链接库 文件;
步骤604,链接上述生成的第三方动态链接库文件和FFmpeg本身库文件, 生成信息库文件Library3;
步骤605,在预设的图形化编译环境下,将FFmpeg源文件和信息库文件 Library3中的FFmpeg本身库文件信息编译成可执行文件;
步骤606,将上述编译生成的可执行文件及信息库文件Library3中的第三方 动态链接库文件信息展开,得到FFmpeg源文件、FFmpeg本身库文件及第三方动态链4妄库文件各自对应的编i奪前源码。
其中,将调试信息加入到第三方库文件中的方式是将调试信息写入到第三
方库文件中,并且将调试信息写入到第三方库文件中的方式包括但不限于为 写命令行的方式; 写脚本的方式。
本发明实施例还提出了一种第三方库文件的编译方法,通过在第三方库文 件中加入调试信息,实现第三方库文件的可调试。
本发明实施例提出的对第三方库文件进行编译的方法包括步骤
接收用户输入的用于调试第三方库文件的调试信息;
将接收到的用于调试第三方库文件的调试信息加入到第三方库文件中。
其中,将接收到的用于调试第三方库文件的调试信息加入到第三方库文件 中的方式是将接收到的用于调试第三方库文件的调试信息写入到第三方库文 件中,并且将接收到的用于调试第三方库文件的调试信息写入到第三方库文件 中的方式包括但不限于为
写命令行的方式;写脚本的方式。
相应的,本发明实施例还提出了一种对第三方库文件进行编译的系统,包
括
调试信息接收^^莫块,用于接收用户输入的用于调试第三方库文件的调试信
自
调试信息加入模块,用于将调试信息接收模块接收到的用于调试第三方库 文件的调试信息加入到第三方库文件中。
其中,将用于调试第三方库文件的调试信息加入到第三方库文件中的方式
是将用于调试第三方库文件的调试信息写入到第三方库文件中,并且将用于 调试第三方库文件的调试信息写入到第三方库文件中的方式包括但不限于为 写命令行的方式;写脚本的方式。以上所述,仅为本发明较佳的具体实施方式
,但本发明的保护范围并不局 限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易 想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护 范围应该以权利要求书的保护范围为准。
权利要求
1、一种FFmpeg工程的编译系统,其特征在于,包括第三方库文件编译模块,用于在支持FFmpeg的编译环境下,对第三方库文件进行编译,生成对应的第三方动态链接库文件;链接模块,用于将FFmpeg本身库文件和第三方库文件编译模块生成的第三方动态链接库文件链接,生成包含有第三方动态链接库文件信息和FFmpeg本身库文件信息的信息库文件;图形化编译平台模块,用于在预设的图形化编译环境下,将FFmpeg源文件和链接模块生成的信息库文件中的FFmpeg本身库文件信息编译成可执行文件;将编译生成的可执行文件及链接模块生成的信息库文件中的第三方动态链接库文件信息展开,得到FFmpeg源文件、FFmpeg本身库文件及第三方动态链接库文件各自对应的编译前源码。
2、 如权利要求l所述的系统,其特征在于,还包括 调试信息接收模块,用于在对第三方库文件进行编译前,接收用户输入的用于调试第三方库文件的调试信息;调试信息加入模块,用于将调试信息接收模块接收到的用于调试第三方库 文件的调试信息加入到编-泽前的第三方库文件中。
3、 如权利要求1所述的系统,其特征在于,所述的图形化编译平台模块 具体包括编译子模块,用于在预设的图形化编译环境下,将FFmpeg源文件以及链 接模块生成的信息库文件中的FFmpeg本身库文件信息编译成可执行文件;展开子模块,用于将编译子模块编译生成的可执行文件及链接模块生成的 信息库文件中的第三方动态链接库文件信息展开,得到FFmpeg源文件、 FFmpeg本身库文件及第三方动态链接库文件各自对应的编译前源码。
4、 如权利要求2所述的系统,其特征在于,所述调试信息加入模块通过 写命令行方式、或通过写脚本方式将用于调试第三方库文件的调试信息加入到第三方库文件中。
5、 一种FFmpeg工程的编译方法,其特征在于,包括 在支持FFmpeg的编译环境下,将第三方库文件编译成为第三方动态链接库文件;链接第三方动态链接库文件和FFmpeg本身库文件,生成包含有第三方动 态链接库文件信息和FFmpeg本身库文件信息的信息库文件;在预设的图形化编译环境下,将FFmpeg源文件和信息库文件中的FFmpeg 本身库文件信息编译成可执行文件;将编译生成的可执行文件及信息库文件中的第三方动态链接库文件信息 展开,得到FFmpeg源文件、FFmpeg本身库文件及第三方动态链接库文件各自 对应的编译前源码。
6、 如权利要求5所述的方法,其特征在于,在将第三方库文件编译成为第 三方动态链接库文件之前,还包括步骤接收用户输入的用于调试第三方库文件的调试信息;将接收到的用于调试第三方库文件的调试信息加入到第三方库文件中。
7、 如权利要求6所述的方法,其特征在于,通过写命令行方式、或写脚 本方式将接收到的用于调试第三方库文件的调试信息加入到第三方库文件中。
8、 一种对第三方库文件进行编译的系统,其特征在于,包括 调试信息接收模块,用于接收用户输入的用于调试第三方库文件的调试信息;调试信息加入模块,用于将调试信息接收模块接收到的用于调试第三方库 文件的调试信息加入到第三方库文件中。
9、 如权利要求8所述的系统,其特征在于,所述调试信息加入模块通过 写命令行方式、或通过写脚本方式将用于调试第三方库文件的调试信息加入到 第三方库文件中。
10、 一种对第三方库文件进行编译的方法,其特征在于,包括接收用户输入的用于调试第三方库文件的调试信息;将接收到的用于调试第三方库文件的调试信息加入到第三方库文件中。
11、如权利要求10所述的方法,其特征在于,通过写命令行方式、或写脚本方式将接收到的用于调试第三方库文件的调试信息加入到第三方库文件中。
全文摘要
本发明公开了一种多媒体工程的编译系统,包括第三方库文件编译模块,对第三方库文件进行编译生成第三方动态链接库文件;链接模块,将FFmpeg本身库文件和第三方动态链接库文件链接,生成信息库文件;图形化编译平台模块,将FFmpeg源文件和生成的信息库文件中的FFmpeg本身库文件信息编译成可执行文件,再将可执行文件及信息库文件中的第三方动态链接库文件信息展开,得到FFmpeg源文件、FFmpeg本身库文件及第三方动态链接库文件各自对应的编译前源码。本发明还公开了对应的编译方法及对第三方库文件进行编译的系统和方法。本发明实现了对FFmpeg的图形化编译,解决了采用全命令行进行编译难以上手的问题。
文档编号G06F9/45GK101295263SQ20081011540
公开日2008年10月29日 申请日期2008年6月23日 优先权日2008年6月23日
发明者王成刚 申请人:北京中星微电子有限公司