Androidでffmpegを利用する方法について

1,831 views
Skip to first unread message

hiro12...@gmail.com

unread,
Nov 27, 2014, 3:14:18 AM11/27/14
to android-g...@googlegroups.com
たばきちと申します。
AndroidでFFmpegを利用しようとしています。
 
開発環境はWindowsなので、以下サイトから
 
Window Packagesをダウンロードしました。
その中にDLLファイルがあったので
JniにDLLファイルをリンクさせようと思いましたが
うまくいきません。
 
何か参考になるHPなどございましたら
お教えいただけませんでしょうか?
 
こちらのサイトでも、類似した問題がありましたが
どうも開発環境がLinuxのようで、手順がちがう?のかな?
と思いました。
 
すいませんがよろしくお願いします。

titoi2

unread,
Nov 27, 2014, 7:42:30 PM11/27/14
to android-g...@googlegroups.com
titoi2です。

AndroidにWindows用のDLLはリンク出来ません。Android用にバイナリを作る必要があります。
「ffmpeg android」でぐぐれば、それなりに情報が出てくるかと思います。



2014年11月27日 17:14 <hiro12...@gmail.com>:

--
このメールは Google グループのグループ「日本Androidの会」に登録しているユーザーに送られています。
このグループから退会し、グループからのメールの配信を停止するには android-group-j...@googlegroups.com にメールを送信してください。
このグループに投稿するには android-g...@googlegroups.com にメールを送信してください。
http://groups.google.com/group/android-group-japan からこのグループにアクセスしてください。
その他のオプションについては https://groups.google.com/d/optout にアクセスしてください。

hiro12...@gmail.com

unread,
Nov 28, 2014, 1:13:05 AM11/28/14
to android-g...@googlegroups.com
ご返信ありがとうございます。
 
途中経過ですが 
AndroidにWindows用のDLLはリンク出来ません。Android用にバイナリを作る必要あるとのことで
ちょっとしらべてみて、MINGW,MSYSをインストールしffmpegをダウンロードしました。
今ビルドのやり方をしらべています。
 
 
 
 

2014年11月28日金曜日 9時42分30秒 UTC+9 titoi2:
titoi2です。

AndroidにWindows用のDLLはリンク出来ません。Android用にバイナリを作る必要があります。
「ffmpeg android」でぐぐれば、それなりに情報が出てくるかと思います。



2014年11月27日 17:14 <hiro12...@gmail.com>:
たばきちと申します。
AndroidでFFmpegを利用しようとしています。
 
開発環境はWindowsなので、以下サイトから
 
Window Packagesをダウンロードしました。
その中にDLLファイルがあったので
JniにDLLファイルをリンクさせようと思いましたが
うまくいきません。
 
何か参考になるHPなどございましたら
お教えいただけませんでしょうか?
 
こちらのサイトでも、類似した問題がありましたが
どうも開発環境がLinuxのようで、手順がちがう?のかな?
と思いました。
 
すいませんがよろしくお願いします。

--
このメールは Google グループのグループ「日本Androidの会」に登録しているユーザーに送られています。
このグループから退会し、グループからのメールの配信を停止するには android-group-japan+unsub...@googlegroups.com にメールを送信してください。

i.yohei

unread,
Nov 28, 2014, 1:23:27 AM11/28/14
to android-g...@googlegroups.com
いわくらと申します。

3年ほど前にffmepegをAndroidに入れた経験があります。
当時の作業メモを残していますので、何かのご参考になればと思います。

(当時は、cygwin環境ではできず、UbuntuOS上で開発環境構築して行った記憶があります。)



2014年11月28日金曜日 15時13分05秒 UTC+9 hiro12...@gmail.com:

hiro12...@gmail.com

unread,
Nov 28, 2014, 2:56:09 AM11/28/14
to android-g...@googlegroups.com
いわくらさま
 
ご返信ありがとうございます。
 
HP参考にさせていただきます。
Windows環境でffmepegをビルドする方法がわかりません。
何か自分でも混乱しているように思います。
いろいろやってみては、いるのですが。
 
 
 

2014年11月28日金曜日 15時23分27秒 UTC+9 i.yohei:

yohei....@gmail.com

