若是rpm安裝了
下面使用源碼包安裝。linux
一.解壓c++
在linux下用7za –x *****.7z解壓縮mediainfo源碼(mediainfo_0.7.51_AllInclusive.7z)ubuntu
二.編譯ide
http://downloads.sourceforge.net/project/libpng/
下載
Mediainfo 依賴libz和libzen以及libmediainfospa
編譯順序爲: libz, libzen, libmediainfo.net
(1)編譯libz命令行
執行完上面的命令,會在/usr/local/lib/目錄 下生成 libz.a
在/usr/local/include目錄 下生成
(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 ,在ubuntu中apt-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連接到新的函數庫