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
지금까지 나는 다음을 시도했습니다.
- 분명히 재구성하고 다시 컴파일하십시오.
- 빌드 디렉토리에서 모든 바이너리를 삭제하고 lib 버전에 대한 직접 하드 코딩된 참조를 찾습니다(찾지 못했습니다).
- 동일한 구성 플래그를 사용하지만 사용자 정의 코드는 없는 깨끗한 디렉터리에 저장소를 복제합니다.
모든 경우에 빌드는 성공적이지만 바이너리 파일에는 존재하지 않는 라이브러리에 대한 참조가 있습니다. 일부 빌드를 설정할 때 일반적으로 내 구성 플래그는 모두 --enable-libstuff
다른 라이브러리에 대한 것이며 명시적인 버전 관리가 없습니다.
온라인에서 이 문제를 겪고 있는 사람을 본 적이 없으므로 아마도 지역적인 문제가 있는 것 같습니다. 그러나 나는 그 버전이 어디에도 하드코딩되어 있지 않기 때문에 그것이 무엇일 수 있는지 이해하지 못합니다.
그래서 내 질문은 다음과 같습니다.Ubuntu 22.04의 내 빌드에 무엇이 영향을 미칠 수 있습니까? 결국 이런 식으로 동작하게 됩니까?
답변1
/usr/local/lib
이 문제가 발생하는 사람은 업데이트 전에 몇 달 전에 구축된 의 공유 라이브러리였습니다 . 최신 컴파일에서는 모든 것이 잘 빌드되었지만 sudo make install
최신 공유 라이브러리를 배포하기 위해 실행되지 않았습니다 . 따라서 최신 실행 파일은 이전 공유 라이브러리를 사용하려고 시도했으며 실제로는 존재하지 않는 라이브러리를 가리켰습니다.
경우 폐쇄.
답변2
Ubuntu 23.04로 업그레이드한 후 ffmpeg 문제가 있었고 libvpx.so.6 문제가 있었습니다.
apt-cache
v7만 표시됩니다.
$ 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의 모든 비디오를 재생하기 시작할 수도 있습니다.일부그들의.)