Yocto에서 ffmpeg에 대한 Sox의 의존성을 제거하는 방법

Yocto에서 ffmpeg에 대한 Sox의 의존성을 제거하는 방법

내 임베디드 애플리케이션에서 wav 파일을 다운샘플링해야 합니다. SoX가 제대로 작동한다는 것을 알았으므로 이를 이미지 레시피에 추가했습니다.

이미지를 빌드할 때 ffmpeg가 종속성으로 필요하기 때문에 오류가 발생하여 레시피에 ffmpeg를 추가했습니다.

그런 다음 다음 오류가 발생했습니다.

ffmpeg was skipped: because it has a restricted license 'commercial'. Which is not whitelisted in LICENSE_FLAGS_WHITELIST

그래서 결국 conf/local.conf 파일에 LICENSE_FLAGS_WHITELIST="commercial"을 추가하게 되었습니다. 그런 다음 구축할 시간입니다.

하지만 저는 그냥 SoX의 다운샘플링 기능을 사용하고ffmpeg의 한계를 없애고 싶습니다..

SoX에 포함된 버전은 14.4.2이며 레시피에서 ffmpeg에 대한 종속성과 LICENSE_FLAGS_WHITELIST에 "COMMERCIAL"이 포함되어야 한다는 사실을 볼 수 있습니다.

yocto/meta-openembedded에서 ffmpeg에 의존하지 않는 SoX 14.4.0 버전에 대한 레시피를 찾았습니다.

두 가지 가능성이 있지만 구현 방법을 모르겠습니다.

  1. 가장 간단한 해결책으로 보이는 SoX 14.4.0 버전을 임베딩하는 것입니다(다른 문제가 발생하지 않기를 바랍니다).
  2. ffmpeg를 제거하려면 --with-ffmpeg=no 옵션을 사용하여 SoX가 컴파일되도록 현재 레시피를 다시 로드하세요.

내 이미지 레시피는 다음과 같이 시작됩니다.

IMAGE_INSTALL = " \
packagegroup-core-boot \
packagegroup-verbatim-sensor \
python3 \
python3-pillow \
sox \
ffmpeg\
${CORE_IMAGE_EXTRA_INSTALL} \
"
...

SoX 레시피의 특정 버전을 어떻게 포함할 수 있나요?

ffmpeg를 제거하기 위해 레시피 sox_14.4.2.bb를 오버로드하는 방법은 무엇입니까?

편집하다:내 Yocto가 "Honister" 브랜치를 기반으로 하며 기본적으로 sox 14.4.2를 채택한다는 사실을 언급하는 것을 잊어버렸습니다.

편집하다:저는 Yocto 초보자이기 때문에 어리석은 말을 할 수도 있지만 sox_14.4.0.bb의 내용을 가져와 .bbappend에서 사용하여 sox_14.4.2.bb를 덮어쓰면 작동합니까?
시도했지만 구문 분석에 실패했습니다.

편집하다:글쎄요, 추가 조사를 통해 sox가 리샘플링을 위해 libav 함수에 의존한다는 사실을 발견했는데, 이것이 바로 제가 필요한 함수입니다. sox 14.4.0에서는 libav가 직접 참조되지만 sox 14.4.2에서는 libav가 ffmpeg(ffmpeg 4.4)에 의해 제공되므로
ffmpeg_4.4.bbappend를 수행하는 것을 포함하여 다른 접근 방식을 시도하고 싶습니다. 패키지(상용 라이센스 필요) 및 "상용" 라이센스가 필요하지만 진행 방법을 모르겠습니다.
패키지를 PACKAGE_EXCLUDE해야 합니까?
.bbappend를 통해 ffmpeg_4.4.bb에서 LICENSE_FLAGS를 제거하는 방법은 무엇입니까?

관련 정보