web-bml
ウェブビーエムエル
日本のデジタル放送のデータ放送(BML)を、パソコンのWebブラウザで表示するオープンソースのBMLブラウザです。Node.jsで動くサーバーが放送や録画のTSからデータを取り出し、ブラウザ側で画面とスクリプトを動かします。MITライセンスで公開されています。
- 種別
- BMLブラウザ(データ放送ブラウザ)
- 公開場所
- GitHub(otya128/web-bml)
- ライセンス
- MIT License
- 主な言語
- TypeScript
- リポジトリの作成
- 2022年3月
- 動作環境
- LinuxまたはWindows上のNode.js、新しめのFirefoxまたはChromium系ブラウザ
- 入力
- Mirakurunからの放送、EPGStationの録画、TSファイル
- 映像と字幕
- ffmpegで変換してmpegts.jsまたはhls.jsで再生。字幕はaribb24.jsで表示
- 実装している仕様
- ARIB STD-B24、TR-B14、TR-B15の一部
テレビの前に行かずにデータ放送の画面を確かめたい、録画したTSファイルのデータ放送をあとから見返したい。そう考えた人が行き着くのがweb-bmlです。テレビに内蔵されているBMLブラウザの役割を、パソコンのWebブラウザの中で果たします。
web-bmlが使われる場面
代表的なのは、MirakurunやEPGStationで録画サーバーを組んでいる人が、ブラウザでテレビを見るついでにデータ放送も表示したい、という使い方です。Mirakurunからは放送中の番組を、EPGStationからは録画した番組を読み込めます。
データ放送の開発や検証の場面でも役に立ちます。BMLの文書やスクリプトがどう動くかを、実機のテレビを並べる前にパソコンで確かめられるからです。放送を録画したTSファイルを引数に渡せば、そのファイルに入っていたデータ放送を再生できるので、アーカイブした番組のデータ放送を後から見返すこともできます。
実装はARIB STD-B24と、運用規定のARIB TR-B14、TR-B15を部分的に取り込んだものです。BMLのスクリプトを動かすために、ECMAScriptの処理系も自前で持っています。
web-bmlの使い方と動かし方
READMEに書かれている手順は、次の通りです。
npm ciとnpm run buildでライブラリ部分をビルドし、npm -w example run buildのあとnpm -w example run startで起動する- 起動後はWebブラウザで localhost:23234 を開く
- Dockerイメージを作って動かすこともでき、MirakurunのURLは
MIRAK_URL、EPGStationのURLはEPG_URL、読み込むファイルはINPUT_FILEの環境変数で渡す
映像の出し方は、URLの format で選びます。既定の h264-mpegts はmpegts.jsで再生し、aribb24.jsによる字幕にも対応します。hls はhls.jsを使い、mp4 はvideo要素だけで再生しますが字幕は出ません。null 以外の形式では、映像の変換にFFmpegが必要です。
web-bmlでデータ放送が表示されないとき
うまく動かないときは、次の点を確かめてください。
- ffmpegにパスが通っていない。実行ファイルの場所は
FFMPEGの環境変数で指定できる - データ放送だけのサービスを開いている。NHK BS1の707ヘルプチャンネルのような局は、映像を変換せずデータカルーセルだけを解く
format=nullでないと表示できないことがある - 使っているブラウザが古い。READMEは新しめのFirefoxかChromium系を前提にしている
- まだ実装されていない機能に当たっている。CCStatusChangedやMediaStoppedなど一部のイベントやAPIは未実装とされている
文字がずれて見える場合はフォントも疑います。BMLは等幅のフォントを前提にスペースで配置を組むことが多いため、web-bmlには丸ゴシックとゴシックの等幅フォントが同梱されています。
よくある質問
web-bmlはインストールせずに試せますか
READMEに公開デモのページが案内されていて、ブラウザで開くだけで動きを見られます。自分の録画ファイルや放送を表示したいときは、手元でNode.jsかDockerを使って動かします。
web-bmlは商用の開発に使えますか
MITライセンスなので、著作権表示とライセンス文を残せば、改変や組み込みを含めて利用できます。組み込む前に、リポジトリのLICENSEファイルで条件を確かめてください。
web-bmlに録画したTSファイルを読み込ませるには
npm -w example run start の引数にファイルのパスを渡すか、Dockerなら INPUT_FILE の環境変数とファイルのマウントで指定します。既定の h264-mpegts は本来は生放送向けですが、ffmpegを等速で動かしているため録画ファイルでも一応は再生できる、とREADMEに書かれています。
似ている形式との違い
| 名前 | 主に使う場面 | web-bmlとの違い |
|---|---|---|
| aribb24.js | ARIB字幕の表示 | 字幕と文字スーパーを描くライブラリ。web-bmlは字幕の表示にこれを使い、データ放送の画面は自前で描く |
| テレビ内蔵のBMLブラウザ | 家庭のテレビ・レコーダー | 受信機に組み込まれたもの。web-bmlはパソコンのWebブラウザで同じ役割を果たす |
関連する用語
最終更新