HE-AACはサンプルレートを半分で書く – LadioCast開発記その57

in LadioCast

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のサンプルレートを高く誤表示するのも、ここらへんに理由があるのかもしれませんね。

14 Responses to “HE-AACはサンプルレートを半分で書く – LadioCast開発記その57”

  1. はじめまして。
    WinAmp+edcast+icecast2でどうやっても日本語がiTunes上(OSX/Winともに)やiPhoneアプリで文字化けしてしまうため彷徨っていたところたどり着きました。
    WinAmpでは日本語表示できたんですがその他のツールでことごとくNGだったため途方にくれていました。
    icecast2をUTF-8出力にしLadioCastからもUTF-8出力にすることによって念願の文字化けしない配信が可能となりほくほくしております。ありがとうございます。
    ただテスト中に一つ把握できないことがあたため伺いたく投稿させていただきました。
    HE-AAC対応とのことですが利用するにはエンコーディング項目のフォーマットをAACにすれば自動的にHE-AACによる配信になるのでしょうか?
    AAC+(HE-AAC)48kbpsで配信したいため、現在SnowLeopard iTunes9にてフォーマット:AAC、サンプルレート:自動、ビットレートモード:一定 48、チャンネル:Stereo に設定しています。
    iTunesやWinAmpでは問題なく受信できているのですが、一部のiPhoneアプリでて”Unrecognized stream type:audio/aac!”というエラーで出て受信することができませんでした。
    このアプリはAAC+対応済みでWinAmp+edcastからのHE-AAC配信は受信できていました(文字化けはしますが)
    LadioCastのフォーマットをMP3にすれば無事に受信できるため、本当にHE-AACで配信できているのかと気になっています。もしくはHE-AACにも何か微妙に違う規格が存在するのでしょうか?
    お手数をおかけしますが、何らかのアドバイスをいただければ幸いです。
    よろしくお願いします。

  2. かわうそ

    JUnさんこんにちは!
    かなりこの世界にはまってる方のようですね^^。
    え~LadioCastは次のリリース予定(0.9.0)からHE-AAC(Snow Leopard only)対応になります。これは現在のAAC形式とは別項目になります。
    Apple Core AudioのHE-AACがどれぐらいの音を出すものか、しばしお待ちくださいませ(たぶん来月中です)。

  3. 早速のレスポンスありがとうございます!
    なるほど、未対応でしたか。今でも十分に音がよいのでさすがHE-AACなのか?
    と素で思っておりました(笑)
    来月対応バージョンが出るとのこと。
    楽しみにしています!がんばってください。

  4. Hello again!
    I just wanted to let you know that I FINALLY figured out why I could not get Ladio to stream to Weather Underground! I had put my user name in the USER field of your program! The field where you have “source” when the program is first launched. I was trying all kinds of different changes trying to get it to work, and when I deleted my user name from that field and left it blank BINGO! LadioCast immediately connected without the previous LOGIN ERROR mesage and now it is happily streaming my NOAA Weather Radio broadcast for our area to the WU servers. (Fresno Ca. feed)
    http://www.wunderground.com/wxradio/index.html
    So far your little program is working like a charm!
    My only question now is if you have any plans to expand the features of the application to include some EQ? These weather radio stations are a bit on the weak side and it is nearly impossible to get a signal that is free of high freq. hiss and static. If LadioCast had an adjustable EQ built in, I could dial some of that top end hiss out and improve the audio quality of my stream.
    Is adding EQ something that you may be considering for future builds?
    IF that was added, this program would be complete! I have already emailed Wunderground about my breakthrough with your application and there is a very good chance that they will soon be including Macintosh support in their streaming radio FAQ section. This will of course include a link to LadioCast along with the setup procedure that I have performed that resulted in a successful stream to their servers!
    Please reply via email if possible, or provide me with your comments here. Either way would be great!
    Thanks again for providing such a useful program and offering it for FREE! PRetty amazing! :o)
    Cheers.
    []Rick.
    Bass Lake Ca.

  5. はじめまして。
    ライブ配信を行っている者ですが、ladiocastはオーディオミキサーソフトとして重宝させていただいています。
    AU Labなどもいいのですが、ladiocastの直感的なインターフェイスは非常に使いやすいです。
    見かけや操作なども非常に気に入っているのですが、一つだけ今後の追加機能としてお願いできないでしょうか。
    と言いますのが、私が現在使っている環境の解像度が低く、ladiocastを起動すると画面の半分が隠れてしまいます。
    そこで、右側のストリーミング部分をドロワー表示や、左とは別に表示できたら更に便利になるのではないかと思いました。
    もしくは単純にウィンドウサイズを調節出来る様な形でも非常に助かります。
    今では、Macで手軽に使えるオーディオミキサーと言えば誰もがladiocastの名前をあげると思います。
    忙しい事とは思いますが、よろしければご検討いただけますでしょうか。
    これからも応援しています。

  6. kawauso

    Hello, Rick!
    Sorry for the tardy response, and that there seems to be previous inquiry about the settings of LadioCast.
    Anyway, thank you for your helpful information about that to connect the NOAA Weather Radio broadcast server.
    Then EQ, is surely an interesting issue for such kind of application, and actually it’s not very hard to implement with the framework of Apple Core Audio. Though, I think the application should be still concentrated on its own audio quality right now. So it’s in future plans.
    Happy broadcasting, C U!

  7. かわうそ

    kenさんこんにちは!
    LadioCast気に入られているようでなによりです。
    奇遇ですが^^;次のリリース0.9系列ではミキサー部とストリーミング部が独立のウィンドウになる予定です。ミキサー部の方がLadioCastの主ということになるでしょうね。表示領域はどうかな、まあ見てのお楽しみです。
    予告ばかりするのもなんですが、いつもやる古めマシンでのテストがうまくいけば11月の頭でのリリースじゃないかな、と思います。
    ではでは。

  8. Thanks for the reply C U! :o)
    I understand your desire to hone the current audio quality aspects of LadioCast, but I have to tell you… It already surpasses NiceCast! I did a side by side comparison between the two because NiceCast already has EQ capabilities built in, but I definitely heard a lot of artifacts on the final broadcast on WU with that than I do with LadioCast! Your program delivers a very natural sounding audio stream that sounds pretty much identical to the actual radio audio being fed into my Mac! I listened to about a dozen other NOAA streams on WU comparing my audio quality to all of the WIndows based streams and guess what?
    LADIOCAST WAS HANDS DOWN THE BEST!! I am not just saying that because I will always go with what does the best job, even if I had to pay for it! I was pleased that in this case YOUR FREE application dominated your competition!
    As far as the EQ goes… I have solved that problem to a large degree by placing a 9 band graphic EQ inline between my radio output and my Mac’s input. I am able to pull a good deal of the hiss out using this little piece of audio hardware, but if you ever do add EQ plug-in capability to LadioCast I could use both of these together to get an even clearer signal going out to WU! :o)
    I do have another feature request that I hope you can add to the next release…
    Could you add a “CONNECT ON LAUNCH” option to LadioCast? My system is 100% automated, and I need to power cycle my internet gear a few times per week. When this occurs, I need to quit LadioCast until the internet is back up. It would be great if all I had to do with Automator was to launch LadioCast and let it automatically connect to WU when it comes up!
    Right now, I have to use an Automator action that involves a mouse over and CLICK, and for some reason, this does not always work properly, resulting in LadioCast launching, but just sitting there from 3AM until I get up and realize that it once again did not connect on its own!
    Hope that it would be an easy thing to add. That was one of the feaures of NiceCast that appealed to me besides the EQ thing, but as I said… LadioCast sounds MUCH MUCH BETTER, so I am sticking with it! :o)
    Thanks in advance for your comments and hopefully your decision to add CONNECT ON LAUNCH to the next release!
    Cheers.
    []Rick.

  9. Oh! I forgot to also request this…
    Is there any way you can add something to LadioCast that can re-establish the connection to the server if the server drops the connection? I have seen this happen a few times where the WU server goes offline for some reason, and with the current version, it requires human input to reconnect LadioCast. Otherwise, it just sits there with no explanation of what happened.
    If you could put some kind of retry system in there that the user can set to keep trying to re-establish the connection, that would be WONDERFUL! Between this and the CONNECT ON LAUNCH, I would be able to let my machine go unattended with very little risk of downtime!
    Thanks again!
    Cheers.
    []Rick.

  10. kawauso

    Hello again, Rick!
    Thank you for your support and suggestion. On 0.9 releases, I would add some little (AppleScript) interface to operate connectivity of LadioCast. I hope it helps, and further suggestions welcome.
    Cheers!

  11. Thanks for the reply Kawauso! :o)
    That sounds great to me! You think you can add both the CONNECT ON LAUNCH and a RETRY system?
    NIceCast provides a check box in the preferences called “CONNECT ON LAUNCH” and when checked, the program automatically connects to the server when it boots up, which saves the user from having to manually connect the application to the server. It also will reconnect automatically if the connection gets dropped for whatever reason.
    With this same feature in LadioCast, I could dispense with the Automator action I am currently trying to use that mouses over the connect button and click it, to initiate the connection. If you add this auto connect option, all I need to do is auto-launch LadioCast on startup or on a schedule, and LadioCast will handle the actual connection start. :o)
    Looking forward to the next release very much!
    Cheers.
    []Rick.

  12. Thanks! :o)
    I got 0.9 and was able to get the CONNECT script to work perfectly! :o) Thanks SO MUCH for adding that!
    However, I don’t see anything in there to make LadioCast RETRY the connection if it gets dropped. Did I miss something?
    I saw this script command:
    tell application “LadioCast” to open “/Users/kawauso/Desktop/foo.plist”
    What does this do, and where would I find “foo.plist” on my machine?
    Oh! And don’t forget to update your vesion on Apple.com
    http://www.apple.com/downloads/macosx/audio/ladiocast.html
    Take care!
    []Rick.