unread,
Nov 30, 2014, 8:40:43 PM11/30/14
to android-g...@googlegroups.com
たばきち様

返信おそくなりました、いわくらです。

小生の方でもWindows環境でのビルド実績はなく、
当時はWindows上(cygwin環境で)でのビルドを試みて
あきらめました。
Ubuntuにてビルドしたと記憶しております。
このメールは Google グループのグループ「日本Androidの会」のトピックを登録しているユーザーに送られています。
このトピックの登録を解除するには https://groups.google.com/d/topic/android-group-japan/W6a3ZTeMOuE/unsubscribe にアクセスしてください。
このグループを退会し、グループのすべてのトピックの登録を解除するには android-group-j...@googlegroups.com にメールを送信してください。

hiro12...@gmail.com

unread,
Dec 1, 2014, 1:40:25 AM12/1/14
to android-g...@googlegroups.com
いわくらさま
 
 
ご返信ありがとうございます。
たばきちです。
 
ビルドができたのですが
WARINIGでpkg-config not found,library detection may fail.と表示されてしまい
消すためにpkg-config.exeをダウンロードしましたが解決できない状況となっています。
 
いわくらさまのHP参考にさせていただいております。
ありがとうございます。
 
 
 
 
 

2014年12月1日月曜日 10時40分43秒 UTC+9 i.yohei:
このグループを退会し、グループのすべてのトピックの登録を解除するには android-group-japan+unsub...@googlegroups.com にメールを送信してください。

Shin Miyazaki

unread,
Dec 1, 2014, 5:08:21 AM12/1/14
to android-g...@googlegroups.com
こんばんは、みやざきです。

>WARINIGでpkg-config not found,library detection may fail.と表示されてしまい

そこは特に気にする必要は無いです(一度だけffmpegをビルドするだけなら)。
気になるならconfugureのオプションに「--with-pkgconfig=/bin/pkg-config」を追加すればwarningは無くなります(MINGW/MSYSの場合)。

2014年12月1日 15:40 <hiro12...@gmail.com>:
このグループから退会し、グループからのメールの配信を停止するには android-group-j...@googlegroups.com にメールを送信してください。
Message has been deleted

hiro12...@gmail.com

unread,
Dec 1, 2014, 10:06:40 PM12/1/14
to android-g...@googlegroups.com
みやざきさま
ご返信ありがとうございます。
たばきちです。
 
./configure --disable -yasm --with-pkgconfig=/bin/pkg-config と記入したところ
--with-pkgconfig  オプションがありませんとメッセージがでました。
(ダウンロードしたffmpeg2.4.3のconfigureではできないのか調べてみます)
 
とりあえず無視し、指定のフォルダにできた.soファイル(libavcodec.so , libavfilter.so,libavformat.so,,)を
エクリプスでビルドしてみると問題なく通りましたが、実行時に以下エラーがでます。
 
warning: Could not load shared library symbols for 62 libraries, e.g. /system/bin/linker.
Use the "info sharedlibrary" command to see the complete listing.
Do you need "set solib-search-path" or "set sysroot"?
warning: Unable to find dynamic linker breakpoint function.
GDB will retry eventurally.  Meanwhile, it is likely
that GDB is unable to debug shared library initializers
or resolve pending breakpoints after dlopen().
[New Thread 1304]
[New Thread 1306]
[New Thread 1308]
[New Thread 1309]
[New Thread 1310]
[New Thread 1311]
[New Thread 1312]
[New Thread 1313]
[New Thread 1314]
[New Thread 1315]
No symbol table is loaded.  Use the "file" command.
Quit (expect signal SIGINT when the program is resumed)
Could not AssignProcessToObject
 
★作成したsoファイルに問題があるのか、ライブラリのリンク方法に問題があるか
調べている段階です。
 
あと、ビルド時に使っている.shファイルの内容ですが
--cross-prefixで指定しているコンパイラが、Winows環境におけるAndroid用(ターゲットCortex-A8(Arm?))
で適切なのか、疑問に思っています。ただ他を選択しようとすると WARNINGがでます。
 
 
 
