linux下安裝mediainfo

如果rpm安裝了zlib,可以到mediainfo的站點下載相應的rpm包,安裝可能簡單些

下面使用源碼包安裝。

一.解壓

linux下用7za –x *****.7z解壓縮mediainfo源碼(mediainfo_0.7.51_AllInclusive.7z)

 

二.編譯

http://downloads.sourceforge.net/project/libpng/zlib/1.2.3/zlib-1.2.3.tar.gz?r=http%3A%2F%2Fwww.oschina.net%2Fp%2Fzlib&ts=1322643718&use_mirror=cdnetworks-kr-1

下載zlib-1.2.3.tar.gz

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鏈接到新的函數庫

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章