Androidでエンコーダーを構築する必要があります。カメラでキャプチャしたビデオ ストリームを にエンコードしようとしていh.264
ます。
ファイルはあるのlibffmpeg.so
ですが、使い方がわかりません。
私はこれが初めてです。誰か提案をしてもらえますか?
Android でライブラリを使用するには、コンポーネントFFMPEG
と同じものを統合する必要がありOMX
ます。
ffmpeg
コンパイルと生成についてOMX
は、次のリンクを参照できます: FFmpeg on Android
コンポーネントの準備ができたらOMX
、同じものを に含めて、同じものを Android に統合する必要がありますmedia_codecs.xml
。特定のエンコーダーを常に呼び出したい場合は、コーデックがリストに登録されている最初のコーデックであることを確認してください。
エンコーダーについては、いくつかの重要な点を考慮する必要があります。
1 つ目は、OMX
システムを最適化する場合、ソース (カメラ、サーフェス、またはその他のソース) からエンコーダ コンポーネントの入力ポートへのフレームのコピーを回避したい場合があります。したがって、コーデックはメタデータを介したバッファの受け渡しをサポートする必要があります (参照: http://androidxref.com/4.2.2_r1/xref/frameworks/av/media/libmediaplayerservice/StagefrightRecorder.cpp#1413 )。このトピックに関する詳細情報が必要な場合は、別の質問を提起してください。
2. エンコーダーは、OMX
標準のインデックスといくつかの新しいインデックスをサポートする必要があります。たとえば、 では、 でサポートされMiracast
ている新しいインデックスprependSPSPPStoIDRFrames
が導入されていgetExtensionIndex
ます。参考までに、 http://androidxref.com/4.2.2_r1/xref/frameworks/av/media/libstagefright/ACodec.cpp#891を参照してください。
前述のインデックスに加えて、エンコーダーはブール値をenableGraphicBuffers
持つ新しいリクエストも取得します。FALSE
これら 2 つのインデックスの最も重要な点は、OMX
これら 2 つのインデックスが呼び出されたときにコンポーネントが失敗しないようにすることです。
Stagefright
これらの変更により、エンコーダーをフレームワークに統合できるはずです。