[[PageNavi(NavigationList)]]
=== H.264エンコーダ「x264」 ===
[http://www.videolan.org/developers/x264.html x264]は、GPLで提供されているH.264エンコーダだ。WindowsやMac OS X、Linux/UNIXで動作し、またエンコーダエンジンとしてさまざまなアプリケーションで利用されている。
x264の公式サイトではソースコードの開発版スナップショットのみが配布されており、x264のWindows向けバイナリは[http://x264.nl/ http://x264.nl/]にて配布されている。また、Gitによるソースコードの取得も可能だ。
==== Windows環境でのコンパイル ====
x264の配布ソースコードには、「build\win32」ディレクトリ以下にVisual Studioのプロジェクトファイルが含まれている。こちらをVisual StudioのIDEで開き、コンパイル設定を行えば良い。
なお、筆者が試したバージョンのソースコードでは、「C99」と呼ばれる、1999年に策定されたCの新標準規格内で採用された機能が用いられている。そのため、C99に対応していないVisual C++ではそのままではコンパイルできなかった。インテル コンパイラーでは、「/Qstd=c99」オプションを使用することでC99サポートを有効にでき、問題なくコンパイルが可能である。
また、x264ではSSE2を利用するためのアセンブラで書かれたコードが含まれているのだが、このコードはGCC向けに記述されており、そのままではインテル コンパイラーで利用できない。そのため、Visual C++やインテル コンパイラーでコンパイルしたバイナリは、GCCでコンパイルしたバイナリよりもパフォーマンスが低下してしまう問題がある。
そのほか、コンパイルを行うために加えた修正点は以下のとおりだ。
* muxsers.cの296行目「fprintf(stderr, "Bad header magic (%"PRIx32"= %s)\n",」を「fprintf(stderr, "Bad header magic (\"PRIx32\"= %s)\n",」のように修正
* encoder\looahead.cがプロジェクトファイルとして登録されていなかったので、このファイルを「libx264」プロジェクトに追加
==== Linux環境でのコンパイル ====
Linux環境でのx264のコンパイルでは、configureスクリプトを使用してコンパイル設定を行っている。そのため、次のようにconfigureを実行するだけでコンパイルが可能だ。
{{{
$ CC=icc CFLAGS="<コンパイルオプション>" ./configure
}}}
==== パフォーマンス比較(Linux版) ====
パフォーマンス比較には解像度720×480、約7秒の動画ファイルを用い、このファイルをデフォルト設定でエンコードした場合のフレームレートを比較した。結果は下記の'''表10'''のとおりだ。また、コンパイルオプションについてはデフォルトのものを用いている。結果を見ると、インテル コンパイラーで作成したx264のほうが、若干ではあるがフレームレートが高くなっている。
{{{ html
<h6>表10 x264のパフォーマンス比較</h6>
<table class="wikitable" border="1">
<tr><th>コンパイラ</th><th>平均フレームレート</th></tr>
<tr><td>インテル コンパイラー</td><td>63.58fps</td></tr>
<tr><td>GCC</td><td>61.98fps</td></tr>
</table>
}}}
=== AACエンコーダ「FAAC」 ===
現在よく使われている音声圧縮コーデックの1つに「AAC」がある。AACは地上デジタル放送や、アップルのiTunesのデフォルトコーデックとして採用されているコーデックで、低いビットレートでも比較的高音質なのが特徴だ。AAC形式での音声圧縮を行うAACエンコーダはいくつか存在するが、オープンソースで提供されているものとして「[http://www.audiocoding.com/ FAAC]」がある。
FAACはコマンドラインツールおよびライブラリとして提供されているが、オープンソースで提供されているためほかの動画/音声エンコーダツールなどでも多く採用されている。
==== FAACのコンパイル(Windows環境) ====
FAACのソースコードは、[http://sourceforge.jp/projects/sfnet_faac/releases/ ダウンロードページ]から入手可能だ。本記事では、2009年2月11日に公開された「faac-1.28.zip」を使用した。このソースアーカイブを展開すると、「frontend」ディレクトリ以下にVisual Studio向けのプロジェクトファイル「faac.sln」が含まれているので、これをVisual Studioで開いてコンパイル設定を行えば良い。
==== パフォーマンス比較 ====
約4分のWAVE形式音声ファイルをFAACのデフォルト設定でエンコードし、エンコードが完了するまでの時間を測定した。結果は次の'''表11'''のとおりだ。FAACについてもLAMEと同様、インテル コンパイラーを使用することでパフォーマンスの向上が確認できる。
{{{ html
<h6>表11 FAACのパフォーマンス比較</h6>
<table class="wikitable" border="1">
<tr><th>コンパイラ/コンパイルオプション</th><th>エンコード時間</th></tr>
<tr><td>Visual C++(/O2)</td><td>10.7秒</td></tr>
<tr><td>インテル コンパイラー(/O3、/Qip)</td><td>8.8秒</td></tr>
</table>
}}}
[[PageNavi(NavigationList)]]