データ放送でできること drp東京斎藤聡 · データ放送の主な用途...

40
DRP東京 斎藤 データ放送でできること

Upload: others

Post on 03-Jun-2020

5 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: データ放送でできること DRP東京斎藤聡 · データ放送の主な用途 番組進行に合わせ、番組を補完するデータや壁紙などの表示 ニュースや天気予報など、番組とは独立したデータの表示

DRP東京 斎藤 聡

データ放送でできることデータ放送でできること

Page 2: データ放送でできること DRP東京斎藤聡 · データ放送の主な用途 番組進行に合わせ、番組を補完するデータや壁紙などの表示 ニュースや天気予報など、番組とは独立したデータの表示

この講義のねらい

データ放送コンテンツ制作は外注?

ホームページ制作業者が作る可能性が高い

データ放送の体系的な教科書は極めて少ない(しかしARIB規格と運用規定には全て書いてあるのだが・・・)

ホームページ制作だけのノウハウで作ってしまう

放送向けの機能がたくさんあるのに・・・

「もったいない!!」

データ放送で何ができるのかを知っていることは重要

Page 3: データ放送でできること DRP東京斎藤聡 · データ放送の主な用途 番組進行に合わせ、番組を補完するデータや壁紙などの表示 ニュースや天気予報など、番組とは独立したデータの表示

データ放送の主な用途

番組進行に合わせ、番組を補完するデータや壁紙などの表示

ニュースや天気予報など、番組とは独立したデータの表示

一次リンクサーバへの誘導

双方向番組

携帯やPC用ホームページへの誘導

放送波によるダウンロード(ARIBにて規格策定中)の操作

Page 4: データ放送でできること DRP東京斎藤聡 · データ放送の主な用途 番組進行に合わせ、番組を補完するデータや壁紙などの表示 ニュースや天気予報など、番組とは独立したデータの表示

BMLとは何か

Broadcast Markup Language。2000年開始のBSデジタル放送のデータ放送記述言語としてARIBにて策定。ARIB STD B-24として規格化されている。実態はHTML。

インターネットブラウザ「実装」→「InternetExplorerとNetscapeの開発競争による混沌」

→「混乱収集のためにW3コンソーシアムによるHTML規格化」

BMLブラウザ「XHTML規格を元に放送用に機能制限+機能追加」

提示の一意性(例えば、機種によって文字の折り返し位置が違うのは困る)画面の大きさは有限でスクロールしない。

フォントの統一、レイアウトは絶対座標。

スクリプト(ブラウザ側で動く小規模のプログラム)はJavaScriptやJScriptを規格として厳密に再規定したECMA Scriptを採用

放送用に機能拡張自動的に画面更新。放送からのトリガー受信。簡易データベース機能。

映像、音声との合成表示。NVRAM。画面遷移せずに通信。EPG連携。Etc.

Page 5: データ放送でできること DRP東京斎藤聡 · データ放送の主な用途 番組進行に合わせ、番組を補完するデータや壁紙などの表示 ニュースや天気予報など、番組とは独立したデータの表示

デジタルラジオのBML

いわゆるワンセグのBMLとほぼ共通

ルート要素は<bml>ではなく<html>(ただし、いわゆるインターネットWebサービスと区別するために

本セミナーでは言語はBMLと表記)

携帯キャリア、メーカー、機種によらず仕様は1つ

携帯電話でありながらJavaScript(ECMA Script)を使うことができる。

映像や音声と併せて表示することができる。

Page 6: データ放送でできること DRP東京斎藤聡 · データ放送の主な用途 番組進行に合わせ、番組を補完するデータや壁紙などの表示 ニュースや天気予報など、番組とは独立したデータの表示

データ放送とWebの比較

横:240px固定縦:480px固定

横:ブラウザのウィンドウ幅縦:コンテンツがある限り

表示プレーン

イベントメッセージなしサーバ(送出)側からのトリガー

データイベント更新、モジュール更新表示内容自動更新可

時間の概念なし時間の経過

取得:モジュール表示、参照:リソースディレクトリ階層は/ES/モジュール/リソースの3段階

ファイルディレクトリ階層はいくらでも・・・

コンテンツアクセスの単位

ESサーバコンテンツのサーバ的括り

不可能なので※BinaryTableで補完CGIサーバによる動的内容生成

ECMAScript(JavaScript)+放送拡張JavaScript手続き記述言語

CSS(ただし表示位置指定が絶対値)CSSスタイルシート

XHTMLHTML、XHTMLベースとなる規格

データ放送(TR-B13)World Wide Web比較項目

※放送コンテンツとしてはCGI不可能

Page 7: データ放送でできること DRP東京斎藤聡 · データ放送の主な用途 番組進行に合わせ、番組を補完するデータや壁紙などの表示 ニュースや天気予報など、番組とは独立したデータの表示

STD-B24第二編との関係

本編

付属1共通規定

付属2基本サービス・タグセット(BML)・表示機能・関数運用範囲

付属3拡張サービス・タグセット(XHTML準拠)・表示機能・TCP/IP拡張・関数運用範囲

付属4携帯端末(XHTML準拠)

付属5移動端末(XHTML準拠)

TR-B15第一部BS基本運用規定・付属2準拠

TR-B15第二部CS、BS拡張運用規定・付属2の関数運用範囲を少し拡張

TR-B14 Aプロファイル地上固定受信規定・付属2と付属3の混合

