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

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

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

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

Android Studio

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

FFmpeg

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

Q&A

解決済

1回答

5324閲覧

FFMPEGのAndroidでの利用方法について

FSNY

総合スコア16

Android

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

Android Studio

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

FFmpeg

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

0グッド

1クリップ

投稿2017/07/14 02:01

Android 5.0以上を対象に動画編集アプリを開発しようとしていまして、そのために以下の環境にてAndroidへのFFMPEG組み込みを行おうとしております。
・AndroidStudio 2.3.3
・FFMPEG 3.3.2

http://nextat.co.jp/staff/archives/97
上記サイトを参考にFFMPEGのコンパイルやAndroid.mkを作成してのAndroidプロジェクトへの組み込みを行っていますが、うまくいっておりません。

色々なサイトを調べているのですが、環境のEclipseとAndroidStudioの違い、またAndroidStudioのバージョンによるビルドに関する仕様の違いなどがあるらしく、基になる環境が異なる情報が入り混じってしまい、正しい形というのが分かっていない状況です。

最初に記載した
・Android 5.0
・AndroidStudio 2.3.3
・FFMPEG 3.3.2
上記条件でFFMPEGの組み込みを行いたい場合、どういった作業が必要なのか、またどういった手順なのか、ご存知の方がいましたらご教授いただけますでしょうか。

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

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

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

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

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

ykws

2017/07/19 04:38

どういったエラーが出ているのでしょうか?
FSNY

2017/07/25 12:46

返答遅くなりすみません。ひとまずある段階までは解決することができました。ご協力いただきありがとうございます。
guest

回答1

0

自己解決

http://writingminds.github.io/ffmpeg-android/
上記のサイトを参考にしつつ、ひとまずライブラリを利用できる状態までにはすることができました。

./android-ndk-r14b
./WritingMinds-ffmpeg-android-8809612
このようなに各フォルダを配置し、以下のように各ファイルの内容を編集しました。

■./WritingMinds-ffmpeg-android-8809612/android_build.sh

#!/bin/bash . settings.sh BASEDIR=$(pwd) TOOLCHAIN_PREFIX=${BASEDIR}/toolchain-android # Applying required patches patch -p0 -N --dry-run --silent -f fontconfig/src/fcxml.c < android_donot_use_lconv.patch 1>/dev/null if [ $? -eq 0 ]; then patch -p0 -f fontconfig/src/fcxml.c < android_donot_use_lconv.patch fi for i in "${SUPPORTED_ARCHITECTURES[@]}" do rm -rf ${TOOLCHAIN_PREFIX} # $1 = architecture # $2 = base directory # $3 = pass 1 if you want to export default compiler environment variables ./libpng_build.sh $i $BASEDIR 1 || exit 1 ./expat_build.sh $i $BASEDIR 1 || exit 1 ./ffmpeg_build.sh $i $BASEDIR 0 || exit 1 done rm -rf ${TOOLCHAIN_PREFIX}

■./WritingMinds-ffmpeg-android-8809612/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

■./WritingMinds-ffmpeg-android-8809612/settings.sh

#!/bin/bash SUPPORTED_ARCHITECTURES=(armeabi-v7a x86) ANDROID_NDK_ROOT_PATH=${ANDROID_NDK} if [[ -z "$ANDROID_NDK_ROOT_PATH" ]]; then echo "You need to set ANDROID_NDK environment variable, please check instructions" exit fi ANDROID_API_VERSION=21 NDK_TOOLCHAIN_ABI_VERSION=4.9 NUMBER_OF_CORES=$(nproc) HOST_UNAME=$(uname -m) TARGET_OS=linux CFLAGS='-U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -fno-strict-overflow -fstack-protector-all' LDFLAGS='-Wl,-z,relro -Wl,-z,now -pie' FFMPEG_PKG_CONFIG="$(pwd)/ffmpeg-pkg-config"

その後、環境変数として以下を登録
ANDROID_NDK=/<~ルートからのパス~>/android-ndk-r14b

/WritingMinds-ffmpeg-android-8809612に移動してandroid_build.shを実行
./android_build.sh

以下のフォルダ配下に.soのライブラリファイルが作成される
./WritingMinds-ffmpeg-android-8809612/build

この.soファイルを使ってFFmpegの機能をAndroid側で利用できることは最低限確認することができました。
ここからどういった形で機能を実装していくかという問題が新たに出てはいますが、ライブラリを作成するという点ではひとまず上手くいきました。
今後の実装方法についてはまた別途質問の方を投げさせていただこうと思います。

投稿2017/07/25 12:01

編集2017/07/25 12:45
FSNY

総合スコア16

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問