これは非常に基本的な質問ですが、これは初めてのNDKの話ですから、多くのことが私にはまだ分かりません。Android StudioでFFmpegを使用する方法
ユースケース:
私は非常に高速かつ正確なフレームシークが重要であるビデオスクラブ機能を開発しようとしています。私は利用可能なプレーヤーのほとんどを試しましたが、パフォーマンスはまだ私の要求に応えるものではありません。だから私はFFmpegルートを下って行くのです。
基本的には、私が探しているのはFFmpeg input seekingです。私はWrtingMinds' ffmpeg-android-javaを試しました。しかしこれはファイルベースの実装であり、
out.jpg
を外部メモリに書き込む必要があり、パフォーマンス(1回の検索で約1000ミリ秒)が大幅に増加する必要があります。私は自分自身のFFmpegプレーヤーを構築して、JNIで入力を求めて、
byte[]
をJavaで表示するようにプッシュしようとしています。
質問: NDKに苦しんで多くの後、私はそれを設定し、成功した私のJavaコードからJNIメソッドを呼び出すことができました。構造は以下の通りです:
MyApp
-app
-MyFFmpegPlayer
-build
-libs
-src
-main
-java
-com.example.myffmpegplayer
+HelloJNI.java
-jni
+MyFFmpegPlayer.c
一部がWindows上にFFmpegを構築しようとする試みが失敗した後、私はWritingMinds構築済みにFFmpegを使用することを決めました。しかし、抽出後、彼らは平文としてffmpeg
ファイル(.so
ファイルではない)になるので、私はこれらの使用法を本当に知りません。
誰かがチャイムインして次のステップの出発点を与えてくれれば、とても感謝しています。
ありがとうございました。
imo - 画像からウィンドウを削除する方がよい場合があります。 VMを実装する。あなたのVMでARMV7クロスツールチェーンを使用する方法を学んでください。あなたのVMにffmpeg-for-armv7Aをビルドしてください。 Android-NDKでffmpeg.soをどのように呼び出していたかに戻ります。あなたがAndroidスタジオの場合は、http://ph0b.com/new-android-studio-ndk-support/にアクセスしてください。 –
返信@Robert Rowntreeに感謝します。私は実際にあなたのリンク先に出くわしました。それが実験的で安定したGradleを一緒に働かせるように設定する方法です。私はまた、Windows上でffmpegを構築することは非常に難しいことを理解していますが、仕事上の制約のために、今はLinuxを実際にインストールすることはできません。だから、私は事前に作られたルートに向かう。あなたは私がFFmpegを構築して独自のバージョンを構築するだけでよいことを示唆していますか? –
あなたの必要条件を満たしています....いくつかのサードパーティのffmpegを使って作業することは、バグのない成功の可能性が低いです。バギーなら何?あなた自身のffmpegビルドを使って作業することは非常に時間がかかることですが、発生するバグを解決する機会は非常に多いです。 Windows上でffmpegをビルドすると、コンベンションに反してしまうのです...むしろ、Windows上でVMを使用する方法を学び、他のみんなのようにビルドすることができます.... –