TR-B14 Bプロファイル地上移動受信規定・規定せず、固定受信プロファイルを受信することになった。

TR-B14 Cプロファイルいわゆるワンセグ受信規定・付属4準拠

B24第二編

TR-B13 P2プロファイルDRP実用化試験放送の規定・付属4準拠

Page 8: データ放送でできること DRP東京斎藤聡 · データ放送の主な用途 番組進行に合わせ、番組を補完するデータや壁紙などの表示 ニュースや天気予報など、番組とは独立したデータの表示

簡単なコンテンツ例

<?xml version="1.0" encoding="Shift_JIS" ?><!DOCTYPE html PUBLIC "-//ARIB//DTD XHTML BML 13.0//JA" "http://www.arib.or.jp/B24/DTD/bml_13_0.dtd"><?bml bml-version="13.0" ?>

<html> ルートタグはHTML<head><title></title><script><![CDATA[browser.setFullDataDisplayArea(1); 動画がないので表示エリア全部をデータ放送で使う]]></script></head><body style=“background-color:#FFFF80;”> バックカラーを黄色に<div id=“DIV1” style=“left:0px; top:0px; width:240px; height:480px;”> 画面全体<object data="title_ffff80.gif" id="OBJ01" style="left:19px; top:11px; width:200px; height:60px;" type="image/gif"/><object data="osaka.gif" id="OBJ02" style="left:80px; top:80px; width:80px; height:30px;" type="image/gif"/><object data="hashi.jpg" id="OBJ00" style="left:40px; top:125px; width:160px; height:120px;" type="image/jpeg"/><object data="logo.gif" id="OBJ03" style="left:24px; top:270px; width:192px; height:40px;" type="image/gif"/><p id=“T01” style=“left:0px; top:318px; width:240px; height:40px; color:#FF0000; font-weight:bold; font-size:medium;”>デジタルラジオ推進協会</p> 文字は赤表示</div>

</body></html>

BMLの書き方(一部省略しています)

基本的にはホームページと同様HTML。ただし、表示エリアが240 x 480ドット固定なので、画像や文字を絶対座標で指定する必要あり

Page 9: データ放送でできること DRP東京斎藤聡 · データ放送の主な用途 番組進行に合わせ、番組を補完するデータや壁紙などの表示 ニュースや天気予報など、番組とは独立したデータの表示

データカルーセル

DIIDDB

DII

DDB

DDB

DDB

DDBDDB

DDB

DDB

DDB

DII

car01 0000

0001

startup.bml

image1.gif

image2.jpg

abc.btb

xyz.btb

データカルーセルファイル形式

ファイル形式のコンテンツをDIIとDDB形式にして何回も繰り返し送出する。繰り返す様を回転木馬にたとえたもの・DII: Download Info Indication カルーセル内のモジュール構成をまとめたもの・DDB: Download Data Block モジュールを4KByteごとに区切ったものモジュール内の各ファイル(リソース)はマルチパート形式で1つにまとめられている

パケタイズ

Page 10: データ放送でできること DRP東京斎藤聡 · データ放送の主な用途 番組進行に合わせ、番組を補完するデータや壁紙などの表示 ニュースや天気予報など、番組とは独立したデータの表示

ARIB STD B-35の搬入形式

コンテンツの時間推移の表現

BCML:Broadcast Contents Markup Languageプレイリストのようなメタデータ

BCML

es80 car01 0000

0001

startup.bml

image1.gif

image2.jpg

abc.btb

xyz.btb

0000

0001

startup.bml

image1.gif

image2.jpg

abc.btb

xyz.btb

car02

0000

0001

startup.bml

image3.gif

image4.jpg

abc.btb

car03

最初のカルーセル

2つ目のカルーセル

3つ目のカルーセル

リソース名は変わらなくても内容が変わっている等

リソース名が変わるリソース構成が変わる

<bcml><data_es auto_start_flag="TRUE"

component_tag="80“ duration="01:00:00" name="es80" >

<carousel data_event_changed_flag="TRUE" name="car01" start_time="00:00:00"><module module_id="0000" version_up_flag="TRUE“>

<resource name="startup.bml" />:

<module module_id="0001" version_up_flag="TRUE“/>:

</carousel>

<carousel data_event_changed_flag=“FALSE" name="car02" start_time="00:20:00"><module module_id="0000" version_up_flag="TRUE“/>

:<module module_id="0001" version_up_flag="TRUE“/>

:</carousel>

<carousel data_event_changed_flag=“FALSE" name="car03" start_time="00:40:00"><module module_id="0000" version_up_flag="TRUE“/>

:<module module_id="0001" version_up_flag="TRUE“/>

:</carousel>

</data_es></bcml>

Page 11: データ放送でできること DRP東京斎藤聡 · データ放送の主な用途 番組進行に合わせ、番組を補完するデータや壁紙などの表示 ニュースや天気予報など、番組とは独立したデータの表示

あいうえおかきくけこさし

XXXXXXXX

静止画

テキスト バイナリテーブル

<html><head>………<body>

<div><object ….

</div>::

BML

BCML

コンテンツ

あいう

Car1 Car2

3:00 5:30

・マルチパート化・カルーセル化・PSI付加・パケット化

オーサリング

ARIB STD-B35の搬入形式

パケタイズ

データ放送の制作系統

データ放送のみのTransport Stream

レイアウト、画面遷移などの設定・確認

タイムチャート設定・確認

