Broadband Watch logo
バックナンバー

その116「DLNAの仕組み」
[2007/03/26]
その115「ドメインとActive Directory」
[2007/03/19]
その114「ワークグループができること」
[2007/03/12]
その113「WPSの仕組み」
[2007/03/05]
その112「Gopherの生い立ちと現在」
[2007/02/26]
その111「Wikiの使われ方」
[2007/02/19]
その110「文字コードとは」
[2007/02/05]
その109「IISの生い立ち」
[2007/01/29]
その108「NASの登場と一般への普及」
[2007/01/22]
その107「HomePNAのいろいろ」
[2007/01/15]
その106「Ogg Vorbisの成り立ち」
[2006/12/25]
その105「MIDIの原理とSMFの構造」
[2006/12/18]
その104「AIFFの構造」
[2006/12/11]
その103「WAVの構造と現状」
[2006/12/04]
その102「WMAの歴史」
[2006/11/27]
その101「AACの特徴」
[2006/11/20]
その100「MP3/MPEG Audioの仕組み」
[2006/11/13]
その99「HSDPAの仕組み」
[2006/11/06]
その98「H.264・MPEG-4 AVCの特徴」
[2006/10/30]
その97「IEEE 802.16e(モバイルWiMAX)の特徴」
[2006/10/23]
その96「TIFFの特徴」
[2006/10/16]
その95「PNGの現状と今後」
[2006/10/02]
その94「GIFの構造」
[2006/09/25]
その93「10GBASEの種類(2)」
[2006/09/11]
その92「10GBASEの種類」
[2006/09/04]
その91「GbEのいろいろ」
[2006/08/28]
その90「JPEGの特徴」
[2006/08/21]
その89「DivXの広がり」
[2006/08/07]
その88「MPEGの仕組み」
[2006/07/31]
その87「WMVのこれまで」
[2006/07/24]
その86「AVIの生い立ちとそのコーデック」
[2006/07/10]
その85「QuickTimeの変遷」
[2006/07/03]
その84「Realのこれまでと今後」
[2006/06/26]
その83「ShareとWinny」
[2006/06/19]
その82「DOCSISの仕組み」
[2006/06/12]
その81「SQLインジェクションの流れ」
[2006/06/05]
その80「RSSの動作」
[2006/05/29]
その79「Skypeの仕組み」
[2006/05/22]
その78「BitTorrentの特徴と今後」
[2006/05/15]
その77「Winnyの仕組みと現状」
[2006/05/08]
その76「WinMXの特徴」
[2006/04/24]
その75「Gnutellaの歴史と構造」
[2006/04/17]
その74「Napsterの歴史」
[2006/04/10]
その73「P2Pのいろいろ」
[2006/04/03]
その72「IEEE 802.11nの動向」
[2006/03/27]
その71「ActiveX Scriptingの動作」
[2006/03/20]
その70「Ajaxの仕組み」
[2006/03/13]
その69「DHTMLの動作」
[2006/03/06]
その68「Scriptの定義」
[2006/02/27]
その67「JavaScriptの仕組み」
[2006/02/20]
その66「Javaの動作」
[2006/02/13]
その65「RFCのプロセス」
[2006/02/06]
その64「ActiveX DocumentとActiveX Controlの違いと共通点」
[2006/01/30]
その63「ActiveX Controlの機能」
[2006/01/23]
その62「ActiveXを構成するもの」
[2006/01/16]
その61「Cookieの仕組みと用途」
[2005/12/26]
その60「malwareとその分類」
[2005/12/19]
その59「rootkitの動作」
[2005/12/12]
その58「CSSの役割」
[2005/12/05]
その57「HTMLの変遷」
[2005/11/28]
その56「PONとその種類」
[2005/11/21]
その55「FWAの仕組み」
[2005/11/14]
その54「DoSとDDoS」
[2005/11/07]
その53「SNMPとMIBの動作」
[2005/10/03]
その52「Jumbo Frameとフレームサイズ」
[2005/09/12]
その51「WPA2の仕組み」
[2005/09/05]
その50「WPAとWPA-PSKの違い」
[2005/08/29]
その49「WPAの仕組み」
[2005/08/22]
その48「WebDAVの動作」
[2005/08/08]
その47「OFDMAの仕組みとOFDMとの違い」
[2005/08/01]
その46「OFDMの仕組み」
[2005/07/25]
その45「WiMAXの特徴」
[2005/07/11]
その44「Wi-Fiの役割」
[2005/07/04]
その43「FTPの目的と動作」
[2005/06/27]
その42「UPnPの動作」
[2005/06/20]
その41「ネットマスクの仕組み」
[2005/06/13]
その40「ARPの機能」
[2005/06/06]
その39「DNSの原理」
[2005/05/30]
その38「デフォルトゲートウェイの役割」
[2005/05/23]
その37「MACアドレスの仕組み」
[2005/05/16]
その36「スイッチとその進化」
[2005/05/09]
その35「ルータによるメリット」
[2005/04/25]
その34「ブリッジの原理」
[2005/04/18]
その33「リピータの機能」
[2005/04/11]
その32「IPアドレスのクラス」
[2005/04/04]
その31「ブロードキャスト/マルチキャスト/ユニキャスト」
[2005/03/28]
その30「SMTP AUTHと認証の種類」
[2005/03/14]
その29「Submissionポートとスパムメール対策」
[2005/03/07]
その28「Outbound Port25 Blockingとは」
[2005/02/28]
その27「PGPの仕組み」
[2005/02/21]
その26「PKIと認証局」
[2005/02/14]
その25「公開鍵暗号方式とは」
[2005/02/07]
その24「共通鍵暗号とは」
[2005/01/31]
その23「SSHの仕組みと応用」
[2005/01/24]
その22「SSLの役割」
[2005/01/17]
その21「POP3とIMAP4の違い」
[2004/12/27]
その20「POP3の役割と機能」
[2004/12/20]
その19「SMTPの機能と問題点」
[2004/12/13]
その18「SPIとパケットフィルタリング」
[2004/12/06]
その17「LANの概念とその広がり」
[2004/11/29]
その16「SIPの役割」
[2004/11/15]
その15「プロキシの利用」
[2004/11/08]
その14「VoIPの仕組み」
[2004/11/01]
その13「イーサネットとは」
[2004/10/25]
その12「IP/TCP/UDP/ICMPとは」
[2004/10/18]
その11「DHCPの役割」
[2004/10/04]
その10「MIMOとは」
[2004/09/27]
その9「DMZとその効果」
[2004/09/13]
その8「ファイアウォールとは」
[2004/09/06]
その7「NATとNAPTの違いとIPマスカレード」
[2004/08/30]
その6「VPNとVPNパススルーの仕組み」
[2004/08/23]
その5「無線LANの問題とWEP」
[2004/08/09]
その4「IEEE 802.11a/b/gって何を意味しているの?」
[2004/08/02]
その3「ダイナミックDNSって?」
[2004/07/26]
その2「グローバルIPアドレスとプライベートIPアドレス」
[2004/07/12]
その1「PPPoEって何だろう?」
[2004/07/05]