ジャンルフィールドを使って番組に属性をつける

in Uncategorized

以前ねとらじのジャンル欄の使い途と題してlivedoorねとらじ番組表ジャンル欄の有り方を考えたことがあります。 その時は「タグ」を書けばいいんじゃないかなと思っていましたが、「属性」を書くのもいいなと思います。 「属性」というのは、例えば人間であれば年齢や性別や趣味といったもののことで、その属性についてそれぞれどのくらいか、ということを属性値として表せたりします。 書式をつけて表記すれば、こんな感じですね。

{年代:10, 性別:女, 趣味:アニメ, 趣味:ニコニコ}
書式はコンピュータをかじっている人にはピンとくるでしょう。

なぜ今になってこんな話を書いたかというと、ねとらじガイドサイトとして圧倒的な存在感を持ち続けているあたまにきたどっとこむさんが、今度ネトラジランキングというものを企画しているからです。 集計軸は上でいう番組の「属性値」。 何事も最初が肝心、情報は書式が肝心なので、とりあえずかわうその意見を書いておいたというわけです。

[追記]
実際は「タグ」に近い形式になるようですね。


in Uncategorized

年初に書いたエントリー布石ladio.netは嫁入り支度か負荷対策かの最後で、livedoorねとらじサーバは接続数よりも他で限界がくるのではと書きました。 何かというとそれは総転送量。