※ごく簡単なもので、時間的な変化があまりなければ、テキストエディタと開発用BMLブラウザでも代行可能

プログラミング

※DRP東京ではこの形式で送出可能となる※監視用受信機で動作確認できる一次リンク

BML Webサーバ

Page 12: データ放送でできること DRP東京斎藤聡 · データ放送の主な用途 番組進行に合わせ、番組を補完するデータや壁紙などの表示 ニュースや天気予報など、番組とは独立したデータの表示

DRP東京データ放送制作・検証系統

BCML

コンテンツ

・マルチパート化・カルーセル化・PSI/SI付加(PAT,PMT,NIT,

BIT,SDT)・パケット化・多重フレーム化

ARIB STD B-35の搬入形式(パソコンのファイル)

パケタイズ(自作:Remux機能込み)

MTX100TSプレーヤ

TSファイル

TSファイル(204Byte

format)

VG3100TOFDM変調器

TS出力 クロック

OFDM微弱電波(98ch)

・データ放送コンテンツ制作者が少ないのは、コンテンツ試写環境に費用がかかるから・・・・しかし、最低限「開発用ブラウザ」と「パケタイザ」「OFDM変調機」は欲しい

あいうえおかきくけこさし

XXXXXXXX

静止画

テキストバイナリテーブル

<html><head>………<body>

<div><object ….

</div>::

BML

あいう

オーサリング(コーディング)

開発用BMLブラウザによるレイアウト、画面遷移などの設定・確認

プログラミング

Page 13: データ放送でできること DRP東京斎藤聡 · データ放送の主な用途 番組進行に合わせ、番組を補完するデータや壁紙などの表示 ニュースや天気予報など、番組とは独立したデータの表示

画面の大きさなど

← 240ピクセル→

動画エリア

←上から約340ピクセル

480ピクセル

データ放送表示エリアは動画とは別に確保される

480 x 240 ピクセル、携帯では動画エリアを表示しない場合上から340ピクセルくらいが初期表示される。上下キーでスクロールする

文字の大きさ

small、medium、largeの指定が可能で、実際の大きさは規定がない。

実際はsmall=16pt、medium=20pt、large=30pt

図形

JPEG、GIF、アニメーションGIFが使用可能

Page 14: データ放送でできること DRP東京斎藤聡 · データ放送の主な用途 番組進行に合わせ、番組を補完するデータや壁紙などの表示 ニュースや天気予報など、番組とは独立したデータの表示

画面遷移

<?xml version="1.0" encoding="Shift_JIS" ?><!DOCTYPE html PUBLIC "-//ARIB//DTD XHTML BML 13.0//JA" "http://www.arib.or.jp/B24/DTD/bml_13_0.dtd"><?bml bml-version="13.0" ?>

<html><head><title></title><script><![CDATA[function onKeyDown() 画面遷移を行う関数{if(document.currentEvent.keyCode==19){ 「決定キー」が押されていたら

launchDocument(“~/0010/top.bml”,cut); ジャンプ!}

}]]></script></head>

<body><p id=“T01” style=“left:0px; top:318px; width:240px; height:40px; font-size:medium;”><a id=“nx0” onkeydown=“onKeyDown();”>次のページ</a></p>

文字にフォーカスがあるときにキーを押すと関数onKeyDown()を実行</body></html>

BMLの書き方(一部省略しています)

launchDocument(URL)という関数で他画面へ遷移する。

HTMLの画面遷移はa要素で記述される場合が多いがBMLではScriptから起動されることが多いため関数の形での実装が行われたと思われる。

Page 15: データ放送でできること DRP東京斎藤聡 · データ放送の主な用途 番組進行に合わせ、番組を補完するデータや壁紙などの表示 ニュースや天気予報など、番組とは独立したデータの表示

DOM(Document Object Model)

<?xml version="1.0" encoding="Shift_JIS" ?><!DOCTYPE html PUBLIC "-//ARIB//DTD XHTML BML 13.0//JA" "http://www.arib.or.jp/B24/DTD/bml_13_0.dtd"><?bml bml-version="13.0" ?>

<html><head><title></title><script><![CDATA[document.getElementById(“T00”).firstChild.data=“あいうえお”;]]></script></head><body><div id=“DIV1” style=“left:0px; top:0px; width:240px; height:480px;”><p id=“T00” style=“left:0px; top:223px; width:240px; height:248px;”><![CDATA[ ]]></p> 文字表示エリア

:</div></body></html>

・DOMとは文書内のテキストや画像、スタイルをECMAScriptで扱えるようにするための表現方法

初期表示以降、表示内容を変える場合はこのようなスクリプトの実行が必要。“T00”というIDを持つ文字表示領域内容を“あいうえお”にする。

あいうえお

DOM(Document Object Model)

body

P id=“T00”

P Id=“T02”

P Id=“T01”

div id=“DIV1”

BMLの書き方(一部省略しています)

<![CDATA[ ]]>にしておくと、改行も反映される

Page 16: データ放送でできること DRP東京斎藤聡 · データ放送の主な用途 番組進行に合わせ、番組を補完するデータや壁紙などの表示 ニュースや天気予報など、番組とは独立したデータの表示

スタイルを変える(背景色を変える例)

<?xml version="1.0" encoding="Shift_JIS" ?><!DOCTYPE html PUBLIC "-//ARIB//DTD XHTML BML 13.0//JA" "http://www.arib.or.jp/B24/DTD/bml_13_0.dtd"><?bml bml-version="13.0" ?>

