web-dev-qa-db-ja.com

ffmpegとlibavの違いは何ですか?また、どちらがアプリケーションに使用されているかを確認する方法は何ですか?

私はいくつかのgstreamerベースのアプリケーションと他のストリーミング関連のものを使用していますが、混乱しました:libavとffmpegの違いは何ですか?

それらが何であり、どのように異なるのか説明が見つかりませんでした。さらに多くの人がffmpegと呼ばれるツールを持っていますが、他の人も同じものを持っています。また、それらのプロジェクトのロゴも同じです。さらに悪いことに、それらを使用する外部アプリケーションでさえ、それらの名前を間違えます(gstreamer-0.10はffmpegを指し、gstreamer-1.0はlibavを指します)。

どのライブラリが本当に必要で、アプリケーションによって使用されているかを見つける簡単な方法はありますか?プロジェクトが分割される理由に技術的な(非政治的なソフトウェアライセンスのナンセンスな)違いはありますか?プロジェクトをいつ使用する必要があるかを知っておく必要がありますか?

更新:コメントの誰かが、ライブラリと有用な情報の両方の履歴に関連する質問へのリンクを配置しました。しかし、私の質問が完全に重複しているとは思えません。

  1. ライブラリを検出する方法自体を求めています。
  2. リストまたはそのようなものは、ライブラリが互いにどのように異なるかを警告または示唆します。どちらが良いかについての意見ではなく、ライセンスコミュニティが互いにどのように異なるかでもありません。
2
IBr

昔、FFmpegというプロジェクトがありました。 FFmpegプロジェクトは、ffmpegというプログラムを作成しました。プロジェクトの初期のある時点で、FFmpegは非常に複雑であるため、他の人がアプリケーションで使用できるように、より小さなライブラリに分割する必要があると判断されました。これらのライブラリはlibav *として知られるようになりました。それらには、livavformat、libavcodec、libavutilなどが含まれます。 ffmpegアプリケーションは、コマンドラインを介してこれらのライブラリと対話するための単なる方法でした。

ある時点で、FFmpegの一部の寄稿者は、プロジェクトの管理方法を気に入らなかったため(安定性と下位互換性を重視せずにリリースを増やしたいと思いますが、間違っている可能性があります)、離脱しました。彼らは一貫性のないAPIの修正、新しいコーデックの追加などを開始しました。彼らはavconv実行可能ファイルを置き換えるためにffmpegと呼ばれるCLIフロントエンドをリリースしました。システムにffmpegが表示されることを期待していた多くのソフトウェアが壊れました。そのため、avconv実行可能ファイルの名前はffmpegに変更されました。

現在、Libavプロジェクトはlibav *ライブラリとうまく連携していました。そのため、FFmpegプロジェクトはLibavによって行われた変更を取り入れ始めました。したがって、線をもう少しぼかします。

だから、あなたの質問に答えるために。政治について考える必要はあまりありませんが、一部のコマンド/ APIは2つでわずかに異なる場合があります。ただし、これはそれほど問題にはならないはずです。同じものの異なるバージョンと考えることができます。

7
szatmary