#!/bin/bash
NDK=d:/NDK/android-ndk-r10c
SYSROOT=$NDK/platforms/android-21/arch-arm/
TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.8/prebuilt/windows
function build_one
{
./configure --disable-yasm --pkg-config=/bin/pkg-config \
    --prefix=$PREFIX \
    --enable-shared \
    --disable-static \
    --disable-doc \
    --disable-ffmpeg \
    --disable-ffplay \
    --disable-ffprobe \
    --disable-ffserver \
    --disable-avdevice \
    --disable-doc \
    --disable-symver \
    --cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi- \
    --target-os=android \
    --arch=arm \
    --enable-cross-compile \
    --sysroot=$SYSROOT \
    --extra-cflags="-Os -fpic $ADDI_CFLAGS" \
    --extra-ldflags="$ADDI_LDFLAGS" \
    $ADDITIONAL_CONFIGURE_FLAG
make clean
make
make install
}
CPU=arm
PREFIX=$(pwd)/android/$CPU
ADDI_CFLAGS="-marm"
build_one
 
 
 
 

2014年12月1日月曜日 19時08分21秒 UTC+9 shinm:

2014年12月1日 15:40 <hiro12...@gmail.com>:

2014年11月28日金曜日 15時13分05秒 UTC+9 hiro12...@gmail.com:

2014年11月27日 17:14 <hiro12...@gmail.com>:
このグループから退会し、グループからのメールの配信を停止するには android-group-japan+unsubscribe...@googlegroups.com にメールを送信してください。

このグループに投稿するには android-g...@googlegroups.com にメールを送信してください。
http://groups.google.com/group/android-group-japan からこのグループにアクセスしてください。
その他のオプションについては https://groups.google.com/d/optout にアクセスしてください。
--
このメールは Google グループのグループ「日本Androidの会」のトピックを登録しているユーザーに送られています。
このトピックの登録を解除するには https://groups.google.com/d/topic/android-group-japan/W6a3ZTeMOuE/unsubscribe にアクセスしてください。
このグループを退会し、グループのすべてのトピックの登録を解除するには android-group-japan+unsubscribe...@googlegroups.com にメールを送信してください。

このグループに投稿するには android-g...@googlegroups.com にメールを送信してください。
http://groups.google.com/group/android-group-japan からこのグループにアクセスしてください。
その他のオプションについては https://groups.google.com/d/optout にアクセスしてください。

--
このメールは Google グループのグループ「日本Androidの会」に登録しているユーザーに送られています。

hiro12...@gmail.com

unread,
Dec 2, 2014, 2:18:36 AM12/2/14
to android-g...@googlegroups.com
たばきちです。
 
その後、https://github.com/roman10/android-ffmpeg-tutorialからAndroid用のFFMPEGを
ダウンロードし、.soファイルでビルド、実行しようとしましたが、実行時に同様のエラーがみられました。
warning: Could not load shared library symbols for 62 libraries, e.g. /system/bin/linker.・・・etc
.soファイルはD:/NDK/android-ndk-r10c/sources/ffmpeg-2.4.3/android/arm以下のlibにいれ
そのディレクトリ内にAndroid.mkファイルを作成し、Eclipseのjniフォルダ以下Android.mkファイルで読み込んでいます。
 
★Eclipseのjni以下Android.mkファイル
---------------------------------------------------------------------------------------------------
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE         := testprogram
LOCAL_SRC_FILES      := TestProgram.c

LOCAL_LDLIBS := -llog -ljnigraphics -lz -landroid
LOCAL_SHARED_LIBRARIES := libavformat libavcodec libswscale libavutil
 
include $(BUILD_SHARED_LIBRARY)
$(call import-module,ffmpeg-2.4.3/android/arm)
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
 
★D:/NDK/android-ndk-r10c/sources/ffmpeg-2.4.3/android/arm以下 Android.mkファイル内容
---------------------------------------------------------------------------------------------------
LOCAL_PATH:= $(call my-dir)
 
include $(CLEAR_VARS)
LOCAL_MODULE:= libavcodec
LOCAL_SRC_FILES:= lib/libavcodec-55.so
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/include
include $(PREBUILT_SHARED_LIBRARY)
 
