nvenc에서 ffmpeg를 사용하려고 할 때 CUDA 라이브러리를 로드하지 못했습니다.

nvenc에서 ffmpeg를 사용하려고 할 때 CUDA 라이브러리를 로드하지 못했습니다.

Ubuntu 14.04에서는 지침 가이드를 따르고 있습니다.NVIDIA 사이트에서GPU 인코딩을 사용하여 ffmpeg를 실행하려면

(내가 알 수 있는 한) 지침을 따르고 NVIDIA SDK 로컬 .dep를 설치하고 패키지 cudanvidia-352패키지를 설치한 다음 ffmpeg를 컴파일했습니다.

그러나 다음 호출을 시도할 때:

ffmpeg -i ~/test/StreamInstructions.mp4 -vcodec nvenc -b:v 5M -f avi output.mp4

ffmpeg가 나에게 알려줍니다 Failed loading CUDA library.

Google을 검색하면 이 오류 메시지의 소스 코드가 다음 코드 줄에서 발생한다는 것을 알 수 있습니다 dl_fn->cuda_lib = dlopen("libcuda.so", RTLD_LAZY);.

이것은 (지난 10년 동안 C++나 Linux를 많이 해본 적이 없는) 나에게 libcuda.so 공유 라이브러리를 찾을 수 없다는 뜻입니다.

파일 시스템을 검색해 보니 libcuda.so다음 위치에 있습니다.

/usr/local/cuda-7.5/doc/man/man7/libcuda.so.7
/usr/local/cuda-7.5/targets/x86_64-linux/lib/stubs/libcuda.so
/usr/lib/i386-linux-gnu/libcuda.so.1
/usr/lib/i386-linux-gnu/libcuda.so
/usr/lib/i386-linux-gnu/libcuda.so.352.63
/usr/lib/x86_64-linux-gnu/libcuda.so.1
/usr/lib/x86_64-linux-gnu/libcuda.so.352.63

검색에서 이 문제를 해결하는 데 도움이 되는 다른 결과를 찾을 수 없으며 이로 인해 ffmpeg 수준이 아닌 Linux 수준에서 뭔가 잘못된 일을 하고 있는 것 같은 느낌이 듭니다.

여기에서 어디로 가야할지 제안하는 사람이 있나요?

편집하다:ldconfig -p방금 실제로 라이브러리를 찾을 수 있음이 표시되는 것을 확인했지만 libcuda.so여전히 라이브러리를 찾을 수 없다는 오류가 발생합니다.

 ldconfig -p | grep cuda
        libicudata.so.52 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libicudata.so.52
        libcuda.so.1 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libcuda.so.1
        libcuda.so.1 (libc6) => /usr/lib/i386-linux-gnu/libcuda.so.1
        libcuda.so (libc6) => /usr/lib/i386-linux-gnu/libcuda.so

답변1

메모:
먼저 기존 LD_LIBRARY_PATH를 백업하세요!
이 명령은 환경 변수 LD_LIBRARY_PATH의 값을 "LD_LIBRARY_PATH.old" 파일의 홈 디렉터리에 배치합니다.
#>$ echo $LD_LIBRARY_PATH >> ~/LD_LIBRARY_PATH.old

내 수정 사항:
Fedora에 NVidia/Cuda 드라이버를 설치할 때 이 문제가 발생했습니다. 내 라이브러리 경로를 업데이트해야 했습니다.
#>$ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/path/to/cuda/lib

변경사항 되돌리기:
#>$ export LD_LIBRARY_PATH=$(cat ~/LD_LIBRARY_PATH.old)

관련 정보