昨日ニコニコ動画方面の前代未聞のリスナー数(手元の計測で26429リスナー)を この時ビットレートの単純積算(Thanks to LadioManager)による総転送量は約840Mbps。 2台あるねとらじ配信サーバーはおそらく同じネットワークにつながっており、それはギガビット・イーサネットではないでしょうか。 httpプロトコルのオーバーヘッドを考えると840Mbpsはその限界としていい値です。 そうであるとすると、ポートが何個用意されてようが、1ポートの最大接続数が何個にされてようがほとんどどうでもいいでしょう。 わざわざAAC+「ビットレートが問題ではなく、多くの人に聞いて」「放送ビットレートがどうだろうが、その時の総転送量がねとらじの予算をオーバーするなら規制する」 【ねとらじアプリ】「Beluga」がバージョンアップしましたで「パスワード入力に対応」したとあり、


バージョン0.9.1リリース – LadioCast開発記その59

in LadioCast

LadioCastバージョン0.9.1をリリースします。

0.9.0から0.9.1への変更点は以下のとおりです。

  • スクリプト自動化のために警告パネルの表示を改善
  • ドックでクリックされた際にメインウィンドウが表示されるよう修正
それからIcecast2の接続設定に今まで便宜のためインターネットサービスlivedoorねとらじの設定をあてていましたが、昨今の状況を鑑みそれらは全てクリアしました。デフォルトで使用されていた方は手動で再設定されるようお願いします。

