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バージョンのレシピを見つけました。

2つの可能性がありますが、実装方法がわかりません。

  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を削除する方法は?

ベストアンサー1

おすすめ記事