<html><head><title></title><script><![CDATA[function func1() { 背景色を変える関数

document.getElementById("BOD1").normalStyle.backgroundColor = "yellow";}function func2() {

document.getElementById("BOD1").normalStyle.backgroundColor = “green";}]]></script></head>

<body id=“BOD1” style=“background-color:#FFFFFF;”> 最初の背景色は白<div id="DIV1" style="left:0px; top:0px; width:240px; height:480px;"><object data=“drp2.jpg” id=“OBJ01” style=“left:0px; top:0px; width:240px; height:175px;”type=“image/jpeg” onclick=“func1();”/> 画像をクリックするとfunc1()を実行<p id="T00" style="left:50px; top:180px; width:160px; height:40px; color:#000000; font-weight:bold; font-size:medium;"><a onclick="func2();">試験電波発射中</a></p> 文字をクリックするとfunc2()を実行</div>

</html>

BMLの書き方(一部省略しています)

Page 17: データ放送でできること DRP東京斎藤聡 · データ放送の主な用途 番組進行に合わせ、番組を補完するデータや壁紙などの表示 ニュースや天気予報など、番組とは独立したデータの表示

DOMによる操作の例

t = document.getElementById(“XX”).value;入力BOXからのテキスト取得

document.getElementById(“XX”).normalStyle.backgroundColor= “yellow”;

同様に変更可能なスタイル

borderTopColor(Right,Left,Bottomも)

color、fontWeight、visibility、usedKeyList

スタイルの変更

k = document.currentEvent.keyCode;キーの取得

document.getElementById(“XX”).data = “a.gif”;画像の変更

document.getElementById(“XX”).firstChild.data = “あいう”;テキストの変更

スクリプトの書き方操作項目

Page 18: データ放送でできること DRP東京斎藤聡 · データ放送の主な用途 番組進行に合わせ、番組を補完するデータや壁紙などの表示 ニュースや天気予報など、番組とは独立したデータの表示

コンテンツデモ

・色を変える・画像を変える・ランダムカラー・ビンゴ!・マスターマインド

Page 19: データ放送でできること DRP東京斎藤聡 · データ放送の主な用途 番組進行に合わせ、番組を補完するデータや壁紙などの表示 ニュースや天気予報など、番組とは独立したデータの表示

BML特有の機能「NVRAM」

<?xml version="1.0" encoding="Shift_JIS" ?><!DOCTYPE html PUBLIC "-//ARIB//DTD XHTML BML 13.0//JA" "http://www.arib.or.jp/B24/DTD/bml_13_0.dtd"><?bml bml-version="13.0" ?><html><head><title></title><![CDATA[ function func1() {

ra = new Array;ra = browser.readPersistentArray("nvram://00;0006;P2progroup/5","S:1V");// 内容・・・ra[0]

}function func2() {

na = new Array;na[0] = browser.random(1000).toString(10); //書き込み内容・・1000以下の乱数rc = browser.writePersistentArray("nvram://00;0006;P2progroup/5","S:1V",na);

}]]>:

BMLの書き方(関連部分のみ) NVRAMは受信機の電源を切っても情報が保存されるメモリ。番組に付随する「ポイント」など、長期的に受信機に情報を保持したい場合に使用

ブロックの指定→ nvram://<sound_broadcaster_affiliation_id>;<service_id>;P2progroup/<Block番号><sound_broadcast_affiliation_id>:系列ID、DRPは00および01<service_id>:サービスID、これに“0000”~“0007”を指定すると、系列内共通となる

実際のサービスIDを指定すると、サービス専用領域となる<ブロック番号>:0~15、各ブロック64Byteまで

系列領域は携帯受信機では0と1の2系列のみ実装されているもようサービス専用領域は1系列当たり8サービス分実装が推奨されている

ブロック指定URI データ構造(バイナリテーブルと同様)

書き込み内容配列

Page 20: データ放送でできること DRP東京斎藤聡 · データ放送の主な用途 番組進行に合わせ、番組を補完するデータや壁紙などの表示 ニュースや天気予報など、番組とは独立したデータの表示

Block0 Block1 Block2 Block3 Block4 Block5 ・・・・・・・・・・・・・・・・・・ Block15

Block0 Block1 Block2 Block3 Block4 Block5 ・・・・・・・・・・・・・・・・・・ Block15

Block0 Block1 Block2 Block3 Block4 Block5 ・・・・・・・・・・・・・・・・・・ Block15

系列内共通0000

Block0 Block1 Block2 Block3 Block4 Block5 ・・・・・・・・・・・・・・・・・・ Block15個別サービス1

系列内共通0001

系列内共通0007

Block0 Block1 Block2 Block3 Block4 Block5 ・・・・・・・・・・・・・・・・・・ Block15個別サービス2

Block0 Block1 Block2 Block3 Block4 Block5 ・・・・・・・・・・・・・・・・・・ Block15個別サービス8

64 x 16ブロック = 1KByte

8KByte

8KByte

系列01

NVRAMの容量

Block0 Block1 Block2 Block3 Block4 Block5 ・・・・・・・・・・・・・・・・・・ Block15

Block0 Block1 Block2 Block3 Block4 Block5 ・・・・・・・・・・・・・・・・・・ Block15

Block0 Block1 Block2 Block3 Block4 Block5 ・・・・・・・・・・・・・・・・・・ Block15

系列内共通0000

Block0 Block1 Block2 Block3 Block4 Block5 ・・・・・・・・・・・・・・・・・・ Block15個別サービス1

系列内共通0001

系列内共通0007

Block0 Block1 Block2 Block3 Block4 Block5 ・・・・・・・・・・・・・・・・・・ Block15個別サービス2

Block0 Block1 Block2 Block3 Block4 Block5 ・・・・・・・・・・・・・・・・・・ Block15個別サービス8

64 x 16ブロック = 1KByte

8KByte

8KByte

系列00

実用化試験放送のNVRAMは32KByte

Page 21: データ放送でできること DRP東京斎藤聡 · データ放送の主な用途 番組進行に合わせ、番組を補完するデータや壁紙などの表示 ニュースや天気予報など、番組とは独立したデータの表示

BML特有の機能「Ureg」

<?xml version="1.0" encoding="Shift_JIS" ?><!DOCTYPE html PUBLIC "-//ARIB//DTD XHTML BML 13.0//JA" "http://www.arib.or.jp/B24/DTD/bml_13_0.dtd"><?bml bml-version="13.0" ?><html><head><title></title><![CDATA[function junp() {brouser.Ureg[10] = “Hello”; Ureg[10]に”Hello”と設定launchDocument(“page2.bml”,cut); page2に遷移

}]]></script></head>:

BMLの書き方(関連部分のみ)

<?xml version="1.0" encoding="Shift_JIS" ?><!DOCTYPE html PUBLIC "-//ARIB//DTD XHTML BML 13.0//JA" "http://www.arib.or.jp/B24/DTD/bml_13_0.dtd"><?bml bml-version="13.0" ?><html><head><title></title><![CDATA[function init() { “T00”というIDがついている文字欄にUreg[10]の内容を表示document.getElementById("T00").firstChild.data= brouser.Ureg[10];

}]]></script></head>:

Page2.bml

Page1.bml

・NVRAMが電源OFFでも消えないメモリであるのに対し、Uregは同じサービス内のみ(再選局しない範囲で)記憶を保持する。・この他、電源ON~OFFまで値を保持するGregもある

・64個の文字列。各256Byteまで。Browser.Ureg[0~63]で設定・参照する。

Page 22: データ放送でできること DRP東京斎藤聡 · データ放送の主な用途 番組進行に合わせ、番組を補完するデータや壁紙などの表示 ニュースや天気予報など、番組とは独立したデータの表示

Ureg、Gregの容量

Ureg[0]

256Byte

16KByte

Ureg

Ureg[1]

Ureg[2]

Ureg[63]

Greg[0]

256Byte

16KByte

Greg

Greg[1]

Greg[2]

Greg[63]

・再選局するまで記憶保持・サービス内画面間で値を共有・放送コンテンツから通信コンテンツへ遷移する際のパラメータ渡しにも使える。

・電源ONからOFFまで記憶保持・再選局しても値を保持・複数の放送局間でのパラメータ渡しに使える。

Page 23: データ放送でできること DRP東京斎藤聡 · データ放送の主な用途 番組進行に合わせ、番組を補完するデータや壁紙などの表示 ニュースや天気予報など、番組とは独立したデータの表示

BML特有の機能「バイナリテーブル」

<?xml version="1.0" encoding="Shift_JIS" ?><!DOCTYPE html PUBLIC "-//ARIB//DTD XHTML BML 13.0//JA" "http://www.arib.or.jp/B24/DTD/bml_13_0.dtd"><?bml bml-version="13.0" ?>

<html><head><title></title><script><![CDATA[function disp() BinaryTable表示用関数{var BTB="/80/0001/text1.btb"; var FMT="1,S:1V";var bt=new BinaryTable(BTB,FMT); var tAry=bt.toArray(0,1); bt.close();document.getElementById("T00").firstChild.data=tAry[0][0];}]]></script></head><body onload=“disp()” style=“background-color:#FFFFFF;”> 関数disp()を実行<div id=“DIV1” style=“left:0px; top:0px; width:240px; height:480px;”> 画面全体<object data="image1.jpg" id="OBJ00" style="left:45px; top:9px; width:150px; height:200px;" type="image/jpeg"/><p id=“T00” style=“left:0px; top:223px; width:240px; height:248px; color:#000000; font-weight:bold; font-size:small;”><![CDATA[]]></p> 文字表示エリア</div></body></html>

BMLの書き方(一部省略しています)

同じ構造で多くのデータを次々表示したい場合、通信ではデータベース+CGIで表示するのが一般的。データ放送の場合は、データベースに相当するものを「バイナリテーブル」として放送し、BMLのスクリプトがそれを逐次表示する。毎日変更するような可変テキスト部分などはバイナリテーブル化すると便利

text1.btb,1表示テキストS:1V【これかラジオ】¥n¥n「これからのラジオ」の意。

BinaryTableの元ファイル

Page 24: データ放送でできること DRP東京斎藤聡 · データ放送の主な用途 番組進行に合わせ、番組を補完するデータや壁紙などの表示 ニュースや天気予報など、番組とは独立したデータの表示

バイナリテーブル作成方法

BinaryTableの元ファイル(CSV)

kion.btb,1県番号,県名,県庁所在地,最低気温,最高気温U:1B,S:1V,S:1V,I:1B,I:1B1,北海道,札幌市,-10,-42,青森県,青森市,-5,03,岩手県,盛岡市,-6,04,宮城県,仙台市,-2,35,秋田県,秋田市,-4,06,山形県,山形市,-4,17,福島県,福島市,-1,48,茨城県,水戸市,-4,99,栃木県,宇都宮市,-5,810,群馬県,前橋市,-3,611,埼玉県,さいたま市,-4,812,千葉県,千葉市,1,1013,東京都,東京23区,2,914,神奈川県,横浜市,1,10

BinaryTable生成ツール

U:1B 符号無し整数1Byte → 0~255S:1V 長さ可変文字列I:1B 符号付き整数1Byte → -128~127

1行目は17Byte 6Byteの文字列 -10BinaryTable

Page 25: データ放送でできること DRP東京斎藤聡 · データ放送の主な用途 番組進行に合わせ、番組を補完するデータや壁紙などの表示 ニュースや天気予報など、番組とは独立したデータの表示

データイベント切替とモジュールアップデート

・データ放送は番組とは別に進行することが多いので、番組(イベント)とは別にデータイベントという単位で扱う。・イベント内に多数のデータイベントがある場合もあるし、チャンネルのポータル画面にように、複数のイベントにまたがるデータイベントもありうる。データイベントの内容ををローカルコンテンツという。・ローカルコンテンツはカルーセルで構成されるが、伝送するモジュールの内、1つでも内容に変更があったら、DIIのバージョンは更新される。

・データイベント切替=大切替(強制的にスタートアップページに戻る)、モジュールアップデート=小切替

ローカルコンテンツ1 ローカルコンテンツ2 ローカルコンテンツ3

イベント

データイベント1 データイベント2 データイベント3

カルーセル1 カルーセル2 カルーセル3 カルーセル4

DIIdata_event_id=1

DII_version=0

DIIdata_event_id=1

DII_version=1

DIIdata_event_id=1

DII_version=2

DIIdata_event_id=1

DII_version=3

あるモジュールmoduleId=0000moduleVersion=0

あるモジュールmoduleId=0000moduleVersion=1

あるモジュールmoduleId=0000moduleVersion=2

あるモジュールmoduleId=0000moduleVersion=3

DIIdata_event_id=2

DIIdata_event_id=3

コンテンツ

時間

DIIdata_event_id=1

データイベント切替 モジュールアップデート

Page 26: データ放送でできること DRP東京斎藤聡 · データ放送の主な用途 番組進行に合わせ、番組を補完するデータや壁紙などの表示 ニュースや天気予報など、番組とは独立したデータの表示

「モジュールアップデート」を検知し画面を自動更新

カルーセル1

モジュール0000

モジュール0001

モジュール0001

・・・・・・・・・・

カルーセル2

モジュール新0000

放送TS

0000

0001

待機状態

コンテンツメモリ

BMLエンジン

画面

時間

0000を表示

0000

0001

0000が更新!

新しい0000を格納(ロック)せよ

まだ旧0000を表示

0001

0000

新しいモジュールを格納中

0000

0001

格納(ロック)完了

画面更新せよ!

新0000を表示

コンテンツの更新を検知し、自動的に画面更新を行う

受信機

① ② ③

Page 27: データ放送でできること DRP東京斎藤聡 · データ放送の主な用途 番組進行に合わせ、番組を補完するデータや壁紙などの表示 ニュースや天気予報など、番組とは独立したデータの表示

画面の自動更新のスクリプト

<?xml version="1.0" encoding="Shift_JIS" ?><!DOCTYPE html PUBLIC "-//ARIB//DTD XHTML BML 13.0//JA" "http://www.arib.or.jp/B24/DTD/bml_13_0.dtd"><?bml bml-version="13.0" ?>

<html><head><title></title><![CDATA[function func1(){ モジュール更新を検知したら・・・

if(document.currentEvent.status==0){browser.unlockModuleOnMemoryEx(“/80/0000”); 現モジュールのロックをはずしbrowser.lockModuleOnMemoryEx(“/80/0000”); 新モジュールにロックをかける

}}

function func2(){ モジュールがロックされたら・・・if(document.currentEvent.status==0){

browser.launchDocument(“startup.bml”,“cut”); 新しいモジュールのstartup.bmlに遷移する(再表示する)}

}]]></script>

<bml:bevent><bml:beitem id="MU00" type="ModuleUpdated" onoccur=“func1();" module_ref="/80/0000" subscribe="subscribe"/>

ModuleUpdate検知を指示<bml:beitem id="ML00" type="ModuleLocked" onoccur=“func2();" module_ref="/80/0000" subscribe="subscribe"/>

ModuleLock検知を指示</bml:bevent>

</head>:

BMLの書き方(関連部分のみ)

内容が更新されたら自動的に表示を更新する

モジュール更新とモジュールロックを監視することを宣言しておく

Page 28: データ放送でできること DRP東京斎藤聡 · データ放送の主な用途 番組進行に合わせ、番組を補完するデータや壁紙などの表示 ニュースや天気予報など、番組とは独立したデータの表示

カルーセル用ES放送TS

時間

BML特有の機能「イベントメッセージ」

イベントメッセージ用ES

・・・・・

・・・・・

・・・・・

・・・・・

モジュールXXXX

モジュールXXXX

モジュールXXXX

イベントメッセージ

スクリプトが動く契機(トリガー)を放送で送ることができる

必要ないときは送出しない

イベントメッセージ=カルーセルとは別に送出できるトリガー信号

0~254のIDと最大244バイトの文字を表現できる

各ID別にバージョン番号が付けられ、同じIDでもバージョンが異なれば別メッセージとして扱われる

Page 29: データ放送でできること DRP東京斎藤聡 · データ放送の主な用途 番組進行に合わせ、番組を補完するデータや壁紙などの表示 ニュースや天気予報など、番組とは独立したデータの表示

BML特有の機能「イベントメッセージ」

<?xml version="1.0" encoding="Shift_JIS" ?><!DOCTYPE html PUBLIC "-//ARIB//DTD XHTML BML 13.0//JA" "http://www.arib.or.jp/B24/DTD/bml_13_0.dtd"><?bml bml-version="13.0" ?>

<html><head><title></title><![CDATA[ function func0(){ イベントメッセージ0を検知したら起動される関数

if(document.currentEvent.status==0){document.getElementById(“T00”).firstChild.data=“受付開始しました”;}

}function func1(){ イベントメッセージ1を検知したら起動される関数

if(document.currentEvent.status==0){document.getElementById(“T00”).firstChild.data=“受付終了しました”;}

}]]></script><bml:bevent><bml:beitem id=“EM00" type=“EventMessageFired" onoccur=“func0();" module_ref=“/89" message_id = "0" subscribe = "subscribe"/><bml:beitem id=“EM00" type=“EventMessageFired" onoccur=“func1();" module_ref=“/89" message_id = “1" subscribe = "subscribe"/>

イベントメッセージ検知を指示</bml:bevent></head>:

BMLの書き方(関連部分のみ)

イベントメッセージを受信するスクリプト例

※イベントメッセージはセクション形式で送出される。

BMLにあらかじめ受信時の振る舞いを規定しておく。

左の例はクイズなどの回答受付開始終了の告知を画面に表示するもの。

イベントメッセージの送出にはそれに対応したデータTSの送出設備が必要。

Page 30: データ放送でできること DRP東京斎藤聡 · データ放送の主な用途 番組進行に合わせ、番組を補完するデータや壁紙などの表示 ニュースや天気予報など、番組とは独立したデータの表示

BML特有の機能「音声ESの切替え」

<?xml version="1.0" encoding="Shift_JIS" ?><!DOCTYPE html PUBLIC "-//ARIB//DTD XHTML BML 13.0//JA" "http://www.arib.or.jp/B24/DTD/bml_13_0.dtd"><?bml bml-version="13.0" ?>

<html><head><title></title><![CDATA[ function func11(){ タグ値11の音声に切り替える関数

browser.X_DRP_setMainAudioStream(“/11”);}function func12(){ タグ値12の音声に切り替える関数

browser.X_DRP_setMainAudioStream(“/12”);}function func13L(){ タグ値13の音声Lに切り替える関数

browser.X_DRP_setMainAudioStream(“/13;1”);}function func13R(){ タグ値13の音声Rに切り替える関数

browser.X_DRP_setMainAudioStream(“/14;2”);}]]></script></head>:

BMLの書き方(関連部分のみ) 音声ESを複数送出している場合、BMLから切り替えることができる

音声ESは0x10~0x2Fのタグ値で複数配置することができる。

放送用拡張関数でタグ値を指定して切り替える。

※デュアルモノの音声の場合、L,Rの指定が可能

Page 31: データ放送でできること DRP東京斎藤聡 · データ放送の主な用途 番組進行に合わせ、番組を補完するデータや壁紙などの表示 ニュースや天気予報など、番組とは独立したデータの表示

コンテンツデモ

・NVRAM ・バイナリテーブル(・イベントメッセージは後ほど)

Page 32: データ放送でできること DRP東京斎藤聡 · データ放送の主な用途 番組進行に合わせ、番組を補完するデータや壁紙などの表示 ニュースや天気予報など、番組とは独立したデータの表示

双方向機能と通信コンテンツ

0.そもそも双方向機能とは・・・・・BSデジタル当時、受信機の2400bpsモデムと電話線を用いて「集計センター」にピ~ヒョロヒョロとBASIC手順で電文を送っていたもの。(sendTextData()という関数)

1.地上デジタルの段階で受信機にインターネット接続機能が必須になり、TCP/IPにおいて上記相当の機能を実現するため、transmitTextDataOverIP()という関数が実装された。(HTTP POST電文を送信する)

2.インターネット接続が可能となったため、BMLでもWebサービスが可能となった。Web上のコンテンツを放送コンテンツと区別し、通信コンテンツと呼ぶ。放送から最初に遷移する通信コンテンツは、放送事業者が認知したサービスという意味合いで、データ放送の延長として機能的に優遇される。放送事業者からは俗に「一次リンクコンテンツ」と呼ばれている。

※上記1と2は全く別の機能1は通常、放送コンテンツとして使用するものだが、通信コンテンツでも使用可能。通常、Webサービスは、formによりサーバにPOST電文を投げると画面遷移を伴うが、この関数を用いると画面遷移をせずに処理が続行される。これは最近のAJAX的手法と同様なもので、いろいろな応用が考えられる。

Page 33: データ放送でできること DRP東京斎藤聡 · データ放送の主な用途 番組進行に合わせ、番組を補完するデータや壁紙などの表示 ニュースや天気予報など、番組とは独立したデータの表示

一次リンクコンテンツの特徴

データ放送コンテンツと同様BMLで記述

放送(音声・簡易動画)と組み合わせて表示が可能

放送帯域とは無関係に、サーバの容量の許す限り多くのページを作成することができる

CGIやデータベース等、ホームページ作成のテクニックを駆使し、視聴者各々へ別のコンテンツを提示することも可能

番組への意見やリクエスト等を受け取る双方向コンテンツを作れる

(表示は放送、受け取りのみサーバとすることも可能)

欠点:

時間的推移がないので、サーバの内容がさし変わっても自動的に表示を更新することはできない

通信機能のない受信機では表示できない

Page 34: データ放送でできること DRP東京斎藤聡 · データ放送の主な用途 番組進行に合わせ、番組を補完するデータや壁紙などの表示 ニュースや天気予報など、番組とは独立したデータの表示

携帯受信機の通信先制限

携帯受信機は系列ID毎に通信先が制限されている。

系列ID:BIT(broadcaster information table)内のsound_broadcast_affiliation_id

※実用化試験放送において、可能な系列IDは00または01で、携帯受信機はd-radio.or.jpドメイン配下のサーバでなければ通信しない。

Page 35: データ放送でできること DRP東京斎藤聡 · データ放送の主な用途 番組進行に合わせ、番組を補完するデータや壁紙などの表示 ニュースや天気予報など、番組とは独立したデータの表示

通信コンテンツの起動

放送コンテンツから一次リンクコンテンツへの遷移launchDocument(“URL”)にてhttpから始まるURLを指定する。

放送コンテンツからHTMLのWebサービスへの遷移X_DRP_startResidentApp(“ComBrowser”,1, “”, “URL”)にていわゆるインターネットブラウザを起動し、URLに遷移する。

データ放送画面はバックグラウンドで残っている。

携帯受信機とPC(USB受信機)の区別遷移するURLが異なる場合など、X_DPA_getComBrowserUA()で自身が携帯受信機かPCかを調べる。

通信コンテンツから放送コンテンツへの遷移一次リンクコンテンツの場合、launchDocument(“URL”)にてarib-dcから始まるURLを指定するか、quitDocument()を実行して放送のstartup.bmlに戻る

HTMLの場合、インターネットのブラウザを終了することで放送コンテンツに復帰

Page 36: データ放送でできること DRP東京斎藤聡 · データ放送の主な用途 番組進行に合わせ、番組を補完するデータや壁紙などの表示 ニュースや天気予報など、番組とは独立したデータの表示

双方向番組用の機能

双方向受付サーバ(一次リンクサーバと

兼用可能)集計サーバEメールの形で転送transmitTextDataOverIP()

HTTP POSTでサーバに電文を送信する

双方向関数(transmitTextDataOverIP)で、番組への意見などをサーバに送信することが可能。

端末から受け取った電文をCGIでメール形式にし、番組で活用することができる。

mailtoで端末のメールソフトを起動することもできるが、その場合送信先メールアドレスが晒されるので、スパムメールを誘発しやすい。送信先を隠蔽することで、スパムを起こしにくい対応となる。

Page 37: データ放送でできること DRP東京斎藤聡 · データ放送の主な用途 番組進行に合わせ、番組を補完するデータや壁紙などの表示 ニュースや天気予報など、番組とは独立したデータの表示

双方向番組の手法例

双方向受付サーバ(一次リンクサーバと

兼用可能)集計サーバEメールの形で転送transmitTextDataOverIP( )

HTTP POSTでサーバに電文を送信する

送信設備

ディレクターが取捨選択し

イベントメッセージ送出

Mux

データTSリアルタイムパケタイズ

画像差し替え等

双方向機能を他の機能と組み合わせることで、通信と放送双方の特徴を出すことができる。

イベントメッセージと組み合わせて、番組への反響を即フィードバック

Page 38: データ放送でできること DRP東京斎藤聡 · データ放送の主な用途 番組進行に合わせ、番組を補完するデータや壁紙などの表示 ニュースや天気予報など、番組とは独立したデータの表示

通信と放送の特性を組み合わせたデモ

送信設備

一次リンクWebサーバ

画面 NVRAM

BMLエンジン

NVRAMの情報にしたがって機能制限を行う

データ放送でNVRAMに情報を書き込む

放送帯域を気にせず画像等にアクセス

Webサーバにあるたくさんの画像を組み合わせてアバター(ネットワーク上のキャラクター)の着せ替えを表現。

→放送帯域では実現できないくらいの多くの画像

ただし、毎回の放送を聴くと、遊べる範囲が増えてくる。

放送コンテンツでNVRAMにカギとなる情報を送る。

Page 39: データ放送でできること DRP東京斎藤聡 · データ放送の主な用途 番組進行に合わせ、番組を補完するデータや壁紙などの表示 ニュースや天気予報など、番組とは独立したデータの表示

コンテンツデモ

・携帯、PC判別・1linechat→メール・イベントメッセージ受信・アバター着せ替え

Page 40: データ放送でできること DRP東京斎藤聡 · データ放送の主な用途 番組進行に合わせ、番組を補完するデータや壁紙などの表示 ニュースや天気予報など、番組とは独立したデータの表示

まとめ

データ放送はデジタル放送を特徴付ける重要な機能であり、受信機メーカーや携帯キャリアに拠らずにコンテンツやビジネスを展開できるプラットフォームである。

アイデア次第で無限の可能性! 放送の持つ特性、通信の持つ特性をうまく使い分けて、デジタル放送ならではの番組作りを!