ツール・サービス 送出アーカイブ

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 cinpm 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ブラウザで同じ役割を果たす

関連する用語

最終更新