ではでは~。

6 Responses to “バージョン0.9.1リリース – LadioCast開発記その59”

  1. かわうそさん、ご無沙汰です。
    アップデートリリース乙です。
    本当、いつもいつも開発お疲れさまです!
    OnAirSongHelperも手直ししなきゃいけないし、他にも何か面白いこと思いついたら
    僕も頑張ってみます。
    0.9からUI機能追加とともにUIにも変更が加わり、僕のまわりでもよくわからないという声がきこえたので、
    解説記事を更新してみました。
    Ustやニコ生にも対応できるように書いたんですが、自分がよくやる放送以外は
    殆どテストしてなく若干心配ではありますがw

  2. かわうそ

    Akicks兄さんこんにちは!
    うおぉーすごいっすね! 現在のLadioCastについて世界一詳しい解説サイトになったことと思います。
    早速ブックマークの方を更新しました。
    益々の御活躍期待しています。

  3. roido

    はじめましてroidoといいます。
    配信をしたいと思い調べているとLadioCastの存在を知り、このサイトに行き着きました。
    soundflower1.5.1をインストールしてLadioCastを使用してみたのですが、入力をsoundflowerにすると「予期せぬ理由で終了しました。」と表示されて落ちてしまいます。
    初心者の質問ですみません。解決策などあれば教えて欲しいです。
    よろしくお願いします。

  4. かわうそ

    roidoさんこんにちは!
    /アプリケーション/ユーティリティ/コンソール.app を立ち上げて LadioCast がそこに何か書いていないか見てみてください。
    何か書いていればそれを貼ってください。
    Soundflower は再インストールしてみるといいかもしれませんね。

  5. roido

    かわうそさん、わざわざ返信ありがとうございました。
    LadioCast[3218] ERROR[LCMultiOutputRenderer.m 193] AudioUnitRender() = -10867
    と、書かれていました。
    Soundflowerを再インストールを数回してみたのですが駄目でした。
    お手数をおかけしますがよろしくおねがいします。

  6. かわうそ

    roidoさんこんにちは!
    直接の原因は分かりませんが、周辺で大きなバグを見つけたのでバージョン0.9.2をリリースしました。
    試してみて特に現象変わらないようでしたら、こちらの件の原因を特定するのはちょっと難しそうですね〜。
    ではでは。


kawauso.comのマザーボードが潰れたのでかわうその休日も潰れました

in Uncategorized
photo.jpg

先週前半ぐらいにkawauso.comを司っているサーバマシンが壊れはじめたのですが、平日は身動きがとれないため、停止状態で必要な注文だけして休日まで待って作業をはじめました。

壊れ方からしてマザーボード、おそらく熱でCPUあたりがやられたのかと思いますが、一体型なのでそっくり取り替えます。 フォームファクタMini-ITXでファンレス低発熱がお決まりの選定条件、今回はこのJNF94-270-LFに白羽の矢を立てました。 CPUはAtom、造りはネットブック用のものを使っているようです。

2ヶ月ほど前にハードディスクも壊れたのですがRAIDを組んであるのでこちらは停止には至らず、替えを週末に買って組み直しました。 最近はマザーボードとハードディスクが交互に壊れていく感じです。

取り替えはできたのですが、命綱のネットワークがつながりません。 どうやらUbuntu 8.04のままではこのボードのネットワークインターフェースを扱えない模様。 いろいろ方法を考えましたが、結局OS自体を9.04にアップデートすることにしました。 あまり時間も無いのでバックアップ無しで臨みましたが、なんとか持っていけたようです。

10年以上やってますが、そろそろ自宅サーバーでもないかなと思う今日この頃。 しかし足元のインフラの苦労を知らないでインターネットサービスを語るのはプロではないとの意地で続けています。

5 Responses to “kawauso.comのマザーボードが潰れたのでかわうその休日も潰れました”

  1. 匿名

    すいません
    MacLadioCastをダウンロードしようとしたら
    NotFoundでみつかりませんでした;w;
    どうしたらいいでしょうか?

  2. すいません><;
    MacLadioCastをインストールしようとして
    カテゴリーをクリックしたらNotFoundになって
    ダウンロードされませんでした><;
    どうしたらいいでしょうか?
    macは10.4を使っているのですが、お返事もらえますか??