14

arm-linux-androideabi-pkg-configツールを含むffmpeg Linux armプラットフォームのツールチェーンを知っている人はいますか? Android NDK には含まれていません。また、alsa デバイスを含む Android 用の ffmpeg の構築に成功した人はいますか? 私のUbuntu x86 PCにはlibasoundが存在することに注意してください。ffmpeg.org、ffmpeg--nabbles、andro および android-ndk グループを含む groups.google.com、およびインターネット全般を含むフォーラムを訪問して非常に広範な調査を行った後、その存在を知っていると思われる人を見つけることができませんでした。 . せいぜい、私は人々がそれを無視すると言っているのを読んだことがあります。それが何のために必要なのかを考えると、それはナイーブなことだと思います。





標準の ffmpeg 構成スクリプトを注意深く確認すると、特定の入出力デバイスにはpkg_config_default=pkg-configと記述されたツールチェーンが必要であることがわかります。また、HAVE_LIST のすべての項目は SYSTEM DEPENDENT です。configure スクリプトは、各 indev または outdev アイテムに必要な依存関係を非常に明確に示しています。どうやらこのツールは、依存関係に必要なライブラリを検証するために使用されている

ようです

jasongipsyblues@android-master:~/android-ffmpeg/Project/jni$ ./configure_ffmpeg.sh
...
...
..
....
ライセンス: GPL バージョン 3 以降 config.mak と config.h の作成.. .

config.h は変更されていません

config.asm は変更されていません

libavutil/avconfig.h は変更されていません

警告: /home/jasongipsyblues/Desktop/apps/android-ndk-r8b/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/arm-linux-androideabi-pkg-config が見つかりません、ライブラリ検出に失敗する場合があります。

Ubuntu を搭載した PC では、pkg-config に問題はありません。

Ubuntu x86 PC の config.log ファイルから in/out デバイス alsa を grep したときの次の出力と、android-ndk-r8 ツールチェーンを使用した android ボックスの出力を比較してください。

jasongipsyblues@android-master:~/android-ffmpeg/Project/jni/ffmpeg$ cat config.log|grep >alsa
alsa_indev
alsa_outdev
alsa_asoundlib_h
INDEV_LIST='alsa_indev
OUTDEV_LIST='alsa_outdev
alsa_indev='yes'
alsa_indev_deps='alsa_asoundlib_h snd_pcm_htimestamp'
alsa_outdev= 'yes'
alsa_outdev_deps='alsa_asoundlib_h'
indevs_if_any='alsa_indev
outdevs_if_any='alsa_outdev
check_lib2 alsa/asoundlib.h snd_pcm_htimestamp -lasound
check_func_headers alsa/asoundlib.h snd_pcm_htimestamp -lasound
1 #include
/tmp/ffconf.VCjQQ:AHQ1:エラー: alsa/asoundlib.h: そのようなファイルまたはディレクトリはありません

これは、エラーの原因を示すコンパイラ出力です。

check_lib2 alsa/asoundlib.h snd_pcm_htimestamp -lasound
check_func_headers alsa/asoundlib.h snd_pcm_htimestamp -lasound
check_ld cc -lasound
check_cc
BEGIN /tmp/ffconf.VCjQQAHQ.c
1 #include
2 long check_snd_pcm_htimestamp(void) { return (long) snd_pcm_htimestamp; }
3 int main(void) { 0 を返します。}
END /tmp/ffconf.VCjQQAHQ.c
/home/jasongipsyblues/Desktop/apps/android-ndk-r8b/toolchains/arm-linux-androideabi->4.4.3/prebuilt/linux-x86/bin/arm-linux-androideabi-gcc --sysroot=/home/ jasongipsyblues/Desktop/apps/android-ndk-r8b/platforms/android-14/arch-arm -D_ISOC99_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600 -DPIC -I../x264 -mcpu=cortex- a9 -std=c99 -fomit-frame-pointer -fPIC -marm -c -o /tmp/ffconf.I2B2AXfH.o
/tmp/ffconf.VCjQQAHQ.c
/tmp/ffconf.VCjQQAHQ.c:1:28: エラー: alsa/asoundlib.h: そのようなファイルまたはディレクトリはありません
/tmp/ffconf.VCjQQAHQ.c: 関数 'check_snd_pcm_htimestamp' 内:
/tmp/ffconf.VCjQQAHQ.c:2: エラー: 'snd_pcm_htimestamp' 宣言されていません (この関数で最初に使用)
/tmp/ffconf.VCjQQAHQ.c:2: エラー: (宣言されていない識別子はそれぞれ一度だけ報告されます
/tmp/ffconf.VCjQQAHQ.c:2: エラー: 表示される関数ごとに。)

これは Ubuntu x86PC ffmpeg
jasongipsyblues 用です@android-master:~/ffmpeg$ cat config.log|grep alsa
alsa_indev
alsa_outdev
alsa_asoundlib_h
INDEV_LIST='alsa_indev
OUTDEV_LIST='alsa_outdev
alsa_indev='yes'
alsa_indev_deps='alsa_asoundlib_h snd_pcm_htimestamp'
alsa_outdev='yes'
alsa_outdev_deps='
alsa_indevoundlib_as_ifs_ifs_ 'alsa_indev
outdevs_if_any='alsa_outdev
check_lib2 alsa/asoundlib.h snd_pcm_htimestamp -lasound
check_func_headers alsa/asoundlib.h snd_pcm_htimestamp -lasound
1 #include
ここにエラーはなく、alsa は ffmpeg ビルドに正常に含まれています

4

1 に答える 1

2

https://github.com/guardianproject/android-ffmpeg

https://github.com/guardianproject/android-ffmpeg/commit/f08db49e613a7ea4423effb22973e3f1afefb819

リンクを見てください。彼は、pkg-config の問題を回避するために、「freetype2」サブモジュールを含む commit を実行しました。

于 2012-08-27T14:53:14.307 に答える