マイコミジャーナル

知りたい!を刺激する総合専門サイト


  1. パソコン

  2. アップル
  3. コラム
  4. OS X ハッキング!

【コラム】

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が生成するファイルの構造にあるのか……? 現時点では不明なため、確認次第当コラムにて報告することにさせていただきたい。


画像で見るニュース(パソコン)

スペシャル

  • Windows 7 大百科
  • パソコン/ビジネスPC メールマガジン創刊のお知らせ

特別企画

注目情報


特設サイトの必見情報



注目サイト