フリーな動画フォーマット、Ogg Theora。こないだ晴れてバージョンが1.0になったので注目を浴びている。いまどきはだいたいMP4(H.264/AAC)が良いとは思うが、永続的に保存する場合はフリーなものという選択肢もある。H.264もいつまで主流か分からないしね。
TheoraはWindows用のコーデックを入れればメディアプレイヤーで再生できるようになる。H.264のMP4はffdshowを入れれば同様にメディアプレイヤーでの再生が可能(ffdshowの新しいのはTheoraにも対応してるのかな?)。デジカメのMotion JPEGのaviは何も入れなくても再生可能。
というわけで、圧縮率を比較してみよう。デジカメを買い替えて、時代によって動画の構成が変わるので、それぞれについて、全部エンコードしてみた。
theoraはffmpeg2theoraでオプションなしでエンコード。H.264は以下のようにエンコード。
# ffmpeg -i $input -f mp4 -vcodec libx264 -qscale 20 -acodec libfaac -ar 8000 -ab 32 $outp
ut
H.264の動画はこの設定では音声がかなり不自然になってしまうような…。実際に使うためにはオプションを調整することになるだろうけど、サイズの比較には使えるんじゃないかと思う。
元データ(motion JPEG) | Theora | H.264 | |
EXILIM時代 | 35.54MB | 24.88MB(70%) | 17.39MB(49%) |
Optio時代 | 70.93MB | 22.55MB(32%) | 18.32MB(26%) |
GRD時代 | 3763.20MB | 1458.04MB(39%) | 705.16MB(19%) |
GRD時代のファイルがやたらに大きいのは、子供をたまに撮るようになったということと、解像度とFPSが上がったため(320×240/15FPS → 640×480/30FPS)。目安的には、1分で100MBくらいになるという印象。
サイズはやはりTheoraよりもH.264のほうがかなり小さくなる。Theoraもmotion JPEGよりはだいぶ良いと思います。
エンコード時間に関しては、H.264がGR時代の動画をほぼ1倍(動画の長さ=エンコード時間)、悪く見てもせいぜい1.5倍の時間でエンコードできているのに対し、Theoraはだいたい3倍くらいと遅い。これはちょっと分が悪いな。
しかし全部エンコードするのには大変な時間がかかりましたよ…
gzipとbzip2を比較するならともかく、非破壊圧縮同士を比較しても、エンコーダのデフォルト設定を比較することにしかならないと思います。
動画の壊れ方(?)の指標ってどう求めるのですかね~。
オリジナルのmotion JPEGの絵と、エンコード→デコードした後の絵をそれぞれ対応するフレームごとに比較、差分を見てスコアにしていけばいいのかな…
×非破壊→○破壊でした。。。
その評価方法で良さそうですね。他のサイトでは、同じビットレートにしておいて「こっちの方がきれい」などと言っているのをよく見かけます。