過去、何回か音楽データに関するの記事を書きました。その時に細かい解説をせずにいた用語が幾つかあります。
今回はその用語のひとつ「CBR , VBR , ABR」について解説していきたいと思います。
1秒間に転送できるデータ量を表した「ビットレート」ですが、このビットレート値の制御方法として「CBR(固定)」「VBR(可変)」「ABR(平均)」の3つが主に利用されます。
音楽データに限らず動画データなどの圧縮技術でも使用されるものです。より目的に合ったエンコード設定ができるよう、それぞれの制御方法の特徴やメリット・デメリットを解説します。
「CBR , VBR , ABR」はエンコーダーのパラメーターで基本は指定できますので、こちらも簡単に解説します。
ビットレートとは
まずはこの分野で頻出する単語「ビットレート」について簡単にお話します。
ビットレート【bit rate】とは、単位時間当たりに転送または処理できるデータ量を示した値のことです。
データ量を示す単位は一般的に「ビット【bit】」が用いられ、また通常は「1秒間」に転送できるデータ量を示していることがほとんどなので、単位としては「bps【bit per second】」または「b/s」「bit/s」と表記されます。「ビット毎秒」と呼ばれることもあります。
データ転送レートの単位ですので、他にもインターネット回線の転送速度などに用いられます。「バイト毎秒」と呼ばれる単位も存在し、こちらはbを大文字にして「Bps」または「B/s」と表します。1B=8bitです。
「キロ(k)」「メガ(M)」「ギガ(G)」などのSI接頭語と組み合わせられますので「kbps(kが付くので1000倍される)」という表記も可能です。(因みに、デジタルデータでよく使われる二進接頭辞ですが、音楽や映像関連では慣例のためかSI接頭語が標準なので、特に断りが無ければ1000倍、100万倍~で計算します。)
この値が大きければ大きいほど、データの転送量が多くなることを意味しています。つまり、より多くのデータを転送・処理できるため一般的に音質・画質などが良くなります。このため、音楽や動画の質を表す指標としてよく使われます。
データ容量はこの転送レートから分かる場合もあります。320kbpsの転送レートを持ったデータを10秒間流せるデータの容量は「320kb/s × 10s = 3200kb = 3.2Mb = 0.4Byte」です。(ビットレートが常に固定の場合)
CBR – 固定ビットレート
固定ビットレート【constant bitrate:CBR】とは、指定したビットレート値で固定し、常に一定の値を保つように制御する方法です。
電気通信におけるQuality of Serviceに関する用語のひとつで、VBRやABRもこのQuality of Serviceに関する用語です。
制御工学やシステム工学の分野で広く使われる用語。特にコンピュータネットワークにおいて、ネットワーク上のサービスを安定的に使えるよう、様々な調整を行う技術のこと。QoSと略されます。
ビットレートの値は常に一定
CBRは、常にビットレート値が一定になるように調整されたデータを指します。
例えば「256kbpsのCBR」でエンコードしたデータは、再生すると常に256kbpsのレートで転送します。
帯域制限のある回線でも目一杯使うことができるようになり、またプログラム側も使用される回線の帯域が予測できるので扱いが簡単になるメリットがあります。通信の安定性に優れており、ストリーミング再生でもよく使われます。
常に一定のレートになるので音声や映像のズレが起きにくかったり、シーク時間が短いメリットもあります。
目的の読み取り位置へ一気に移動するとこと。音楽データで言えば、○○分のところまでバーを動かして瞬時に再生位置を移動させることです。
ファイルサイズが予測しやすい
ビットレートの値が常に一定なので、ファイル容量は単純に「ビットレート×時間」で割り出せます。
320kbps × 2分30秒(150秒) = 48000kb = 6000kB = 6MB
320Kbps CBR 、曲長が2分30秒のデータの容量は「約6MB」であることがわかります。
このように、CBRモードでエンコードしようとするデータは、エンコード前でも生成されるデータの容量を知ることができます。
データに無駄がでやすい
一定のレートで転送しますので、複雑な情報がある箇所でもデータを削って転送しなくてはならなくなります。
音楽でいえば、様々な楽器を使って大いに盛り上がる箇所などです。このようなデータ的に複雑になる箇所も一定にしようとするため、複雑になる箇所で品質の低下を招きやすくなります。
また逆に、「単純な箇所」に関しては本来そこまでデータを必要としなくても目的のビットレート値へ押し上げる必要があります。この場合は、空のデータで穴埋めをする「パディング【padding】」という動作を実行しますが、データ的には全くの無駄であり、転送帯域を無意味に消費してしまう欠点があります。
このため、CBRは通信の安定性には長けますが、音質や画質の品質に関してはブレやすく安定しなくなる可能性があります。品質に関しては目的となるビットレート値を大きくすれば解決しますが、代わりにデータ容量などが大きくなります。
因みに、エンコード時は後述のVBRで制御し、後からパディングを実行してCBRデータに見せかけることを「疑似CBR」と呼んだりします。
VBR – 可変ビットレート
可変ビットレート【Variable Bitrate:VBR】とは、ビットレート値を状況に応じて変動させることができる制御方法です。
ビットレートの値は変動する
CBRが一定のビットレート値を維持するのに対し、VBRはビットレート値を状況に応じて変動させることができます。
複雑な箇所には多くのデータを割り振れるようビットレート値を高くし、逆に単純な箇所には自動的にビットレート値を低くして帯域を節約することで、効率的に転送できるようになります。CBRのように空のデータを入れるパディングは必要ありません。
このため、同容量のCBRよりも高品質になりやすくなるのがVBRのメリットです。
ビットレート値を固定しないので、VBRモードでエンコードする場合は、具体的なビットレート値で指定するのではなく「クオリティ」で品質を指定することが多いです。また、上限と下限を決めてその範囲内で変動させることもできます。
因みに、可逆圧縮形式のファイルは圧縮前のデータを保持する必要がありますのでVBRとなります。
CBRより細かな制御や処理能力が必要
ビットレートの値が常に変動しているため、エンコード後のファイルの容量が予測しにくくなります。
実際にエンコードしてみないことには、どこに多くの情報を割り振ればいいのか、または削ればいいのか判断が付かないからです。また、上限値を設けないと突発的に大きなビットレート値が割り振られることもあり、通信の安定性が悪くなる場合もありますので、より細かな制御が必要になります。
他にレートが一定でないのでシークにも少し時間がかかったり、デコードなどの処理も複雑なものになったり、編集時に音ズレを起こす場合があったりと、コンピューターの処理能力もCBRより必要になります。
ABR – 平均ビットレート
平均ビットレート【Averate Bitrate:ABR】とは、CBRとVBRをいいとこ取りをしたような制御方法で、ビットレート値は可変ですが指定したビットレート値が平均値となるよう制御する方法です。
ビットレートは可変なのでVBRの一種です。
指定したビットレートが平均となる
CBRの欠点はビットレートが固定になることでデータの割り振りに無駄が生じること。
VBRの欠点はビットレートが可変になることでファイルサイズが予測できず、また通信の安定性が悪くなる場合もあること。
ならばその中間のいいとこ取りをしたものを作ってみよう、と考えだされたのが「ABRモード」です。
ABRでエンコードすると、指定したビットレートの値が全体の平均値となるようにデータの割り振りをします。複雑な箇所では多くの情報を割り振るためビットレートの値を上げ、逆に単純な箇所ではビットレートの値を下げてデータ量を節約します。
ただし、VBRのように大きく乱高下はせず、あくまで目標値に近づけるように調整するため、例えば単純な箇所であってもある程度のデータ量は確保します。
CBRと同じくファイルサイズが予測可能で、かつ品質も保つ
CBRのように変換後のファイルサイズを予測できるようになり(平均値×時間)、さらにVBRと同じく最適な場所へデータを割り振れるようになります。品質を保ちながら、ファイルサイズをある程度予測できるようになるわけです。
最大値と最小値を設定してその範囲内で可変させたり、最大値(ピーク)を指定してそれ以上のビットレートにならないよう制限させたりもできますので、通信の安定性も向上する場合があります。
以下の画像のファイルは「190 kbps」と指定したMP3 ABRデータです。少し目標値から外れましたが、可変ビットレートでありながらCBRのようにファイルサイズが予測できるようになっています。
190kbps × 2分30秒(150秒) = 28500kb = 3562.5kB ≒ 約3.5MB
処理が複雑になりエンコードに時間がかかる
指定した平均値にするようVBRよりも高度なコントロールをするため、他の制御方法より処理に時間がかかる場合があります。
常に先読みで複雑さを予測しながらデータを割り振らなければならないからです。(1passの場合)
しかも、その予想が外れると適切な処理がされなくなり品質が落ちてしまうことがあります。
1pass と 2pass
VBRやABRでは、ビットレート値が可変となるため、CBRと比べてより高度な処理が必要となります。
このとき、一回ですべてのエンコード処理を終える「1pass」という方法と、最初にデータ全体を解析した後にエンコード処理を実行する「2pass」という方法があります。
1pass
まだエンコード処理をしていない部分のデータの複雑さを常に予測しながらビットレートをコントロールする方法です。一回のエンコードで済むため高速な処理が可能です。
ただし、予想が外れた場合は大きく品質が低下したり目的のビットレート値から大きく外れることがあります。
2pass(複数パス)
まずデータ全体の複雑さを事前に解析し、その解析データを元にしてビットレートをコントロールする方法です。
最低でも2回の処理が入るため非常に処理が遅くなりますが、予め複雑さを解析しているため効率的にビットレートを調整することができるようになります。つまり、1passよりも品質が向上します。
※エンコーダーによってはCBRでも2passエンコードができるものもあります。
CBR,VBR,ABR まとめ
CBR | VBR | ABR | |
---|---|---|---|
ビットレート | 固定 | 可変 | 可変 |
データサイズの予測 | 簡単 | 難しい | 簡単 |
シーク | 早い | 遅い | 少し遅い |
品質 | ばらつきやすい | 高品質 | 高品質 |
制御難度 | 簡単 | 難しい | 難しい |
CBR(固定ビットレート)
- ビットレートは常に一定である。
- シークが早く、処理も高速である。
- 圧縮後のデータサイズを予測できる。
- 一定のビットレートを保つため、品質にばらつきがでやすい。(高いビットレートにすることで解決)
- データ容量的に無駄が多い。
VBR(可変ビットレート)
- ビットレートは可変で変動させることができる。
- 効率的にデータを割り振るため、高品質である。
- 圧縮後のデータサイズを予測するのが難しい。
- ビットレート値の変動が大きいと通信の安定性が悪くなる場合がある。
- 音ズレを起こしやすいなど、編集時には少し扱いづらい。
- シークが遅い。
ABR(平均ビットレート)
- ビットレートは可変で変動させることができる。
- 効率的に転送レートを割り振るため、高品質である。
- 指定したビットレートの値が平均値となるようコントロールするため、圧縮後のデータサイズを予測できる。
- レートコントロールの処理に時間がかかる場合があり、その際に圧縮処理が遅くなる場合がある。
- データの”複雑さ”の予想が外れると、品質が悪くなる。(2passエンコードで改善可能)
- 音ズレを起こしやすいなど、編集時には少し扱いづらい。
エンコーダーのコマンドラインオプションを使い制御方法を指定する
CBR、VBR、ABRは、各エンコーダーの「コマンドラインオプション」にて指定可能です。
コマンドラインオプションとは、エンコーダーに対して様々なオプションを指定するためのコマンドです。このオプションの中に、それぞれの制御方法を指定するためのコマンドが存在します。
一例として、MP3エンコーダー「LAME」を使った場合のコマンドラインオプションを簡単に書いてみます。
LAME MP3 Encoder
MP3へエンコードしてくれる定番中の定番エンコーダーです。MP3の品質がよいと評判です。
LAMEのコマンドラインオプションにて各エンコードモードを指定するには、以下のようにします。
CBRでエンコード
-b 320 - %d
数値の部分がビットレートを指定する箇所です。最大値は「320」ですので、この設定が最も高音質になります。
VBRでエンコード
-V 2 - %d
-V
がクオリティです。0~9で指定します。0が高音質低圧縮、9が低音質高圧縮です。
ABRでエンコード
--abr 256 - %d
--abr
が平均ビットレートモードを指定するコマンドです。数値部分で平均値を指定します。
納得のいくモードを探してみよう
以上、簡単ではありますが「CBR , VBR , ABR」の違いについて解説しました。
これらは音楽・動画などをエンコードする際に指定できます。それぞれに特徴があり、メリット・デメリットが存在します。ご自分がやりたいことと照らし合わせ、最適な制御方法でエンコードできるよう考えてみましょう。
例えば、音楽や動画で最高品質を得たい場合は、エンコーダーが指定できる最も高いビットレート値をCBRで指定すればOKです。容量は落としたい、でも品質も維持したい場合はVBRがおすすめです。特に動画ではその威力を発揮します。低ビットレート(64kbpsなど)はABRの処理が上手であると聞きます。
この記事も、みなさんのためになりましたら幸いです。
- 2024年1月1日:書き直し
- 2016年4月16日:コメントよりご指摘いただいた不正確な内容を削除
- 2013年3月9日:初出
コメント
コメント欄を開く
コメント一覧 (6件)
フリーの音屋です。
ふと気になって検索してみたところ、こちらの記事に出会えました。
大変参考になりました。
ありがとうございます。
よいお年をお迎え頂ける様、心よりお祈りいたします。
※ABRの記事の最初の緑字、書き換え忘れてますね。重箱の角つついてすみません。(もうすぐお正月だけに…)
ご指摘ありがとうございます。
指摘していただきました箇所は修正しておきました。
コピー&ペーストで記事書くことも多いのでちょっとこういったことがたまに発生します・・・
この記事ではあまり表にでてこないエンコードモードについて書きました。
結構重要なことだと思っていますので、圧縮音源を扱う場合は覚えておくととっても便利ですよ。
VBR CBR の検索でたどり着いたのですが、デコード・エンコードの解説が素人でも非常に分かりやすかったです。
VBRの復号が低速とされていますが、その理由がよく解らないです。これはどういう理屈によるものでしょうか?
一律の圧縮技術を適用して圧縮すれば、当然各部位の圧縮難易の違いにより自然とVBRになってしまう筈で、それを一律になるよう無理やり調整してるのがCBRですよね。一般的なイメージはCBRの方がシンプルでスッキリした印象をなんとなく受けますけど、やってることを具体的に考えたらむしろCBRの方がゴテゴテしてるに違いないので、復号はCBRの方が厄介な気がするのですけど。
で、探してみたところ、こんなデータが見つかって、「やっぱりそうなるよなあ」と納得した次第。
ttp://kkkkk.net/?key=docs.mp3compare (リンク切れ)
VBRの復号が低速となる明確な理由があるのでしたら、お教えいただけないでしょうか。
ご指摘ありがとうございます。
復号の際の負荷に関する記述ですが、可変ビットレートに関するWikipediaと
ちょっと前に持っていたPremiere Proの教本からだったと思います。
ただ、もう一度この記事を読み返してみて、復号の際の負荷と「再生負荷」を
恐らくごっちゃにしてしまったのが原因だと思います。
ストリーミング再生における回線への負荷や、PCでの再生時の負荷についてと
復号についてを一緒にしてしまったものと思われます。
VBRの方はPCの再生負荷が高くなる時があると記載してあったのを
勘違いしたことが原因だと思います。
単純に圧縮データをWAVデータに戻す処理の場合は余計なことをしていない
VBRの方が早いかもしれません。
ご迷惑をお掛けして申し訳ございません。
ご指摘いただきました箇所は記事より削除しておきました。
また、この記事については近々書き直したいと思います。
思いっきり素人ですが、わかりやすくてとても役に立ちました。どうもありがとうございました。