記事一覧:2010年07月28日

iPhone 4およびiPad向け動画をHandBrakeで作る

 先日、私の手元にもiPhone 4が到着。ということで、一部から要望を受けていたHandBrakeのiPhone 4用プロファイルをちょっと調査・研究してみた。

 iPhone 4の動画再生機能については、Webサイトにその仕様が掲載されている(日本語のiPhoneページ)。ただし、日本語ページには一部誤訳というか不明瞭な表記があるたので、英語版iPhoneページを確認するほうが確実。これによると、iPhone 4の動画再生仕様は下記の通り。

  • H.264:最大720p、30fps。Main Profile(レベル3.1まで、音声はAAC-LCで最大160kbs、48kHz、ステレオ)対応。ファイルフォーマットは.m4v、.mp4、.mov
  • MPEG-4:最大2.5Mbps、640×480ピクセル、30fps。Simple Profile(音声はAAC-LCでチャンネルあたり最大160kbps、48kHz、ステレオ)対応。ファイルフォーマットは.m4v、.mp4、.mov
  • MotionJPEG(M-JPEG):最大35Mbps、1280×720ピクセル、30fps。音声はulawもしくはPCMステレオ。ファイルオーマットは.avi

 iPhone 4の画面サイズは960×640。そのため、縦に持った際は幅640に、横に持った際は幅960に自動的に拡大/縮小されて表示される。また、iPhone 4のドックコネクタ経由での出力では1024×768サイズの出力に対応している模様。

 ちなみに、iPhone 4の動画再生仕様はiPadとまったく同一のようだ。なお、iPadの画面サイズは1024×768である。

 さて、iPhone 4で動画を見る場合、わざわざ容量がかさむMPEG-4を積極的に使う必要はない。そのため、下記ではH.264についてのみ考察を行っていく。

 上記のとおり、iPhone 4はスペック上はHigh Profileには対応していない。しかし、試して見たところHandBrake 0.9.4のプリセットである「High Profile」でエンコードした動画も問題なく再生できてしまった。High ProfileとMain Profileの違いは8x8DCTブロックやカスタム量子化マトリックス(CQM)、Cb/Cr別のQP制御、モノクロ(4:0:0)対応だが、実際8x8DCT以外については、設定の難しさの割に効果は微妙なところではある(そのうえHandBrakeでは設定できない)。

 High Profile非対応という機器でも8x8DCT対応のものはあるので、iPhone 4/iPadもそうなのだろう。HandBrakeでは「High Profile向け」と表示される「Pyramidal B-Frames」については、High ProfileでもOffになっているので気にしないことにする。

 ということで、とりあえずHandBrakeでiPhone 4およびiPad向けのエンコードを行う場合、プリセットのHigh Profile設定を利用すれば問題ないようだ。

 対応する縦横サイズやビットレートに関連する「レベル」については次の機会に。

LinuxとFreeBSDのベンチマーク比較

 やや旧聞となるが、PhoronixがLinuxとFreeBSDのベンチマーク比較を行っている(Debian Linux Benchmarked Against Debian GNU/kFreeBSD � FreeBSD)。比較対象はDebian kFreeBSD 7.3、Debian kFreeBSD 8.0、Debian GNU/Linux(カーネル2.6.32)、FreeBSD 7.3、FreeBSD 8.0。

 「Debian kFreeBSD」はカーネルとしてFreeBSD、ユーザーランドとしてDebianを採用したものだ。Debian GNU/LinuxとDebian kFreeBSDはカーネルだけが異なり、またDebian kFreeBSDとFreeBSDはユーザーランドだけが異なる。これらを比較することで、ユーザーランドもしくはカーネルだけの性能比較が行える(と期待できる)点で興味深いベンチマークである。

 ベンチマーク結果であるが、gzipでの圧縮やGnuPGでの暗号化、MAFFT(分子生物学向けの核酸・アミノ酸アライメント作成ツール)、GraphicsMagickによる画像のリサイズ処理、Himeno BenchmarkについてはDebian kFreeBSDやDebian GNU/Linuxが高パフォーマンス、という結果だった。いっぽう、C-Rayでの3DグラフィックレンダリングについてはFreeBSD 7.3/8.0が高速な傾向が見られている。

 また、Debian GNU/LinuxがFreeBSDやDebian kFreeBSDよりも高速だったのはdCrawによるRAW画像の現像処理、Sudokut(数独演算アプリ)、SQLiteのインサート処理。

 このようにベンチマークごとに結果はばらばらであり、DebianのユーザーランドとFreeBSDのユーザーランドのどちらが高速か、またLinuxカーネルとFreeBSDのカーネルのどちらが高速かは単純には言えないという、なんともモヤモヤとした結論となっている。このベンチマークでは実行マシンとしてThinkPad R52とThinkPad T61を使用しているが、マシンによって結果が違うのも微妙なところだ。

ただし、マルチスレッドによるI/O処理ベンチマークについては、特にランダムWriteについてはLinuxカーネルのほうがパフォーマンスを発揮する傾向があるようだ。