【コラム】

OS X ハッキング!

152 早く来い! iPod with Videoの到着を待ちきれずにH.264エンコード(2)

    海上忍  [2005/10/24]

    届きました! 届きましたよ、新iPod!! それでもう、見まくりですよ。何を? って、あらかじめムービー化しておいたメガデモを。本当はAmigaで見るべきなのだけれど、iPodのほうが気軽に楽しめることも事実…… さすがに、FDDを振動させて曲を奏でるというAmigaらしさ爆発の"フロッピーミュージック"は実機でなければムリですが。

    さて、今回は予定どおりiPod with Video(以下、iPod-V)について。QuickTime Playerではなく、オープンソースソフトウェアの「ffmpeg」を利用したiPod-V用ムービーの作成方法を解説してみよう。

    ffmpegのインストール

    ffmpegでは、外部のコーデックを利用して動画と音声をエンコード/デコードできる。ただし、ソースコードに含まれるconfigureスクリプトを実行する際、有効にするコーデックをオプションで指定する都合上、必要なものは事前にインストールしておかなければならない。

    前回説明したとおり、iPod-Vが対応する動画コーデックはMPEG-4 VideoとH.264の2種類、音声コーデックはAAC-LCの1種類。そのうちMPEG-4 Videoはffmpegに同梱(libavcodec)されているため、特別な準備は不用だが、後二者のエンコードには外部の「x264」と「FAAC」が必要となる。

    libavcodecが対応しないコーデックは他にもある。市販のDVDレコーダで録画した番組をソースに使おうと考えているのならば、AC3デコーダの「liba52」が必要だ。また、QuickTime MPEG-4など音声ストリームにAACを用いたムービーをソースにする場合は、AACデコーダの「FAAD2」が必要となる。

    以上を踏まえたffmpegのインストール手順は、以下に示すとおり。今回はMP3エンコーダの「lame」やMPEG-4系コーデックの「XviD」は省略したが、必要に応じてインストールしておいてもいいだろう。

    x264のインストール

    $ curl -O ftp://ftp.videolan.org/pub/videolan/x264/snapshots/x264-snapshot-20051021-2245.tar.bz2
    $ tar xjf x264-snapshot-20051021-2245.tar.bz2
    $ cd x264-snapshot-20051021-2245
    $ sh configure --enable-pthread
    $ make ; sudo make install

    FAACのインストール

    $ cvs -z3 -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/faac co faac
    $ cd faac; sh bootstrap ; sh configure
    $ make ; sudo make install

    liba52のインストール

    $ curl -O http://liba52.sourceforge.net/files/a52dec-0.7.4.tar.gz
    $ tar xzf a52dec-0.7.4.tar.gz
    $ cd a52dec-0.7.4
    $ sh configure ; make ; sudo make install

    FAAD2のインストール

    $ mkdir faad2 ; cd faad2
    $ tar xzf faad2-15092004.tar.gz
    $ cd faad2
    $ vi common/mp4ff/mp4ffint.h

    348行 : void mp4ff_track_add(mp4ff_t *f);
         ↓  ↓  ↓
    348行 : static void mp4ff_track_add(mp4ff_t *f);

    $ sh bootstrap ; sh configure
    $ make ; sudo make install

    ffmpegのインストール

    $ cvs -z9 -d:pserver:anonymous@mplayerhq.hu:/cvsroot/ffmpeg co ffmpeg
    $ cd ffmpeg
    $ sh configure --enable-faac --enable-faad --enable-a52 --enable-x264 --enable-pthreads --enable-gpl
    $ make

    エンコードは高速、しかし……

    iPod-V用ムービーを自作する場合、ソースにはDVDレコーダで録画したテレビ番組(地上アナログ放送)を使う機会が多いはず。しかし、Mac OS X Tiger標準の機能ではDVD-VRフォーマットのDVDを読み取ることができないため、現状ではサードパーティー製アプリケーションの力を借りることになる。以下の解説では、MPEG-2ビデオとAC3オーディオが多重化されたMPEG-2ファイルをソースとしているが、その作成手順は割愛させていただく。

    どうにかしてMac OS XにMPEG-2ファイルを持ち込んでしまえば、後の作業はとても簡単。ffmpeg(libavcodec)にはMPEG-1/2のデコード機能が標準装備されているため、「-i」オプションでソースとして指定するだけでいいのだ。ソースに使用されているコーデックは自動識別されるため、ただMPEG-2ファイルを指定するだけでOK。

    手始めに、MPEG-4ムービーの作成方法から。「-i」以外に使用したオプションの役割を順に説明すると、「-f」はファイルフォーマット名を、「-vcodec」は生成するビデオストリームのコーデックを、「-b」はビデオストリームのビットレートを、「-s」は画面サイズを、「-acodec」はオーディオストリームのコーデックを、「-ar」と「-ab」はそれぞれオーディオストリームのサンプリングレートとビットレートを、最後に生成するファイル名、となる。

    $ ffmpeg -i LIVE.mpg -f mp4 -vcodec mpeg4 -b 800 -s 320x240 -acodec aac -ar 44100 -ab 128 LIVE-mp4.m4v

    続いてはH.264ムービーのエンコード。基本的にはMPEG-4ムービーと同じだが、ビデオコーデックに「h264」を指定することと、ビデオストリームとオーディオストリームのビットレートをそれぞれ768kbpsと160kbps以内で指定することを押さえておけばいいだろう。

    $ ffmpeg -i LIVE.mpg -f mp4 -vcodec h264 -b 640 -s 320x240 -acodec aac -ar 44100 -ab 128 LIVE-h264.m4v

    エンコードに要した時間だが、約1分45秒のソース(VIDEO=MPEG-2/720×480/8Mbps CBR、AUDIO=MP2/48kHz/384kbps)は、PowerMac G5 2.0GHz Dual/2.5GB RAM/Mac OS X 10.4.2という環境で、MPEG-4が約45秒、H.264が約1分36秒となった。単純比較はできないが、H.264エンコード(「ムービーからiPod」プロファイルを使用)に約13分45分秒を要したQuickTime Playerと比較すると、品質はともかくエンコード速度はffmpegの圧勝、といえるだろう。

    しかし、ffmpegでエンコードしたH.264ムービーをQuickTime Playerで再生すると、画面は真っ白、音声しか再生されない。iPod-Vへの転送も不可能だ。H.264をサポートするVLCでは映像が再生されるので、問題はffmpegが生成するファイルの構造にあるのか……? 現時点では不明なため、確認次第当コラムにて報告することにさせていただきたい。

    新着記事

    特設サイトの情報

      人気記事

      一覧

        イチオシ記事

        新着記事

        特別企画

        マイナビニュースマガジン