遅まきながら MPEG-1 圧縮をアレコレやってみました。以下はそのときのメモです。説教ポイントは何もありません。すんません。
MPEG ムービーを生成する理由はいろいろあると思います。今では MPEG のまま編集できるソフトもありますから、単純に容量の小さなムービー形式として利用する場合もあるでしょう。ただ、ここでは不可逆圧縮の MPEG は素材としては考えていません。基本的にはテープ、あるいは無圧縮のままディスク(HDD や光ディスク)へ格納しているものをマスター素材と考えます。
もちろん、いずれ MPEG ベースですべての保存ができるようになるでしょうけどね。(2001.09.)
ムービーはでかいので圧縮します。なお、ここではすでに DV 経由、アナログ経由に関わらず、何らかの形で AVI ファイルのムービーが生成してあるものとして話を進めます。AVI の作り方については触れませんし、AVI ファイルの種類についても問いません。(基本的には DV 形式を前提に考えています。)
世間じゃ MPEG-2*1の DVD コンテンツがついに 2001年上半期のビデオコンテンツの出荷本数、売上の両方でビデオテープを抜いたと言っているのに、ここでは MPEG-1*2で圧縮します。MPEG-2 は現在広く普及しているパソコンのうち、DVD-ROM ドライブを搭載しているものでしか見ることができないので。*3
ま、この界隈の人には言わずもがななのですが、DVD とか BSデジタル放送に利用されている動画の圧縮方式。MPEG-1 の上位版と言える。
*2昔の VHS ぐらいのクオリティを目指した動画圧縮方式。等速の CD-ROM ドライブでもリアルタイムにデータを転送できるように 1.5Mbps くらいの転送レートが標準となっている。
ただし、MPEG-1 に圧縮した場合、必ずムービーの画質、音質は劣化します。目立たない程度に劣化したものであればもう一度圧縮を戻して編集してテープに書き出すこともできますが、劣化の度合いが大きいものは、どうもそれっぽい映像のようだ、くらいのレベルにしかならなかったり、かろうじてテレビで見せるためになら使えるという態度まで画質が落ちます。しかし、確実にファイルサイズは小さくなります。
そこで、MPEG-1 の圧縮を二種類用意することにしました。
一つは Video CD クオリティ(352*240)のもの。これは CD-R ライティングソフト(Toast や Easy CD CREATOR など)があれば、CD-ROM 内蔵のパソコンや DVD プレイヤーなどで再生することのできるもので、現在出回っているほとんどのパソコンで問題なく見ることができ、テレビに映し出しても問題なく見れる程度の画質を保ち、なおかつファイルサイズも小さくなります。*4(15秒 CM 1本で 2.6MB くらい。ということは CD 1枚で 1時間分録画できます。)Video CD クオリティのムービーを実際にパソコンで全画面表示で再生して、スキャンコンバータでテレビ(SONY VEGA)に映してみましたが、案外見れます。けっこうきれいです。
中国発祥の Super Video CD という規格はもう少しクオリティが高く、圧縮も MPEG 2 の VBR を利用している模様。見たことがないので詳しいことは分からないけど、クオリティは DVD > SVCD > VCD の順。
もう一つは圧縮を戻せばそのままビデオ編集ソフトで編集できる 720*480 サイズのものです。(といってもクオリティは確実に落ちています)これはどうしてもファイルサイズが大きくなってしまうのであまり手軽に持ち運べるサイズではないかもしれません。
では具体的な圧縮方法、利用方法に移ります。
今回の MPEG-1 ビデオの圧縮には Windows の TMPGenc というフリーソフトを利用します。このソフトは画質優先で圧縮を掛けるもので、フリーソフトとは思えないほどハイクオリティの MPEG ムービーを生成しますが、速度的には遅いです。Pentium III 500 MHz のマシンでもわずか 15 秒の CM を圧縮するのに 5分ほどの時間を必要とします。ざっと元のムービーの 20 倍の時間です。*5大量のムービー、長時間のムービーを圧縮するにはやっぱりハードウェアエンコードでしょうなぁ。*6
二種類のムービーを用意するということでしたが、大きいサイズの高画質の圧縮はファイルサイズを節約するために VBR(Variable Bit Rate)*7で圧縮します。この方法は、動きの少ない、つまりデータ量をあまり必要としないシーンでは少ないビットレートで、動きの大きい、つまり大量のデータを必要とするシーンでは大きなビットデートで記録するため、画質を追及しながら同時にファイルサイズを減らすことができる優れた仕掛けです。
しかし、この VBR で保存したムービーは Mac 版 QuickTime 4.1.2 では再生できません*8。QuickTime 5*9は再生できるのですが、より広範に利用できるように、CBR(Constant Bit Rate)の Video CD クオリティのムービーも用意することにしました。*10
これで 68 Mac をサポートしている最後の QuickTime であるバージョン 4.0.3 でも再生できるに違いないと思ったのだけれど、やつは 320*240 のサイズが限界のようでした。うむむ。やっぱ 68 の時代はとうに終わっていたか。。。
TMPGenc には最初から VideoCD 用に圧縮するための設定のテンプレートが付属しているのでそれを利用します。
VideoCD(NTSC).mcf というやつがそれです。このテンプレートを読み込むと
ストリーム形式 | MPEG-1 |
サイズ | 352×240 px |
フレームレート | 29.97 fps |
レート調整モード | 固定レート(CBR) |
ビットレート | 1150 kbps |
に自動的に設定されます。この辺りは調整することはできなくなります。手動で設定するとしたら
「動き検索精度」と「ビデオ詳細」タブの中の
などでしょうか。
動き検索精度が低いと動きのあるシーンの、動きのある部分について画質が落ちます。動き検索精度を上げると動きのあるシーンの画質が上がります。この設定はエンコード時間には大きく影響しますが、できあがるムービーのサイズにはそれほど影響しません。
ゴースト除去、ノイズ除去を掛けるとテレビ放送を VHS で録画したビデオなどは録画した状態よりもきれいになるくらいです。放送ではそれだけノイズやゴーストが発生しているってことです。このソフトは AVI ファイルを出力することもできるので、このソフトを使ってテープに録画したビデオをクリーンアップすることもできるかも。
オーディオの設定も、モノラル/ステレオくらいはいじれますが、いじる必要はないでしょう。
設定のポイントは
ムービーの品質を上げつつムービーファイルのサイズを小さくするために「ビットレートを固定品質モードにする」ということです。具体的には
くらいでしょうか。これは少し低めの設定かもしれません。ボーっと見ている分にはそれほど気付かないのですが、これなら絶対、という数値を出すのはなかなか難しいようです。
動き検索精度については Video CD クオリティのときと同じです。ただ、この動き検索精度を上げて改善する画質はビットレートや「品質」の設定に比べると見た目の変化は小さいと思います。動きのつながり方が変わるのですが、それよりもビットレート不足で現われるブロックノイズが減ってくれる方が見た目の変化は大きいです。
その品質の設定を変更するのはこのダイアログです。品質を上げるとムービー全体の画質を上げることができます。当然品質を上げると出来上がるムービーのファイルサイズは大きくなります。
また、全体的にはいいんだけど、あるシーンだけ特別画質が悪い、という場合は最大ビットレートを上げると効果的です。アップのシーンなんかは最大ビットレートが追いついていないとブロックノイズだらけで見れたものではありません。
この画像くらいなら3倍モードで録画したのかな?くらいのレベル。
この画像はがばっと食べる瞬間なので動きが速く、かなりブロックノイズが目立っている。
Video CD のときには気付かないことが多いのですが、さすがにこのサイズだとインターレースの残り香のような縞模様が気になります。インターレース解除をしていても、動きのある部分でちらほらと目に付くものです。24fps 化するとこのインターレースの残り香のようなものがかなりきれいに除去できます。なぜかはちょっとよく分かりません。うまい具合に補完しあってくれるんだろうと想像していますが、TMPGenc のアルゴリズムが分からないので。
また、MPEG-2 で圧縮するとこの「インターレースのようなもの」は嘘のようになくなり、実にスムーズな動画になりますが、今度はプレイヤーが自由に手に入らなくなりますし、ファイルサイズは跳ね上がります。まだ MPEG-2 を自由に再生できるほどには、多くのパソコンはマルチメディアマシンではないようです。
アニメは普通に撮影した動画と違い、線と塗りの部分にはっきり分かれるため、ブロックノイズが非常に目立ちやすい素材と言えます。
そのため、まずは TMPGenc の設定をアニメ用に切り替えます。
量子化行列の意味は分からなくてもいいです。これと「ブロックノイズをソフトにする」にチェックをつければだいぶ画質は上がります。それでもだめな場合は思い切ってビットレートを上げてみるのも手でしょう。でも、もともと MPEG の中の静止画圧縮技術はアニメーションやイラストの圧縮には向いていないような気がします。無茶な設定でエンコードしても、がっかりするかも。
ビットレートの問題もありますが、MPEG-4 のような技術の方が効果的にファイルサイズを小さくできるでしょうね。いずれ MPEG-4 も試したいです。(2001.09.現在でも十分に MPEG-4 コーデックはパソコンで楽しめます。興味がおありならどうぞ。)
Video CD サイズはフレームレートが一定なので、15秒 CM 1本でだいたい 2MB 〜 2.6MB くらいの容量に落ち着きますが、大きい方のムービーは 4〜5MB くらいに収まるものもあれば、10MB 近くにまで大きくなってしまうものもあります。大きいサイズの方はできるだけきれいに残したいので仕方ないでしょう。
Video CD クオリティの方はあまり設定することはないのですが、大きいサイズの方はあれこれいじる余地があります。
まず、ビットレート。これを大きくするとブロックノイズを除去できます。特にアップのシーン、動きの激しいシーンでは高いビットレートが求められますので、特定のシーンだけブロックノイズが目立つ場合は最大ビットレートを高くするとブロックノイズを軽減(なくす)することができます。(もちろん可変ビットレートで圧縮していることを前提にしています)
しかし、ビットレートを上げてもインターレースやノイズ、ゴーストは除去できません。それぞれの除去にはそれぞれのフィルタを利用してください。また、動きのある部分の「インターレースのようなもの」はビットレートを上げても除去できません。「インターレースのようなもの」は動きのある部分で見られるので動き検索精度を上げるとよさそうですが、いくら最大限に上げても除去できません。これを除去できるのは 24fps 化だけです。*11
できあがった MPEG-1 ムービーですが、Windows Media Player 6.4 であれば何も考えることなく両方の種類を再生できます。それ以前のバージョンはテストできる環境になかったのでちょっと分かりません。Windows Media Player 7 以降もテストしていませんが、まさか旧バージョンでできたことがいきなりできなくなったりしないでしょう。
Mac では普通は QuickTime Player を利用してムービーを見ることになりますが、(好んで Mac 版の Windows Media Player を入れないでしょう)QuickTime 4 では(Video CD サイズの)CBR ムービーしか再生できません。が、このサイズでもコンバータを通じてテレビやプロジェクタで見せる分には問題ない画質になります。
VBR のムービーは QuickTime 4 では再生できません。bbDEMUX という MPEG ムービーをビデオ、オーディオ、テキストなどの各トラックに分割するソフトを通して取り出したファイルは再生できます。また、この取り出したムービーをそれぞれ形式を変更してあげれば Premiere で編集することも可能です。なお、Windows 版の QuickTime 4 では MPEG-1 の再生はできません。
QuickTime 5 では MacOS/Windows 両方のバージョンで二種類のムービーを問題なく再生、利用できます。MPEG のデコードエンジンもよくなっているようで、滑らかに再生できます。
MPEG 形式をそのまま編集できるムービー編集ソフトもありますが、やはり基本は Premiere などの圧縮していない形式を編集するソフトですので、まずこの圧縮を元に戻します。
MPEG2AVI や FlaskMpeg などを利用します。MPEG2AVI は複数の作者による複数のバージョンがあるうえに試したところあまりまともに動かないので、現在(2001.09.)FlaskMpeg の方がいいかもしれません。しかし、FlaskMpeg は処理を終えても正常に終了することができないという致命的なバグがあります。なかなか難しいところです。(このバグは環境によっては再現しないかもしれません。)
これらのソフトは圧縮の掛かっている MPEG 形式のビデオとオーディオの両方の圧縮を解き、一つのAVI 形式として出力するものです。24fps → 29.97fps 変換などもできるので、このソフトだけで編集素材に戻すことができます。
bbDEMUX というソフトで MPEG のムービーを、ビデオ、オーディオ、キャプションなどの各トラックに分離するソフトです。取り出したトラックはそれぞれ MPEG ビデオ、MPEG オーディオなので、そのままでは編集素材としては使いにくいものです。(まったく使えないわけではありませんが)
そこでそれぞれのトラックの形式を編集素材として使いやすいものに変換します。
ビデオ部分は QuickTime Pro で取り出すことができます。DV ストリームという形式で出力すれば Premiere でそのまま編集できる形式に変換されます。
オーディオは MP3 の普及で音声変換ソフトが多数出ているのでそのどれかを使えばオーケーです。TMPGenc のテンプレートでは MPEG-1 Audio Layer II で圧縮を掛けているので、この形式を AIFF に出力できるのがいちばん望ましい動作です。ここでは最も有名な変換ソフトのうちの一つ、SoundApp を紹介しておきます。
編集するときはこうして別々に生成したビデオとオーディオを、編集ソフトでミックスして扱います。
今回は 15秒〜1分のムービーで実験したのですが、これが 30分番組となると一回の圧縮で10時間掛かるというとてつもない話になります。Video CD クオリティにするならそれでもほとんど失敗がないからいいのですが、720*480 のサイズであれこれ試行錯誤することなく、安心して圧縮するには
くらいはほしいところです。
これでなんとか寝る前に圧縮を始めたら起きたときに出来上がっている、という要領で1日1本のペースで番組を圧縮することができると思います。
しかし、問題はそれだけでは終わらず、Windows 9x では普通、2GB 以上のファイルを上手に扱えない*12ので、巨大なムービーをそのまま圧縮するのは難しくなります。そこでムービーを分割し、そのうえで「バッチエンコード」という方法を使います。
バッチエンコードは二段階の操作を必要とします。まずは個々のムービーの圧縮設定をバッチリストに追加する作業。これはこれまで行った作業と同じです 。ただ、設定し終わったら圧縮を開始するのではなく、 [ ファイル ] → [バッチリストに追加 ] を選びます。注意するのは圧縮先の名前。同じ名前にすると、前に保存したムービーが消えてしまいます。
次にこのバッチリストを元に自動的に圧縮を続ける「バッチエンコード」を開始します。
あとは待つだけ。バラバラなまま圧縮・保存したムービーが出来上がります。このバラバラのムービーをそのまま見るのもよし、連続再生機能のあるプレイヤーで見るもよし、もう一つ、TMPGenc で結合するもよし。
TMPGenc にはバラバラな保存したムービーを結合する機能があります。これを使ってバラバラのムービーを連結して1本のムービーにすることができます。
ただし、バラバラのムービーのフォーマットが違うとうまく連結できずに固まってしまいます。そんなときは VCD Checker などを使ってフォーマットを確認してみてください。フレームレートなどが違っているはずです。そんなときはフォーマットの異なっている MPEG ファイルをもう一度 TMPGenc に掛けて同じフォーマットに統一してやると連結できます。
こんなところでしょうか。
参考
ツール
ま、この界隈の人には言わずもがななのですが、DVD とか BSデジタル放送に利用されている動画の圧縮方式。MPEG-1 の上位版と言える。
昔の VHS ぐらいのクオリティを目指した動画圧縮方式。等速の CD-ROM ドライブでもリアルタイムにデータを転送できるように 1.5Mbps くらいの転送レートが標準となっている。
あと、どうも MPEG-2 のコーデックはライセンス料がいるらしいっす。そのおかげでフリーソフトでは MPEG-2 のソフトを再生できないようです。GIF といい、mp3 といい、ソフトウェアの再生そのものからお金を取ろうとするのって、個人的には反対です。再生そのものからお金を取ろうとするとコンテンツの流通を妨げてしまうでしょ。そうすっと、結局文化的には貧しくなっていくと思うんですがね。(もちろんソフトの再生に専用のハードが必要だった時代には仕方のないことでしたが。)
ま、そういうことを言うと理論ソフト屋さんが儲ける土壌がなくなってしまいますが。(mp3 の場合は著作権も絡んでるし。)理論ソフト屋の儲ける方法…なんて、エンドユーザーとしては知ったこっちゃないのですわ。わっはっは。(理論ソフト屋は専門分野での活躍を目指した方がいいように思います。技術がエンドユーザーに直結するようなものはエンドユーザーが不利益と感じてしまうのでよくないと思うのですよ。目に見えない技術に対価を払うことを当然と思うエンドユーザーはそれほど多くないと思います。)
中国発祥の Super Video CD という規格はもう少しクオリティが高く、圧縮も MPEG 2 の VBR を利用している模様。見たことがないので詳しいことは分からないけど、クオリティは DVD > SVCD > VCD の順。
圧縮プログラムの優先度を上げる、先読み用の割り当てメモリを増やす、MMX などの CPU の追加命令をフル活用するなどの設定を行えばもう少し速くなります。また、当然ながら同じ PenIII 500MHz でもバス周りやメモリ、ディスクのスピードでずいぶん変わってきます。
ただし、ハードウェアエンコーダは MPEG ムービー作り以外には利用できないので、汎用性という意味では Windows 2000 で Dual PenIII などの構成の方がいいかもしれない。値段的にはそっちの方が断然高いが、3D CG のレンダリングや音楽の編集なんかにも利用できるし、Adobe 製品もかなりストレスなく使えるだろう。そろそろ(2001.09.現在) PenIII は投売り状態に入るので、自作するならデュアルプロセッサだろうか。
普通はビットレートと言って単位時間辺りに使えるデータの大きさは決まっている。このビットレートが決まっているものを CBR(Constant Bit Rate)と呼ぶ。VBR(Variable Bit Rate)はこの大きさをそのつど変化させることができるもの。
Win 版の QuickTime 4.1.2 はそもそも MPEG 1 の再生ができない。Windows では Windows Media Player などを利用する。
QuickTime 5 は Mac版も Win版も MPEG-1 をデコードできるし、その処理能力も前のバージョンよりも高くなっているようだ。いやでなければ QuickTime 5 にアップデートしておいた方がいいかも。
これで 68 Mac をサポートしている最後の QuickTime であるバージョン 4.0.3 でも再生できるに違いないと思ったのだけれど、やつは 320*240 のサイズが限界のようでした。うむむ。やっぱ 68 の時代はとうに終わっていたか。。。
ただこれは、ムービーを再生する側の性能の問題かもしれません。Windows Media Player で再生しながらフレームレートを表示させると、本来は 30 fps のムービーなのに 24 fps ぐらいしか再現できていないことがよくあるので。エンコード時にデコーダ用のバッファ容量を設定できるが、この設定を上げると多少改善されるのでその可能性はある。ただ、バッファの容量を上げすぎるとデコーダがパンクする恐れもあるし、24fps化の方が効果が確実なのでこれ以上こだわる必要はないかも。
ファイルシステムの制限と、OS の制限と AVI の制限と、いろいろな制限がありまして、それぞれ 2GB の壁を越えられるものもあります。