その106「Ogg Vorbisの成り立ち」


Ogg Vorbisって何?

 「Ogg Vorbis(「オッグ ボービス」あるいは「オッグ ボルビス」)」もまた、これまで説明した用語と同様の音声フォーマットの1つです。厳密に言うと、OggとVorbisは別々のもので、Oggはコンテナ、つまり、音声データを格納するための入れ物を指し、Vorbisが音声コーデックの方法になります。

 ちょうど、AVIという映像フォーマットに、CinePakやIndeo、WMV、DivXといった映像コーデックの動画が格納されているのと同じと考えて貰えれば良いでしょう。もっとも、Ogg自体は、AVIほどに普及しているわけではありません。

 今のところ、Oggに対応しているのは「FLAC:ロスレス音声コーデック」や「Speex:会話記録に特化した音声コーデック」、「Theora:フリーの映像コーデック」、「Icecast:音声ストリーミング」といったところです。このうち、比較的期一般に知られているのはFLAC程度でしょうか。こうしたわけで、一般にはOggとVorbisは一緒のものと認識されている節があり、実情もそれを裏付けるものになっています。


Ogg Vorbisの成立

 Ogg Vorbis、つまり、OggというコンテナとVorbisのコーデックを策定したのは、米Xiph.Orgです。これは非営利団体で、誰もが自由に使えるマルチメディア技術を提供することを目的としています。Ogg Vorbisはこの代表例であり、以下のような条件が課せられているだけで、ロイヤリティやライセンス料などは無料で、ビジネス用途であっても無料で利用できます。

