web-dev-qa-db-ja.com

FFmpegよりもLibavを選択するのはなぜでしょうか。それとも違いはありますか?

私が見たものから、Libavのavconvffmpegの後継者になると考えられているように私には見えます - それは正しいですか?

それが本当なら、なぜそれはそうでしょうか? libavは、正確には何をしているのですか、そしてなぜffmpegよりもそれを選択したいのですか?

Ubuntu 12.04.1 LTSをVMにインストールしている間にこの「問題」に遭遇し、ffmpegをインストールしたときにmit ffmpegは廃止予定であることを伝えるメッセージを出しました。

avconvを使用すれば、ffmpegに応じて自分のスクリプトをlibavに簡単に移行できますか。私は主にメタデータを書き、音声変換をするためにそれを使っています(wav、flac、vorbis、mp3、aac)。

70
burzum

まず始めに ffmpeg、libav、およびavconvの違いと関係を教えてください 。混乱の多くは次の結果です。

  1. FFmpegとlibavの各プロジェクト、およびそれぞれのコマンドラインツールのffmpegavconvを区別しないユーザー。
  2. ユーザーがlibavのffmpegを使おうとすると、あまりよく知られていないメッセージが表示されます。

FFmpeg対ffmpegおよびlibav対avconv

  • FFmpegはプロジェクト名です。 ffmpegは、それらのコマンドラインツールの名前です。
  • libavはプロジェクト名です。 avconvは、それらのコマンドラインツールの名前です。しばらくの間、libavはffmpegも持っていました。

"ツール"が議論されているときにユーザーはしばしば "プロジェクト"と考える...

文句の少ないメッセージ

だから、私たちが だれに教えてくれるか... リンクから学んだように、libavがFFmpegからフォークしたとき、彼らは一時的に彼らのバージョンのffmpegも供給しました。 libavのメンバーとして、DebianとUbuntuのffmpegメンテナはそれからlibavを使うようにディストリビューションを切り替えることにしました。 libavの観点からすると、これは彼らの最善の動きでした。大規模なユーザーコミュニティにフォークを使わせることです。

Libavがffmpegのバージョンと名前を変更したツールavconvの両方を提供したとき、Ubuntuは移行期に切り替えました。ユーザーがlibavのffmpegを使用しようとすると、次のメッセージが表示されました。

This program is not developed anymore and is only provided for compatibility.  
Use avconv instead (see Changelog for the list of incompatible changes).

この場合、メッセージに記載されている "ffmpeg"はlibavの一時的なバージョンで、後で削除されました(メッセージと同様に)。 FFmpegとffmpegの違いを覚えていますか?もちろん、このメッセージは、プロジェクトとツールを明確に区別していない多くのユーザーを完全に混乱させました。特に、Ubuntuのユーザが自分のディストリビューションでスイッチャルーを行っていることに気付いていなかったユーザ、またはlibavについて聞いたことがないユーザ。 libavがユーザーにこれを考えさせることを意図していたかどうかはわかりませんが、おそらくこの副作用を楽しんでいました。

一部のUbuntuユーザーは、このメッセージは誤解を招くものであり、後で変更されたと考えていました。

***THIS PROGRAM IS DEPRECATED***
This program is not developed anymore and is only provided for compatibility.  
Use avconv instead (see Changelog for the list of incompatible changes).

私の意見は少し改善されていますが、それが十分に明確ではないように感じます。

どちらを使いますか?

誰がどれを使うべきかあなたに言うことができません。ユーザにとっての主な違いは、FFmpegはlibavからの多くのコミットをマージすることですが、libavはFFmpegが存在しないこと、そして時折FFmpegからチェリーピックをするように思われるのでそれは相反的ではありません。

普通のユーザーにとっては、大きな違いはないはずです。 FFmpegを使いたいUbuntuユーザーのためには、 FFmpegとx264 をコンパイルするには、 を使ってコンパイルできます。 Jon SeverinssonのFFmpeg PPA 、または FFmpegダウンロード ページからリンクされた単純な静的バイナリを入手してください。

詳細については、 FFmpeg/Libavの状況 を参照してください。

93
llogan

