JCBA受信(聴取)の試作

 

JCBAサイマルラジオをHTML audioエレメントで聴くことができました。
動作するかはブラウザのMSE(Media Source Extensions)実装状況に依存します。
WindowsとAndroid環境のFirefoxとChromeで動作することを確認しました。
Apple SafariのMSEは対応していないOpen系のMIME(audio/webm)ですので動作いたしません。
JCBAのパケット(audio/ogg)をMSEに流し込む(audio/webm)変換は荒業(*1)で対応しました。

本家のJCBAサイトのプログラムソース(JavaScript)のリバース エンジニアリングは行っておりません。
受信パケットを解析して、その内容から再生方法を独自に検討して試作したものです。

WindowsとAndroid環境のFirefoxとChromeで動作することを確認しました。
Apple SafariのMSEは対応していないMIME(audio/webm)ですので動作いたしません。

この試作が安定しましたのでちゅんラヂに組み込みました。

2022年5月吉日 作成 © 2022 booskanium

リファクタリングしました。

・WebsocketでPushされてくるChunkデータのキャッシュ廃止
・audioエレメント側でキャッシュ(遅延再生)させる様に変更
・コンテナ載せ替えの無駄なオブジェクト生成を削減
・JCBA配信の受信停止時にPushがすぐ止まらない事象に仮対処
上記対応によりキャッシュ0秒でも問題なく受信できる様なりました。
2025年5月19日 作成 © 2025 booskanium

Special Thanks

*1:MSEが対応するMIMEへのリアルタイム変換(コンテナ載せ替え)はEthan Halsall氏mse-audio-wrapperで対応しています。