・仕様:Public Domain(つまり、無償利用のみならず改変も可能、制限は一切なし)
ソフトウェア:Xiph.Orgから提供されるユーティリティはGNU GPL(利用制限はないが、・ソース公開の義務があり)。また、ライブラリ/SDKの大半は修正BSDライセンス(配布や改変にあたってはXiph.orgのcopyright表記を外さない)

 一時期から、日本で作られるPCゲームではOgg Vorbisを採用するケースが目立つようになりましたが、その理由の1つはロイヤリティなどが一切かからないことにあると言われています。こうした動きの背景には、広く普及しているMP3フォーマットのライセンスが実は有料であるという事情があります。MP3でエンコードした楽曲データは、特定の条件によってライセンス料が免除されますが、基本的には有料です。仏Thomsonが特許を取得して、ライセンス供与を行なっています。具体的なライセンス料はこちらに示された通りで、これが自由なエンコーダ/デコーダの普及を妨げてきました。

 日本でも「午後のこ~だ」が一時期配布を中止したりしたわけですが(このあたりの経緯はこちらをご覧下さい)、こうした動きに対抗する形で、特許などに一切縛られない自由なフォーマットを作ろうと動きはじめたのがXiph.Orgです。そして、1993年には開発作業が開始され、2000年には(バージョンこそ若いものの)すでにOgg Vorbisの配布がはじまっています。

 その後、FLACが(それまでは独自プロジェクトで開発されていたのが)Xiph.Orgに参加したり、SpeexやTheoraなども加わったりしています。現在のバージョンを確認すると、Icecastが0.8.6、Theoaが1.0アルファ7(どちらも2006年12月現在)とちょっと若いですが、その他のライブラリはすべて1.0を越えており、一応安定して使える状態になっていることがわかります。


Oggの特徴

図1:Ogg original bitstream
 それではまず、Oggの特徴から見てみたいと思います。Oggは2003年5月に「RFC3533(The Ogg Encapsulation Format Version 0)」と「RFC3534(The application/ogg Media Type)」としてRFCに採択が完了しています。ちなみにOggという名前は“Orion ship G(通称Og)で特攻(Kamikaze Attack)をかけまくるという戦略(戦術?)”が流行ったことがあり、これが転じて敵の戦略に対抗するのをOggと称するようになった“ようです”。この場合で言えば、特許をライセンスすることで収入を得るという大手ライセンシーの戦略に対抗するという意味合いを持たせている模様です。

 そのOggの構造ですが、意外と簡単です。まず、オリジナルのbitstreamを、255バイト単位の「パケット」に分割します。この255バイトは最大値なので、254バイト以下でも構いません。次いで、このパケットを「ページ」に収めます。ページには、それぞれ27バイトのヘッダがついており、ページの最大長は合計282バイトになります。このページを複数まとめる形で、Oggのファイルは構成されるわけです。

 各ページの先頭につく、Page Headerは表1のような構造になっています。面白いのはこのヘッダ。例えば、ページ単位でバラバラにした上で順序を並び替えても、ヘッダを見て元の順に戻せるように配慮されていることです。このあたりは、ファイルフォーマットというより、イーサネットやIPのヘッダを見ているような感じがあります。

 ところでヘッダの中に「stream serial number」という項目があります。Oggでは複数のデータストリームを扱うことが可能だというもので、Xiph.OrgのWebサイトにあるOggStreamの説明ページ下部の図にもあるように、赤・水色・緑の3ストリームが混在するかたちで1つのファイルを構成できます。この場合、ページ単位で混在することになるので、各ページには、“自分はどのストリームデータを持っているのか”を示す必要があります。これを示すのが、stream serial numberというわけです。