include $(CLEAR_VARS)
LOCAL_MODULE:= libavformat
LOCAL_SRC_FILES:= lib/libavformat-55.so
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/include
include $(PREBUILT_SHARED_LIBRARY)
 
include $(CLEAR_VARS)
LOCAL_MODULE:= libswscale
LOCAL_SRC_FILES:= lib/libswscale-2.so
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/include
include $(PREBUILT_SHARED_LIBRARY)
 
include $(CLEAR_VARS)
LOCAL_MODULE:= libavutil
LOCAL_SRC_FILES:= lib/libavutil-52.so
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/include
include $(PREBUILT_SHARED_LIBRARY)
 
---------------------------------------------------------------------------------------------------
 
とりあえず
https://github.com/roman10/android-ffmpeg-tutorialからAndroid用のFFMPEGが動かせるか
確認してみます。
 
 

2014年12月2日火曜日 12時06分40秒 UTC+9 hiro12...@gmail.com:

hiro12...@gmail.com

unread,
Dec 2, 2014, 3:30:32 AM12/2/14
to android-g...@googlegroups.com
たばきちです。
 
https://github.com/roman10/android-ffmpeg-tutorialからAndroid用のFFMPEG
チュートリアル1は、動かすことができました。
同じライブラリを利用しているので自分のプロジェクトで動作させるため差分を調べます。
 
 
 
 

2014年11月27日木曜日 17時14分18秒 UTC+9 hiro12...@gmail.com:

hiro12...@gmail.com

unread,
Dec 2, 2014, 9:19:50 PM12/2/14
to android-g...@googlegroups.com
https://github.com/roman10/android-ffmpeg-tutorialからAndroid用のFFMPEG
のライブラリを自分のプロジェクトで動かすことができました。
 
ただ、以下警告を消す情報がみつかりませんでした。
 
warning: Could not load shared library symbols for 62 libraries, e.g. /system/bin/linker.・・・etc
WEBをしらべたところ無視してよいとの意見があったり、情報が少なく
何か情報があればお教えいただきたくよろしくお願いします。
 
その後、自分でビルドしたffmpegライブラリを
https://github.com/roman10/android-ffmpeg-tutorialからAndroid用のFFMPEGのプロジェクトに
よみこませようとしたところ、ExceptionInInitializerErrorがでました。
 
下記警告文のほかに No symbol table is loaded. Use the "file" command.というメッセージが表示されソフトが異常終了しました。
warning: Could not load shared library symbols for 62 libraries, e.g. /system/bin/linker.・・・etc
このことから、
ビルド失敗?しているのではないかと思われました。
 
 

2014年11月27日木曜日 17時14分18秒 UTC+9 hiro12...@gmail.com:

hiro12...@gmail.com

unread,
Dec 10, 2014, 7:55:39 PM12/10/14
to android-g...@googlegroups.com
あれから、いろいろ試してみていたのですが
なぜかffmpeg2.0ではビルド後、soファイルにリンクでき実行することができました。
 
もう一度、ffmpegの最新バージョンで試してみます。
こんなことあるのでしょうか?
 
 
 
 
 
 
 
 
 

2014年11月27日木曜日 17時14分18秒 UTC+9 hiro12...@gmail.com:

i.yohei

unread,
Dec 11, 2014, 2:31:54 AM12/11/14
to android-g...@googlegroups.com
いわくらです。

動く版数があってよかったです。

(自分でも記憶ぬけしているのでブログの記録によると)
0.6.3ではできず、0.7-rc1で出来たようです。



2014年12月11日木曜日 9時55分39秒 UTC+9 hiro12...@gmail.com:

hiro12...@gmail.com

unread,
Dec 11, 2014, 3:21:18 AM12/11/14
to android-g...@googlegroups.com
いわくらさま
 
ご返信ありがとうございます。
いわくらさまのケースでは、バージョンがあがって利用できるようになったので
よいと思われますが
 
私の場合、2.1.6、2.4.4. 2.5で試しましたが、うまくいきませんでした。
なぜか2.0より上のバージョンがだめなので
もうすこし調べてみます。
 
 
 

2014年12月11日木曜日 16時31分54秒 UTC+9 i.yohei:
Reply all
Reply to author
Forward
0 new messages