DVDビデオの映像をFlashで再生できるようにするためのメモ

なんか今さらなのだが、今までやったことがなく四苦八苦したので、忘れないようにメモしておく。
お客さんから預かったDVDビデオ(いわゆる普通のプレーヤーで再生できるもの)の映像を、Web上のFlashコンテンツとして公開するまでの手順。
なお、DVDビデオが関係するのは手順1だけ。手順2以降は、他の一般的な動画形式の場合にも当てはまる。

専門外のトピックなので的外れなことを書いている可能性がありますがご容赦を。

  1. HandbrakeでDVDをリップ
  2. 今回BGMをつけよというお達しであったのでiMovieでBGMをつける。とりあえずQuickTime形式(mov)で書き出し。メニューの「共有>QuickTimeを使って書き出す...」で「ムービーからQuickTimeムービー」を選び、「オプション」>ビデオの「設定」とたどる。「標準ビデオ圧縮設定」ウィンドウが開くので、「圧縮の種類」を「H.264」に。その他の設定は後述のメモを参照。
  3. Flash Media Encoderで、書き出したmovファイルをflv形式に変換。
    • エンコード設定はプリセットからWeb用の適当なのを選ぶ。もしくは後述のメモを参照。
  4. Flash CS4で新規書類をつくり(サイズはとりあえず適当でOK)、「ファイル>読み込み>ビデオの読み込み...」でウィザードに沿って読み込み。ソース動画の指定では、例えば同じフォルダ内にflvを置いたなら「./hoge.flv」とすればOK。
    • ステージのサイズは動画サイズにあわせて適宜設定。コントロール(再生とか音量とか)を映像の下に置くか映像に重ねて(自動表示/非表示)置くかで高さは変わってくる。
    • ソース動画の指定方法次第では、設定値が「file://hoge/fuga/piyo.flv」のようにローカルファイルのパスになってしまうことがある。このままパブリッシュしてアップすると、動画が見つからずに何も表示されないという事態となるので、かならず自分自身(swfファイル)がいる場所から見てパスが通っていることを確認する。もしくは絶対パスでの指定とする。
  5. コンポーネントインスペクタで、適宜コントロールの体裁を整えパブリッシュ。
    • フルスクリーン再生ではFlash Player 9以上が必要。そうでなければFlash Player 8以上でおk。ちなみにエンコードする動画が固定ビットレート(CBR)でよいなら、Flash Player 7でも。
    • Ver.8以下でフルスクリーンに近いことをしたい場合はjavascriptでウインドウ最大化。HTML内のswfサイズ指定は縦横100%に。

また以下は、iMovieFlash Media Encoderで、エンコード設定をカスタマイズする必要がある場合のメモ。動画が重い、画質が悪い等、エンコード結果が思わしくない場合は役に立つかも。

エンコード設定をカスタマイズするときのメモ

  • 容量は「ビットレートbps) * 秒数」が、ほぼ出来上がりの出力ファイルのサイズ。なのでビデオ・オーディオともに予想ファイルサイズを見ながらビットレートを設定。想定回線速度のbpsを基準に、かなり余裕を見ておくのが吉。実効速度は半分や3分の1以下になることが普通だし、後述のVBRの場合は設定したビットレート以上のビットレートとなることが(瞬間的に)よくあるため(ex. 想定回線速度が1〜2Mbpsなら200〜350Kbps等)。
  • 可変ビットレートVBR)にすること。Flash Media Encoderでは、Flash Player 7向けのプリセットとか選ばない限りはVBRになってる。iMovieではVBRかCBRを選ぶ場所がない(デフォルトでVBR)。
  • VBRでは、動きの無いシーンでは低ビットレートに、動きの激しいシーンでは高ビットレートエンコードするため全編とおして品質が一定となる。さらにVBRの中でも、いったん全編スキャンして再度エンコードする2Passエンコードの場合は若干エンコード時間が伸びるが品質は高い。Flash Media Encoderでは、2Passの場合、最低ビットレートと最高ビットレートの幅を%で設定できるので、望む結果が得られないときはいじってみるべし。iMovieでは「QuickTimeを使って書き出し」のビデオ設定画面で、「エンコーディング」を「最高品質(複数回実行)」がそれに当たる。
  • 可変ビットレートの反対は固定ビットレート(CBR)。CBRではほとんど映像が動かないシーンでも、激しく動くシーンでも同じデータ量を費やすため、必要以上に高画質なシーンがある一方で、動きの激しいシーンでは低画質となる。
  • フレームレート(fps)は低くてもWeb用としては十分(12fpsとか)。ただしソースのfpsをヘタにいじると残像が残るようなエンコードがなされて(静止画でいうとアンチエイリスがかかりすぎたイメージ)、見た目の品質が落ちる。なんか変にぼやけた出力となるときはfpsの設定を疑ってみるとよいかもしれない。

雑感など

  • オーディオが主役のコンテンツでなければ、オーディオのビットレートはかなり落としてもよさそう。今回の場合は、モノラルの32Kbpsでも全然いけると思った。CDをリップするのとは違うのだから256とか128は不要。ただしあんまりこもったような音になると映像まで悪く見えるのでそのあたりはさじ加減。
  • VBRの2Passエンコードを行えば、480px * 360px の中サイズの画角で、200Kbpsでもかなり十分な出力が得られた。子供が動きまわるような動きの激しいコンテンツではなかったというのももちろん大きい。
  • 最初なにも考えずに、3分の映像を、ビデオ=200Kbps/VBR/1Pass、オーディオ=128Kbpsでエンコードしたら、8.5MB。これじゃいかんと思い直し、ビデオ=200Kbps/VBR/2Pass、オーディオ=32Kbpsにしたら、6MBまで軽量化できた。音質はそれなりに低下したが、画質はかなり向上した。静止画チックなシーンが多い映像だったので、2Passの最低ビットレートと最高ビットレートの幅は、大きめにとった。
  • 同じ動画をzamzarでwmv変換したのだが、30MB近い動画が出来上がってきてちょっと萎えた。これまでも15秒や30秒の動画をwmv変換する際に利用していたのだが、分単位の尺になるとさすがにキツイ。一概にwmvが悪いという問題でもなさそうだが、やはり各種設定を自分で行うというのは大事だと思った。
  • DVDのリッピングのところは正直あっさり行き過ぎて知識が薄いなと思う。まぁ、またいつかハマったらまた調べることにしよう。

以上、いろいろと理屈を(まがりなりにも)理解しながら、すこしずつ動画の品質が向上し、すこしずつファイル容量が減っていく様を見るのはなかなか楽しい体験だった。