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形式發佈的庫,將不會再報這個錯誤。