linux 中mediainfo源码编译安装及移植

来源:互联网 发布:中国移动软件 编辑:程序博客网 时间:2024/05/01 16:36

一.解压

linux下用7za –x *****.7z解压缩mediainfo源码(mediainfo_0.7.35_AllInclusive.7z)

 

二.编译

Mediainfo 依赖libzlibzen以及libmediainfo

编译顺序为: libz, libzen, libmediainfo

(1)编译libz

  zlib/config

 zlib/make

 zlib/make install

 

执行完上面的命令,会在/usr/local/lib/目录 下生成 libz.a

                    /usr/local/include目录 下生成zlib.h(这个文件移植没用到)

(2)编译libzen

根据ZenLib/Project/GNU/libzen_contrib.spec文件中的描述进行编译,不是所有的命令都要执行,我主要执行了以下命令

ZenLib/Source/Doc下执行

 doxygen Doxyfile

(这个命令需要先安装doxygen ,ubuntu sudo apt-get install doxygen

ZenLib/Project/GNU/Library目录下执行:

chmod +x autogen

./autogen

     (这个命令需要安装automake libtool ,在ubuntu sudo apt-get install automake

sudo apt-get install libtool)

configure  --enable-shared

 

make clean

make

makeinstall

 

执行完上面的命令,会在/usr/local/lib/目录 下生成libzen.a   libzen.la    libzen.so   libzen.so.0   libzen.so.0.0  5个函数库

 

(3)编译libmediainfo

根据MediaInfoLib/Project/GNU/libmediainfo.spec文件中的描述进行编译,不是所有的命令都要执行,我主要执行了以下命令

MediaInfoLib/Source/Doc/ 下执行

doxygen Doxyfile

MediaInfoLib/Project/GNU/Library下执行

chmod +x autogen

./autogen

configure --enable-shared

make clean

make

makeinstall

执行完上面的命令,会在/usr/local/lib/目录 下生成 libmediainfo.a libmediainfo.la两个函数库

 

(4)编译mediainfo

Mediainfo有两个版本:CLI命令行版本  GUI图形界面版本, 项目中只需要命令行版本的,所以这里只选择CLI目录下的进行编译

MediaInfo/Project/GNU/mediainfo.spec文档中描述的有关CLI的部分进行编译

MediaInfo/Project/GNU/CLI下执行

    chmod +x autogen

./autogen

Configure

make

makeinstall

执行完上面的命令,会在/usr/local/bin目录 下生成mediainfo可执行文件

 

(5)到此为此,所有的编译和安装都做完了,但还需要如下配置

   export  LD_LIBRARY_PATH=/usr/local/lib (因为linux默认的函数库目录为/lib /usr/lib)

   export  PATH=$PATH:/usr/local/bin

6)运行mediainfo命令的格式问题:

       mediainfo “—Inform=Video;%Duration%” a.flv 

要在命令的格式部分加入””号,才能正确输出(window中可加可以不加)

mediainfo  不能用大写“MediaInfo”,应该用小写。但在window中则可以。

 

在java运行Runtime.exec()方法的格式为  mediainfo —Inform=Video;%Duration% a.flv  不要加引号

 

三.移植

因为编译需要一些工具如Doxygen, automake , libtool ,在ubuntuapt-get安装很方便,所以选择在ubuntu中编译源码后,再种植到别的系统(suse)中运行。

 

(1)       将函数库放到/usr/lib /lib (不需要配置)

或者放到/usr/local/lib 中,这就需要到上面(5)的配置

  (2 )  检查下函数库的权限,修改为777(注意,这里必须是777,否则Runtime.exec()时没有权限)

(3)   将可执行文件mediainfo放到/usr/local/bin中,并做上面(5)中的配置

(4)  还有一个可能出现的问题

     libzen.so.0依赖/usr/lib/libstdc++.so.6 要求版本GLIBCXX-3.4.9或以上

    如果你的系统上这个函数库的版本低了,就将libstdc++.so.6.0.13拷到/usr/lib下,并执行命令 ln –fs libstdc++.so.6.0.13  libstdc++.so.6 libstdc++.so.6链接到新的函数库

   

  

原创粉丝点击