2012-03-09 14 views
11

FFMPEGのオールインワン静的バイナリをNDK r7bでビルドしようとしています。RTMPサポートでビルドしようとするまで、すべて正常に動作します。アンドロイド用のlibrtmpでFFMPEGを構築する

この

.configure \ 
--target-os=linux \ 
--cross-prefix=arm-linux-androideabi- \ 
--arch=arm \ 
--sysroot=/home/andrey/android-ndk-r7b/platforms/android-3/arch-arm \ 
--enable-static \ 
--disable-shared \ 
--disable-symver \ 
--enable-small \ 
--disable-devices \ 
--disable-avdevice \ 
--enable-gpl \ 
--enable-librtmp \ 
--prefix=../build/ffmpeg/armeabi \ 
--extra-cflags=-I../rtmpdump/librtmp \ 
--extra-ldflags=-L../rtmpdump/librtmp \ 

とrtmpdumpのディレクトリはffmpegのと同じレベルに産むように私はlibrtmp2.4とカスタム設定でhttps://github.com/guardianproject/android-ffmpegからusind源です。 私の設定の最後の2つの文字列は、コンパイラがlibrtmpのソースを見つける場所を示しています。 しかし、私が得るのはERROR: librtmp not found

私はNDKとobviosly私はいくつかの重要な部分が不足しているが、私は自分でそれを見つけることができませんexpereiencedではない。

答えて

10

これは難題ですが、私は解決策があると思います。設定時の問題は、FFmpegがpkg-config管理システムを介して適切なlibrtmpのインストールを検出したいということです。

私はあなたが正常に../rtmpdumpで参照されるディレクトリでlibrtmpをクロスコンパイルしたと仮定しています。 FFmpegののconfigureスクリプトを編集して、行を検索:

enabled librtmp && require_pkg_config librtmp librtmp/rtmp.h RTMP_Socket 

コメントそのうち(行の先頭に「#」を置きます)。ここで、configureを再実行してください。

--extra-cflags="-I/full/path/to/rtmpdump" 

ここで絶対パスを使用すると役立つ場合があります。また、#includeディレクティブはすでにヘッダーファイルの先頭にlibrtmp /を付けているので、最後に/ librtmp /を省略します。次へ:

--extra-ldflags="-L/full/path/to/rtmpdump -lrtmp" 

また、絶対パスとリンクするライブラリを指定します。これはconfigureによってロジックをコメントアウトしたためです。

これでconfigureが成功し、クロスコンパイルもうまくいくはずです。最終ffmpegのバイナリは、プロトコルの下でRTMPモジュールのファミリを報告する必要があります:私はこれをテストするためにNDK devの環境を持っていない

ffmpeg -protocols 
[...] 
rtmp 
rtmpe 
rtmps 
rtmpt 
rtmpte 

注意を。しかし、デスクトップのUbuntuシステムでlibrtmpをコンパイルして(pkg-configを使ってパッケージをインストールせずに)、上記の手順を実行してテストしました。

+0

貴重な情報、あなたはこれを見てみることができます:http://stackoverflow.com/questions/9605757/using-ffmpeg-with-android-ndk – iSun

+0

私はその質問を見ましたが、私はAndroidで多くの経験がありませんNDKまたはCygwin。 –

+0

ああ、とにかくありがとうございます。 – iSun

関連する問題