更新(2016年初め)

  • オッズはffmpegを支持しています。ほとんどのディストリビューションはffmpegに戻って/戻ってきています( GentooDebian
  • Ffmpegの実用的な利点の1つは、多くのプラットフォームでバイナリが利用できることです。静的libs /動的libs/binariesのためのグーグルは、ffmpegのためのlinux、mac、windows、iosおよびAndroidのために良い結果をもたらします、一方、私はlibavのためのlinuxとwindowsビルドしか見つけることができませんでした。 C/makefileの経験がほとんどない場合、これは重要なポイントになります。

現在の状況(2015年半ば)

FFmpegに固執するほうが良いようです。全体的な状況はかなり厄介で醜いです。私は数日前にフォークで読み始めました。すべてのドラマを無視して、これが事実であるように思われるものです:

  • Libmavはそうすることに消極的ですがFFmpegはlibavからの変更セットを組み込みます( debianの議論 を参照)
  • Chromeはffmpegを使用しており、Googleはそれを安全にすることに真剣な努力を注いでいます。 libavもこれらの変更を取り入れていますが、ペースは遅くなっています( googleブログ投稿
  • FFmpegはできる限り多くのコーデックを保存しようとしますが、libavはいくつかドロップしました( libavメーリングリストlibav dev からの投稿)
  • FFmpegコミュニティはlibavよりも大きく、最も熱心な開発者(michael niedermayer)はFFmpegにとまっています( commit stats
  • FFmpegのためのubuntu/debianメンテナはlibavフォークの一部でした。彼らはffmpegが廃止予定であることを示唆して、いくつかのコマンドラインツールに廃止メッセージを追加しました。これは多くの混乱を引き起こしました。 debianubuntu の両方がffmpegに戻っています。
31
kritzikratzi

ここ に行くと 、最新のアップデートは2012年9月(数ヶ月前)になります。

これは this が現時点ではUbuntuとDebianに固有のものであることを示しているようです。

しばらく前に、ffmpegはffmpegとlibavの名前で2つのフォークに分割されました。

Debianはそのディストリビューションの中でlibavフォークをたどっていて、今後のアップロードではバイナリ/ usr/bin/ffmpegは/ usr/bin/avconvに置き換えられます。

私が知る限りでは、すぐに切り替える必要はありませんが、Winffはどちらかのバイナリを許可するようにアップグレードされるべきです(Debianの観点からは、avconvを優先します)。私はあなたが設定でバイナリの場所を設定できることを知っています、しかし私は場所が設定されていれば、Winffは適切なバイナリを見つけることができるはずだと思います。

将来的には、Windowsや他のディストリビューションもこの問題に見舞われる可能性があると思います。

それがまったく同じかどうかについてのあなたの質問に答えるために:

ローカルチェックアウトで正しいバイナリのチェックを実装しましたが、 1 を読むと、avconvとffmpegの間に矛盾があることがわかります。プリセットファイルを調整する必要があり、特にコマンドラインの作成方法を変更する必要があるため、この問題はさらに大きくなります。入力ファイルを操作するオプションは、入力ファイル "-i"の前に指定する必要があります。

注意してください、これはWindowsのバージョンに固有の場合があります。これはLinuxバージョンに関して投稿されました。

FFmpegのオーディオ/ビデオ変換ツールは現在AVConv(私の考えではより良い名前)として知られています。そのため、 "ffmpeg"コマンドラインツールは廃止され、 "avconv"を使用する必要があります。私が気づく限り、すべてのパラメータは同じままであったが、さらなる調査がなされるべきである。いくつかの修正はCISで行われる必要があります。

タスク:

CISを実行するマシンにAVConvをインストールしてください。通常avconvはffmpegを更新しているように見えます(Ubuntu上で動作しました。Debian用にテストされていません)。 cis/api/ffmpeg.py、クラスFFmpegTranscoder、フィールドprog_binの「ffmpeg」を「avconv」に置き換えます。これは、変換ツールの実行可能ファイルを表します。 "FFmpeg"または "ffmpeg"を含むファイル名、クラス名、メソッド名、変数名などをAVConvを含むようにリファクタリングします。 EclipseのようなIDEはこれを自動的に行うことができます。テスト!問題に気づいたら、デバッグしてください。

9
Everett