ffmpeg編譯與搭建筆記

1.使用h264編碼器進行ffmpeg編碼時,報:[h264_nvenc @ 0xf5eee0] Cannot load libcuda.so.1

該錯誤原因爲構建ffmpeg時,系統未有h264的編碼庫。此時,需要先構建並安裝x264,再重新構建並安裝ffmpeg。

以H264編解碼爲例,我們需要先安裝X264庫:

    (1)下載X264 :    Git clone http://git.videolan.org/git/x264.git

    (2)安裝X264: 

          sudo ./configure --enable-shared --disable-asm

          sudo make && make install

    然後重新安裝FFMPEG:

        sudo  ./configure --enable-shared --disable-yasm --enable-libx264  --enable-gpl  --prefix=/usr/local/ffmpeg

        sudo make && make install


2.error while loading shared libraries: libavdevice.so.52 等錯誤

原因是,bin文件夾中,可執行程序未正確連接庫。

修改/etc/ld.so.conf 在最後一行加上/usr/local/lib (ffmpeg庫的位置,默認爲此路徑)

ldconfig -v 

並修改 /usr/local/ffmpeg/lib目錄下的文件權限爲777

注:有的時候,可能install的部分庫會生成在源碼文件夾中對應的lib文件夾中。複製到/usr/local/lib後,請執行一次Idconfig -v,否則程序無法自動連接後來拷貝進來的庫。


3.xxxx.so: relocation R_X86_64_32 against `xxxx' can not be used when making a shared object; recompile with -fPIC

這個錯誤通過百度或者谷歌,可以查到很多答案是讓大家重新發布so庫,添加-fPIC的指令。這裏給出一些比較典型的解決方案(可能管用也可能不管用)

編譯器提示:recompile with -fPIC
兩種方式:
(1)在makefile文件裏的CFLAGS里加上 -fPIC選項,這樣可以一勞永逸
(2)如果你的makefile很大,CFLAGS也不明確,那就在配置時手動加上,即:
$CFLAGS="-fPIC" ./configure ..............
如果這樣還不行,你需要試一下sudo
即:
$sudo   CFLAGS="-fPIC" ./configure ..............

Cmake下添加 -fPIC:
打開cmakelist.txt,增加以下語句:
SET(CMAKE_C_FLAGS  "-O2 -pipe -fPIC -Wall -fmessage-length=0")  
SET(CMAKE_CXX_FLAGS "-O2 -pipe -fPIC -Wall -fmessage-length=0") 

其實還有一個更簡單的解決方法。

重新發布so庫(出現該問題的庫),添加--enable-shared選項,然後make && make install,覆蓋原本的庫。

以share形式發佈的庫,將不會再報這個錯誤。



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