« 2018年6月 | トップページ | 2018年9月 »

2018年8月の1件の記事

夢の組み込みShoutcast レシーバー #1

 他人のコピーではうまくいかず

 今年の4月くらいにグンソク君と一緒に検討していた Wi-Fi マイコンを使った web ラジオ受信機の製作がとん挫しています。理由は、一応受信できるプロトタイプはできたものの受信機を制御する web サーバがちゃんと動かず、それの原因を突き止められずにいたからです。それに、放送局によっては音がプツぷつと途切れてしまうこともなんでなのかわかりませんでした。

 そのマイコンアプリは VLSI technology が MP3 デコーダ LSI のアプリケーション例として公表していたもので、Wi-Fi ハードを積んだ ESP8266 マイコンと VS1053 LSI との組み合わせで作られていたものでした。しかもソースコードは arduino 環境で書かれていて github で公開されていたのでさぞかしコピー品の製作は簡単だろうと見込んでいたのでした。

 それが行き詰ったおかげでグンソク君とも疎遠になりつつあったのですが、ここにきて自作できないか再度情報を集めてみようと思い始めました。きっかけはトラ技の AI スピーカ自作の記事を読んだからです。よく見ると、AI スピーカも web ラジオレシーバと機能的にそっくりなのです。

 エンジニアのたしなみ程度に HTTP については理解していたところですが、Shoutcast の仕様についてどう検索したら出てくるのか全く見当が今まで付きませんでした。トラ技のAIスピーカのプログラムは python で書かれていて、HTTP の GET で取り込んだデータを解析しているところがヒントになりました。HTTP server のレスポンスをよく見るとヘッダにメタ情報がいろいろ書いてあり、body には MP3 データがわんさか積んである。これを受信した先から MP3 デコーダにバイナリを送り続けるという仕組みについて理解したのでした。

 これと同じように Python で Shoutcast を受信しようとしている人はいないだろうか検索してみたところやっぱりいて、icy-metaint というタグの数値がどうやらキーポイントになっているらしいことを言っていました。さらに検索を進めると、Shoutcast では MP3 データ本体の中に icy タグを周期的に( icy-metaint バイトごとに )入れていて、これを取り除いたバイナリを MP3 デコーダに渡さないといけないのです。

とここまで調べたら、自作でも ESP マイコンで HTTP 通信ができれば web ラジオ作れそうな気がしてなりません。ESP8266 なら socket を実装している人はたくさんいるし、そのレイヤーから自作する分にはハードルはかなり低いでしょう!!

というわけで再燃した web ラジオ自作熱はどこまで盛り上がるかやってみたくなってきましたとさ。

« 2018年6月 | トップページ | 2018年9月 »

2022年3月
    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31    
無料ブログはココログ