・表1
項目名 サイズ 内容
capture_pattern 4 OggS
stream_structure_version 1 0x00
header_type_flag 1 そのページが格納するBitstreamの種類
absolute granule position 8 このページ内でBitstreamが終了する場合、その場所
stream serial number 4 Bitstreamの番号
page sequence no 4 ページ番号
page checksum 4 32bit CRCの値
page_segments 1 格納するBitstreamのサイズ(バイト数)


Vorbisの特徴

 一方、Vorbisですが、こちらの語源はTerry Pratchettの「Small Gods」という小説に出てくる主人公の名前です。基本的には、MP3と非常に良く似た特徴を持っています。具体的に言えば以下のような特徴があり、“MP3よりちょっと良い”数字になっています。

・MDCT(Modified Discrete Cosine Transform:修正離散コサイン変換)を利用
・サンプリングレートは8KHz~192KHz
・サンプリング精度は16/24bit
・チャネル数は最大255ch

 ビットレートに関しては後述の通り、一意に決まらないのですが、平均ビットレートで比較した場合に同ビットレートでMP3を越えるクオリティを確保することを目標にしており、一般にはAACと同程度の品質であると言われます。

 その一方、いくつか異なる点もあります。その最大の点は、ビットレートが「VBR(Variable Bit Rate:可変ビットレート)」のみということでしょう。MP3は、「CBR(Constant Bit Rate:固定ビットレート)」を採用していますから、端的に言えば演奏時間とファイルサイズは比例関係にあります。

 対するVorbisは、音色と演奏時間の両方がファイルサイズに関係してくるわけで、結果として1番複雑な音色の場合でMP3と同程度、よりシンプルな場合は少ないファイルサイズで済むことになり、これが同ビットレートならばMP3よりも高音質になるための要因の1つです。ただその一方で、エンコード/デコードに要する処理は、確実にMP3よりも増えている点はVorbisの短所といっても差し支えないでしょう。


Ogg Vorbisの今後

 Ogg Vorbisはマルチプラットフォームで展開しており、標準でWindows/Mac OS/UNIX・LINUXに加え、OS/2やPocketPCのプレーヤーが用意されています。もっともオフィシャルは必要なライブラリ(と簡単なフロントエンド)のソース提供に止まっています。

 これ以外にも、例えばWindows Media Player用のプラグインや、WinAMPなどのメディアプレーヤーで標準サポートされるなど、下地はそれなりに整いつつあります。ただ、広く普及するには至っていないのは以下のような要因が考えられます。

・MP3より大幅に良くなるというほどではない
・ポータブルプレーヤーでのサポートがそれほど多くない

 特に2点目については、以下のような問題もありそうです。

・エンコード/デコードともにMP3より負荷が高いので、ポータブルプレーヤーでの処理はやや荷が重く、結果として連続再生時間が減るなどのデメリットがある
・著作権保護機能を持たない(これはXiph.orgのポリシーとして設けていない)ので、最近流行の音楽配信などで使われる可能性に乏しく、ポータブルプレーヤーでサポートする必要性を認められていない

 とはいえ、少しずつながらOgg Vorbisで音楽を配信するといったケースも目にしつつあり、今後もじわじわと勢力を増していくのではないか、と思います。ただ、メジャーフォーマットになるためには、何かしらきっかけが必要ですが、今のところそうした動きが特になさそうなのはちょっと残念です。


2006/12/25 10:59

槻ノ木 隆
 国内某メーカーのネットワーク関係「エンジニア」から「元エンジニア」に限りなく近いところに流れてきてしまった。ここ2年ほどは、企画とか教育、営業に近いことばかりやっており、まもなく肩書きは「退役エンジニア」になると思われる。(イラスト:Mikebow)
Broadband Watch ホームページ
Copyright (c) 2006 Impress Watch Corporation, an Impress Group company. All rights reserved.