Debian FFMPEG vs NVIDIA Encoder

 ( sudosu | 2017. szeptember 1., péntek - 14:41 )

Sziasztok!

Van egy Debian-os szerver, amelyen flottul megy az FFMPEG CPU transzkódolás. Most beszereztünk egy Geforce GTX1050 TI-t hogy megkezdjük a VGA-val is a transzkódolást.
Úgy láttam a Debian nem támogatott disztró (A CUDA Toolkit által) , viszont mégis sikerült felhegesztenem rá a CUDA Toolkitet egy délutános kutatás után.

Lebuildeltem az FFMPEG-et a következő paraméterekkel:

PATH="$HOME/bin:$PATH" PKG_CONFIG_PATH="$HOME/ffmpeg_build/lib/pkgconfig" ./configure --prefix="$HOME/ffmpeg_build" --pkg-config-flags="--static" --extra-cflags="-I$HOME/ffmpeg_build/include" --extra-ldflags="-L$HOME/ffmpeg_build/lib" --bindir="$HOME/bin" --enable-gpl --enable-libass --enable-libfdk-aac --enable-libfreetype --enable-libmp3lame --enable-libopus --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 --enable-nonfree --enable-cuda --enable-cuvid --enable-nvenc --enable-nonfree --enable-libnpp --extra-cflags=-I/usr/local/cuda/include --extra-ldflags=-L/usr/local/cuda/lib64

A build sikeres volt, semmi probléma, viszont amikor elindítom az FFMPEG-et a következő hibát dobja fel:

ffmpeg: error while loading shared libraries: libnppig.so.8.0: cannot open shared object file: No such file or directory

A libnppig.so.8.0 fájl a buildeléskor megadott /usr/local/cuda/lib64 könyvtárban megtalálható.

Otthon van egy PC-m amire raktam egy Ubuntu szerver, ugyanígy lett buildelve az FFMPEG és azzal működik.
Mivel a Debian szerveren olyan konfigurációk/adatok vannak amelyeket elég körülményes lenne mozgatni/újracsinálni, ezért egyelőre szeretnénk megoldani ezen a szerveren a dolgot. Ha esetleg nem sikerülne akkor el fogunk gondolkozni egy Distro váltáson.

Hozzászólás megjelenítési lehetőségek

A választott hozzászólás megjelenítési mód a „Beállítás” gombbal rögzíthető.

A kérdést szerencsére kihagytam, de gondolom logikus hogy ilyenkor mit tudok tenni?
Kicsit frusztrált vagyok a dolog miatt :D.

A /usr/local/cuda/lib64 benne van a libek keresési utjában? ldconfig?

Én ránéznék strace-szel, hogy tényleg ott keresi-e.


<3 openSUSE, Ubuntu, KDE <3

[dupla]

Ilyenkor kifejezetten hasznos dolog ha a linkeléskor a szájába rágod hol is van a keresett lib:

"... -Wl,-rpath="/usr/local/cuda/lib64",--enable-new-dtags ..."

Ezután még az ldconfig parancsot sem kell használni.

Köszönöm a segítséget, így már működik rendesen.

Szívesen. :-)
Most van egy újabb megoldás amit érdemes felvenned a linkelés alapértelmezett paraméterei közé más hasonló fejlesztések esetében is.

-------------------------

Annyi még hozzá kívánkozik hogy tapasztalatom szerint az Ubuntu 14.04-en lévő gcc - gcc version 4.8.4 (Ubuntu 4.8.4-2ubuntu1~14.04.3) - a linkeléskor nem képes hibátlanul beírni a binárisba a lib-ek elérési útját. Azt tapasztaltam hogy ha több lib volt ugyanazon az útvonalon akkor a kész binárist az ldd paranccsal visszaellenőrizve csak az első egy-két lib látszott a helyes útvonallal, a többi nem. Ha a clang - Ubuntu clang version 3.4-1ubuntu3 (tags/RELEASE_34/final) (based on LLVM 3.4) - volt a fordító és a linker akkor az ldd parancs mindenütt a helyes értéket mutatta.

vagy futtatás előtt beállítod az LD_LIBRARY_PATH env változót a mappára és akkor megtalálja.