5

NDK を使用して Android アプリで使用する FFmpeg ライブラリを構築しようとしています。これは、自分のビデオ レコーダーを書きたくないので、Android のネイティブ ビデオ キャプチャ機能を使用しているためです。ただし、ネイティブ ビデオ キャプチャでは、高品質のエンコーディングまたは低品質のエンコーディングしか使用できません。その中間が欲しいのですが、解決策は FFmpeg ライブラリを使用して、高品質のビデオを再エンコードして軽量化することだと思います。

これまでのところ、このガイドに従ってFFmpegライブラリを構築できました: http://www.roman10.net/how-to-build-ffmpeg-for-android/仕事に。

ただし、私が見つけたものはすべて、独自のエンコーダーを作成することに関するものであるように思われます。これは、やり過ぎのように思えます。私が実際にやりたいことは、コマンド ライン形式の文字列を FFmpeg の main() 関数に送信し、ビデオを再エンコードすることだけです。ただし、メイン メソッドにアクセスできるように FFmpeg をビルドする方法がわかりません。私はこの投稿を見つけました: ffmpeg.c をコンパイルし、その main() を JNI 経由で呼び出します。また、彼は私が必要以上にコンパイルしているようです。私は自分のアプリケーションをできるだけ軽量に保ちたいと思っています。

いくつかの追加の指示は非常に役立ちます。ありがとうございました。

4

1 に答える 1

1

Android NDK では、通常の意味でアプリケーションに main() がないため、やりたいことを直接実行することはできません。ただし、FFmpeg の main() を自分で呼び出して、必要なすべてのパラメーターを提供することはできます。パラメータを取得するには、次の 2 つの方法があります。

  1. Android アクティビティは、作成後に Intent を受け取ります。アクティビティの開始時にインテントを介してパラメーターを渡し、次のように抽出できます。

    Intent CommandLine = this.getIntent();
    Uri uri = CommandLine.getData();
    
  2. SD カードのどこかに作成したファイルからパラメーターを読み取り、FFmpeg に渡すことができます。

于 2012-09-13T08:24:37.150 に答える