LibavからFFmpegへ
Ubuntu 15.10ではLibavがリポジトリーから削除され、FFmpegがインストールされるようになりました。LibavとFFmpegの役割
いずれのソフトウェアも、動画や音声などで使用される様々なフォーマットのエンコードやデコードを行うマルチメディアフレームワークです。一般的なデスクトップユーザーから見れば、動画や音声を再生する時に利用されるソフトウェアです。
メディアプレーヤーのバックエンドで動作します。
袂を分かち5年弱
LibavはFFmpegからフォークしたプロジェクトです。フォークのきっかけは、FFmpegプロジェクト内で起きたプロジェクトの管理方針やポリシーに対する考え方の相違でした。
それを契機として、2011年3月にLibavプロジェクトが発足しました。
FFmpegを利用していたDebian及びUbuntuはLibavを支持し、FFmpegからLibavへ移行することになりました。
Libav採用後、UbuntuはユーザーにFFmpegからLibavへの移行を促し、Ubuntu 14.04以降、UbuntuのリポジトリーからFFmpegを削除しました。
類似したソフトウェア
それぞれのプロジェクトが独自の進化を遂げて行ったかというとそうでもなく、お互いがお互いの変更点を取り込んでソフトウェアをリリースしていました。もちろん取り込む変更点や取り込むタイミングには差異があり、また、ソフトウェアのリリースサイクルも異なっていたため、全く同じ機能を提供するソフトウェアではありませんでしたが、ユーザーから見ると類似したソフトウェアであることに変わりありませんでした。
Ubuntu 15.04でFFmpegが復活
そんな状況の中、Ubuntu 15.04のリポジトリーにFFmpegが復活しました。ユーザーは必要に応じて、LibavやFFmpegを利用できるようになりました。
Ubuntu 15.10でLibavが無くなった
Ubuntu 15.10ではLibavが無くなり、LibavからFFmpegへ移行しました。FFmpegへ戻った理由
FFmpegへ戻った理由は、LibavよりもFFmpegの方が積極的にメンテナンスされている点です。特にセキュリティーに関する問題は、早期に対応されることが望まれます。
Libavで行われた変更や修正の大半はFFmpegへ取り込まれてきましたが、その一方で、FFmpegで行われた変更や修正の多くは、Libavに取り込まれていません。
そのため、FFmpegで修正された不具合がLibavでは修正されておらず、Libavに不具合が残ったままになっています。
また、LibavとFFmpegに同じ不具合を報告したのに、Libavでは返事がなく、FFmpegでは2日かからず対応してくれた、という状況もありました。
時を経て、FFmpegは新機能への対応も積極的に行い、機能に差が出始めます。
FFmpegで再生できるフォーマットでもLibavでは再生できないフォーマットが出てきました。
また懸案事項でもあったFFmpegのAPIが、リリース頻度が高いにも関わらずLibav並に安定してきたという点も、FFmpegへ戻る理由の一つになっています。
DebianもFFmpegへ移行する
Ubuntuの派生元であるDebianも、次期バージョンであるDebian 9(stretch)でLibavからFFmpegへ移行します。Michael氏辞任へ
11年間FFmpegでリーダーシップを取ってきたMichael氏が、2015年7月31にリーダーの辞任を表明しました。彼はフォークが起きた時の当事者の1人でした。
彼はフォークしたLibavがFFmpegに合流し、一つのチーム及びプロジェクトになることを望んでいます。
また、自分がリーダーを辞任することで、分裂したプロジェクトの統合が容易になることを望んでいます。
この件もFFmpegへの移行の後押しになっているのでしょうか。
Ubuntu 15.10のLibav
Libavはリポジトリーから無くなりましたが、リポジトリーからインストールできるすべてのソフトウェアが、FFmpegに対応しているとは限りません。Libavを要求するソフトウェアも存在します。
Ubuntu 15.10でLibavがどのように扱われるのかを見てみます。
libav-toolsのインストール
UbuntuがLibavに移行した際、ユーザーは「ffmpeg」コマンドではなく「avconv」コマンドを利用するよう案内されていました。この「avconv」コマンドを利用するには、「libav-tools」パッケージをインストールする必要があります。
「Ubuntuソフトウェアセンター」等で「libav-tools」パッケージを探しても、「libav-tools-links」パッケージしか見つかりません。
「端末」から「libav-tools」パッケージをインストールしてみます。
ポイントは以下のメッセージです。
'libav-tools' の代わりに 'libav-tools-links' を選択しています
「libav-tools」パッケージをインストールしようとすると、代わりに「libav-tools-links」パッケージがインストールされます。
このまま続行して「libav-tools-links」パッケージをインストールします。
avconvの実態
「libav-tools-links」パッケージのインストールにより、「avconv」コマンドが利用できるようになりました。「avconv」コマンドの実態を調べてみます。
「avconv」コマンドは、「ffmpeg」コマンドを指すシンボリックリンクになっていることが分かります。
というわけで
「avconv」コマンドでLibav使ってると思っていたら、「ffmpeg」コマンドでFFmpeg使ってる状態になっています。「libav-tools-links」パッケージがいつまで提供されるかわかりませんが、以下のコマンドを利用している人は、FFmpegが提供するコマンドを使用するようにしましょう。
Libav | FFmpeg |
---|---|
avconv | ffmpeg |
avplay | ffplay |
avprobe | ffprobe |