Mac OS X 10.6 Snow Leopard の Core Audio には HE-AAC(別名AAC+)エンコーダーがつきました。OSがエンコーダーを標準で備えるということは、なるべくリーガルに事をやろうとするLadioCastのようなソフトウェアにとって非常に喜ばしいことです。
既にLadioCastのHE-AAC形式への対応実装は済みました。
今回はその際にはまったHE-AACの不思議な決まりについての話。
AACやHE-AACはストリーミング形式で送信する際ADTSという形式を使ったりします。
そこには他の情報とともに、そのエンコーディングがサンプルレートいくつで成されたものかを表記する仕様になっています。
最初AACの時と同じように素直にそのままサンプルレートをのせたのですが、どうしてもうまく再生されません。
結論からいうと、プレイヤーで正しく再生される HE-AAC on ADTS 形式の音声データは、用いたサンプルレートの半分の値を表記することになっているようです。
実際そのようにして生成させ正しく再生できたファイルを、音声形式を調べるコマンド afinfo を使って調べてみると、以下のように表示されます。
File type ID: adts
Data format: 2 ch, 22050 Hz, 'aac ' (0x00000000) 0 bits/channel, 0 bytes/packet, 1024 frames/packet, 0 bytes/frame
・・・
format list:
[ 0] format: 2 ch, 44100 Hz, 'aach' (0x00000000) 0 bits/channel, 0 bytes/packet, 2048 frames/packet, 0 bytes/frame
Channel layout: Stereo (L R)
[ 1] format: 2 ch, 22050 Hz, 'aac ' (0x00000000) 0 bits/channel, 0 bytes/packet, 1024 frames/packet, 0 bytes/frame
Channel layout: Stereo (L R)
みるとHE-AAC形式は従来のAACの部分と拡張した部分とがきれいに分かれており、AACの部分のサンプルレートは元のサンプルレートの半分(22kHz)でエンコーディングされていることがわかります。
半分にすることで空いた領域に、拡張した分をこれは指定されたサンプルレート(44kHz)でエンコーディングして入れています。
そしてADTS上に表記するサンプルレートはAACの方である半分の値(22kHz)とする決まりのようです。
逆にプレイヤーWinampが以前から通常のAACのサンプルレートを高く誤表示するのも、ここらへんに理由があるのかもしれませんね。
すいません、ダウンロードしようとしたらNotFoundで
ダウンロードできないのですが、どうしたら><
かわうそさんこんにちは。
上の方が言う通り、LadioCastがリンク切れのようです。
http://www.kawauso.com/mlc/LadioCast-0.8.2.dmg
http://www.kawauso.com/mlc/LadioCast-0.8.1.dmg(古いものも)
またSoundflowerReconfiguratorというのもリンク切れのようです。
http://www.kawauso.com/mlc/SoundflowerReconfigurator.dmg
あっ!ほんとですね~
すいません今晩直します