22.04로 업그레이드한 후 FFmpeg 빌드에 잘못된 lib 참조가 있음

22.04로 업그레이드한 후 FFmpeg 빌드에 잘못된 lib 참조가 있음

FFmpeg 마스터 브랜치에서 빌드된 사용자 정의 필터가 포함된 사용자 정의 FFmpeg 빌드가 있습니다. 여러 컴퓨터에서 20.04에서 제대로 작동합니다. 그러나 몇 주 전에 20.04에서 22.04로 업데이트된 개인 컴퓨터에서 실행하려고 하면 다음 오류가 발생했습니다.

$ ./ffmpeg 
./ffmpeg: error while loading shared libraries: libvpx.so.6: cannot open shared object file: No such file or directory

이에 대한 분명한 이유는 새 버전의 libs를 가리키는 새 패키지의 새 헤더를 사용하여 이를 다시 컴파일해야 하기 때문입니다. 내가 그랬어. 그러나 몇 번이나 다시 컴파일하더라도 항상 동일한 이전 버전의 libs를 찾게 됩니다.

내 빌드 프로세스에서 작동하지 않는 라이브러리 목록은 다음과 같습니다.

$ ldd ./ffmpeg | grep not
    libvpx.so.6 => not found
    libwebp.so.6 => not found
    libcodec2.so.0.9 => not found
    libx264.so.155 => not found
    libx265.so.179 => not found

모두 최신 버전이 설치되어 있습니다.

$ find /usr/ -name "libvpx.so*" -or -name "libwebp.so*" -or -name "libcodec2.so*" -or -name "libx264.so*" -or -name "libx265.so*"  2>/dev/null
/usr/lib/i386-linux-gnu/libwebp.so.7.1.3
/usr/lib/i386-linux-gnu/libwebp.so.7
/usr/lib/x86_64-linux-gnu/libwebp.so.5
/usr/lib/x86_64-linux-gnu/libx264.so.163
/usr/lib/x86_64-linux-gnu/libcodec2.so
/usr/lib/x86_64-linux-gnu/libx265.so.79
/usr/lib/x86_64-linux-gnu/libvpx.so.3.0.0
/usr/lib/x86_64-linux-gnu/libwebp.so.5.0.4
/usr/lib/x86_64-linux-gnu/x264-10bit/libx264.so.148
/usr/lib/x86_64-linux-gnu/libvpx.so.7.0.0
/usr/lib/x86_64-linux-gnu/libwebp.so
/usr/lib/x86_64-linux-gnu/libvpx.so.7.0
/usr/lib/x86_64-linux-gnu/libcodec2.so.1.0
/usr/lib/x86_64-linux-gnu/libvpx.so.3
/usr/lib/x86_64-linux-gnu/libvpx.so.7
/usr/lib/x86_64-linux-gnu/libwebp.so.7.1.3
/usr/lib/x86_64-linux-gnu/libvpx.so
/usr/lib/x86_64-linux-gnu/libwebp.so.7
/usr/lib/x86_64-linux-gnu/libx265.so
/usr/lib/x86_64-linux-gnu/libvpx.so.3.0
/usr/lib/x86_64-linux-gnu/libx265.so.199
/usr/lib/x86_64-linux-gnu/libx264.so
/usr/lib/x86_64-linux-gnu/libx264.so.148

지금까지 나는 다음을 시도했습니다.

  1. 분명히 재구성하고 다시 컴파일하십시오.
  2. 빌드 디렉토리에서 모든 바이너리를 삭제하고 lib 버전에 대한 직접 하드 코딩된 참조를 찾습니다(찾지 못했습니다).
  3. 동일한 구성 플래그를 사용하지만 사용자 정의 코드는 없는 깨끗한 디렉터리에 저장소를 복제합니다.

모든 경우에 빌드는 성공적이지만 바이너리 파일에는 존재하지 않는 라이브러리에 대한 참조가 있습니다. 일부 빌드를 설정할 때 일반적으로 내 구성 플래그는 모두 --enable-libstuff다른 라이브러리에 대한 것이며 명시적인 버전 관리가 없습니다.

온라인에서 이 문제를 겪고 있는 사람을 본 적이 없으므로 아마도 지역적인 문제가 있는 것 같습니다. 그러나 나는 그 버전이 어디에도 하드코딩되어 있지 않기 때문에 그것이 무엇일 수 있는지 이해하지 못합니다.

그래서 내 질문은 다음과 같습니다.Ubuntu 22.04의 내 빌드에 무엇이 영향을 미칠 수 있습니까? 결국 이런 식으로 동작하게 됩니까?

답변1

/usr/local/lib이 문제가 발생하는 사람은 업데이트 전에 몇 달 전에 구축된 의 공유 라이브러리였습니다 . 최신 컴파일에서는 모든 것이 잘 빌드되었지만 sudo make install최신 공유 라이브러리를 배포하기 위해 실행되지 않았습니다 . 따라서 최신 실행 파일은 이전 공유 라이브러리를 사용하려고 시도했으며 실제로는 존재하지 않는 라이브러리를 가리켰습니다.

경우 폐쇄.

답변2

Ubuntu 23.04로 업그레이드한 후 ffmpeg 문제가 있었고 libvpx.so.6 문제가 있었습니다.

apt-cachev7만 표시됩니다.

$ apt-cache search libvpx
libvpx-dev - VP8 and VP9 video codec (development files)
libvpx-doc - VP8 and VP9 video codec (API documentation)
libvpx7 - VP8 and VP9 video codec (shared library)

이전 debs를 찾으려면 데비안 패키지 검색으로 이동했습니다. 예:

https://packages.debian.org/search?keywords=libvpx&searchon=names

여기에는 오래된 내용이 많이 나와 있습니다.

여기에 이미지 설명을 입력하세요

대부분의 종속성이 의 일부라는 것을 알았 bullseye으므로 땡기/안정 링크를 클릭한 다음 예를 들어 amd64(또는 아키텍처가 무엇이든)를 클릭하십시오.

여기에 이미지 설명을 입력하세요

그런 다음 거울을 클릭하세요. 예:http.us.debian.org/debian

다운로드한 후 다음을 사용하여 설치하세요.

sudo dpkg -i ~/Downloads/libvpx6_1.8.2-1build1_amd64.deb

내가 해야 할 다른 일들:

  • libdav1d4
  • libx264-160
  • libx265-192

...마침내 ffmpeg -codecs일부 출력이 실행되었습니다.

(아, 그리고 Firefox는 YouTube의 모든 비디오를 재생하기 시작할 수도 있습니다.일부그들의.)

관련 정보