さまざまな理由から、効率を犠牲にすることなくタスクを達成するという点で、マルチメディアは簡単でしたし、決して簡単ではありません。ffmpeg は、日々改善するための努力です。さまざまな形式のコーデックとコンテナーをサポートしています。
このライブラリをどのように使用するかという質問に答えるために、ここに書くのはそれほど簡単ではないと思います。しかし、私は次の方法であなたを導くことができます.
1) ソースコードの ffmpeg ディレクトリ内に、output_example.cまたはapi_example.cがあります。ここでは、エンコード/デコードが行われるコードを確認できます。ffmpeg 内のどの API を呼び出す必要があるかがわかります。これが最初のステップになります。
2) Dolphin プレーヤーは、Android 用のオープン ソース プロジェクトです。現在、バグがありますが、開発者は継続的に作業しています。そのプロジェクトでは、調査を続行するために使用できるセットアップ全体の準備が整いました。code.google.com からのプロジェクトへのリンクを次に示します。または、ターミナルでコマンド「git clone https://code.google.com/p/dolphin-player/」を実行します。P および P86 という名前の 2 つのプロジェクトが表示されます。どちらでも使用できます。
私が提供したい追加のヒントは、ffmpeg コードをビルドするときに、build.sh 内で、使用する形式のマルチプレクサ/デマルチプレクサ/エンコーダ/デコーダを有効にする必要があることです。それ以外の場合、対応するコードはライブラリに含まれません。これに気付くのにかなりの時間がかかりました。だからあなたとそれを共有することを考えました。
いくつかの基本:
ビデオ ファイルと言う場合、例: avi、オーディオとビデオの両方の組み合わせです。
動画ファイル=動画+音声
ビデオ = コーデック + マルチプレクサ + デマルチプレクサ
コーデック = エンコーダー + デコーダー
=>ビデオ = エンコーダー + デコーダー + マルチプレクサー + デマルチプレクサー(Mpeg4 + Mpeg4 + avi +avi - avi コンテナーの例)
オーディオ = コーデック + マルチプレクサ + デマルチプレクサ
コーデック = エンコーダー + デコーダー
=>オーディオ = エンコーダー + デコーダー + マルチプレクサー + デマルチプレクサー(mp2 + mp2 + avi + avi - avi コンテナーの例)
コーデック (名前は en*co*der/*dec*oder の組み合わせから派生したもの) は、フレームのエンコード/デコードに使用されるアルゴリズムを定義するフォーマットの一部です。AVI はコーデックではなく、Mpeg4 のビデオ コーデックと mp2 のオーディオ コーデックを使用するコンテナです。
マルチプレクサ/デマルチプレクサは、エンコード/デコード中に使用されるファイルからフレームを結合/分離するために使用されます。
したがって、avi 形式を使用する場合は、ビデオ コンポーネント + オーディオ コンポーネントを有効にする必要があります。
たとえば、avi の場合、次を有効にする必要があります。mpeg4 エンコーダー、mpeg4 デコーダー、mp2 エンコーダー、mp2 デコーダー、avi マルチプレクサー、avi デマルチプレクサー。
ふぇぇぇぇぇぇぇぇぇぇぇ…
プログラム的には、build.sh に次のコードを含める必要があります。
--enable-muxer=avi --enable-demuxer=avi (Generic for both audio/video. generally Specific to a container)
--enable-encoder=mpeg4 --enable-decoder=mpeg4(For video support)
--enable-encoder=mp2 --enable-decoder=mp2 (For Audio support)
これ以上あなたを混乱させないことを願っています...
ありがとう、助けが必要な場合はお知らせください。