質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
make

make は、ビルド作業を自動化するツールです。さまざまなファイルの最終変更時刻を比較し、従属するファイルよりも「ターゲット」のファイルが古いことがわかったときユーザーが設定していた命令を実行する事が可能です。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Ubuntu

Ubuntuは、Debian GNU/Linuxを基盤としたフリーのオペレーティングシステムです。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

FFmpeg

FFmpegは、動画と音声を交換できるフリーソフトウェアです。UNIX系OSから派生した、MS-DOSから操作するコマンドラインツールです。libavcodecやlibavformat、libswscale、libavfilterなどを含みます。ライセンスは、コンパイルの際のオプションによりLGPLもしくはGPLに決定されます。対応コーデックや使用できるオプションが多く、幅広く利用されています。

Q&A

0回答

3639閲覧

FFmpegを64bit形式でビルドする手順について

FSNY

総合スコア16

make

make は、ビルド作業を自動化するツールです。さまざまなファイルの最終変更時刻を比較し、従属するファイルよりも「ターゲット」のファイルが古いことがわかったときユーザーが設定していた命令を実行する事が可能です。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Ubuntu

Ubuntuは、Debian GNU/Linuxを基盤としたフリーのオペレーティングシステムです。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

FFmpeg

FFmpegは、動画と音声を交換できるフリーソフトウェアです。UNIX系OSから派生した、MS-DOSから操作するコマンドラインツールです。libavcodecやlibavformat、libswscale、libavfilterなどを含みます。ライセンスは、コンパイルの際のオプションによりLGPLもしくはGPLに決定されます。対応コーデックや使用できるオプションが多く、幅広く利用されています。

0グッド

1クリップ

投稿2017/07/31 09:45

64bitで動作するFFmpegの実行ファイルを作りたい場合、どのようにすればよろしいでしょうか?

http://writingminds.github.io/ffmpeg-android/
上記サイトを参考に下記のようなシェルを使ってFFmpegの実行ファイルを取得しました。

↓abi_settings.sh

#!/bin/bash . settings.sh BASEDIR=$2 case $1 in armeabi-v7a) NDK_ABI='arm' NDK_TOOLCHAIN_ABI='arm-linux-androideabi' NDK_CROSS_PREFIX="${NDK_TOOLCHAIN_ABI}" ;; x86) NDK_ABI='x86' NDK_TOOLCHAIN_ABI='x86' NDK_CROSS_PREFIX="i686-linux-android" CFLAGS="$CFLAGS -march=i686" ;; esac TOOLCHAIN_PREFIX=${BASEDIR}/toolchain-android if [ ! -d "$TOOLCHAIN_PREFIX" ]; then ${ANDROID_NDK_ROOT_PATH}/build/tools/make-standalone-toolchain.sh --toolchain=${NDK_TOOLCHAIN_ABI}-${NDK_TOOLCHAIN_ABI_VERSION} --platform=android-${ANDROID_API_VERSION} --install-dir=${TOOLCHAIN_PREFIX} fi CROSS_PREFIX=${TOOLCHAIN_PREFIX}/bin/${NDK_CROSS_PREFIX}- NDK_SYSROOT=${TOOLCHAIN_PREFIX}/sysroot export PKG_CONFIG_LIBDIR="${TOOLCHAIN_PREFIX}/lib/pkgconfig" if [ $3 == 1 ]; then export CC="${CROSS_PREFIX}gcc --sysroot=${NDK_SYSROOT}" export LD="${CROSS_PREFIX}ld" export RANLIB="${CROSS_PREFIX}ranlib" export STRIP="${CROSS_PREFIX}strip" export READELF="${CROSS_PREFIX}readelf" export OBJDUMP="${CROSS_PREFIX}objdump" export ADDR2LINE="${CROSS_PREFIX}addr2line" export AR="${CROSS_PREFIX}ar" export AS="${CROSS_PREFIX}as" export CXX="${CROSS_PREFIX}g++" export OBJCOPY="${CROSS_PREFIX}objcopy" export ELFEDIT="${CROSS_PREFIX}elfedit" export CPP="${CROSS_PREFIX}cpp" export DWP="${CROSS_PREFIX}dwp" export GCONV="${CROSS_PREFIX}gconv" export GDP="${CROSS_PREFIX}gdb" export GPROF="${CROSS_PREFIX}gprof" export NM="${CROSS_PREFIX}nm" export SIZE="${CROSS_PREFIX}size" export STRINGS="${CROSS_PREFIX}strings" fi

↓ffmpeg_build.sh

#!/bin/bash . abi_settings.sh $1 $2 $3 pushd ffmpeg case $1 in armeabi-v7a | armeabi-v7a-neon) CPU='cortex-a8' ;; x86) CPU='i686' ;; esac make clean ./configure \ --target-os="$TARGET_OS" \ --cross-prefix="$CROSS_PREFIX" \ --arch="$NDK_ABI" \ --cpu="$CPU" \ --enable-runtime-cpudetect \ --sysroot="$NDK_SYSROOT" \ --enable-pic \ --pkg-config="${2}/ffmpeg-pkg-config" \ --prefix="${2}/build/${1}" \ --extra-cflags="-I${TOOLCHAIN_PREFIX}/include $CFLAGS" \ --extra-ldflags="-L${TOOLCHAIN_PREFIX}/lib $LDFLAGS" \ --extra-libs="-lpng -lexpat -lm" \ --disable-asm \ --cc="gcc -m64" \ --extra-cxxflags="$CXX_FLAGS" || exit 1 make -j${NUMBER_OF_CORES} && make install || exit 1 popd

取得した実行ファイルをAndroid端末に入れて実際に動作させようとしたところ、CPUが32bitの端末では動作するものの64bitの端末だと「sh: ./ffmpeg: not executable: 32-bit ELF file」とエラーが表示されて実行することができませんでした。

そのため64bit端末用にも別途ビルドが必要だと考え、アーキテクチャの振り分けに下記のようなものを加えて実行してみましたが、「checking host system type... Invalid configuration aarch64-linux-android': machine aarch64' not recognized」
「configure: error: /bin/bash conftools/config.sub aarch64-linux-android failed」
と表示されて動きませんでした。
↓abi_settings.sh

~ arm64) NDK_ABI='arm64' NDK_TOOLCHAIN_ABI='aarch64-linux-android' NDK_CROSS_PREFIX="${NDK_TOOLCHAIN_ABI}" ;; ~

↓ffmpeg_build.sh

~ arm64) CPU='cortex-a53' ;; ~

どこか設定などに間違い・不足などがありますでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問