とんだクリスマスプレゼントだわ。こういう話は末端社員が一番後に知るのが規定路線なのね・・・すげー落ち込むわ。誰か仕事ください。
携帯には標準装備と言えるまでになったモバイルテレビ放送であるワンセグ放送規格。 通勤時などに便利に使っている人も多いでしょう。この番組には字幕が付いていることが多く、 揺れる車内などで、映像内のテロップが読めなくても、なんとなく中身がわかったりして重宝する。 また、データ放送もきっちりサポートされており、局が提供するちっちゃなホームページという趣のコンテンツも楽しめる。
この字幕を抜き出して、Namazuとかに食わせれば、 テレビ番組を文字列検索 できるのではないか? というのが事の発端である。
読み解くためには資料が必要だ。
1セグ放送教科書 (インプレス標準教科書シリーズ)(羽鳥 光俊) |
→1セグ放送教科書。 万が一買われる人がいれば、e-honで「錦堂 谷書店」を書店登録して買われると僕が喜びます(ぉ)。 あとはARIB(電波産業会)の規格書、STD B-24, STD B-5, STD TR-14。しかし...これらは拾い読みするには 大変なので、なるべく後回しにすることにする。
ワンセグ放送はMPEG-TSで多重化されているので、TSパーサとPESパーサは、どこかから持ってこなければならない。 188バイトに区切られたTSパケットを選別するにはPIDが必要。しかし、字幕に何のPIDが割り当てられているかは、 放送局によって異なる。それはPMTパケットを解析しなければわからないので、PMTパーサも必要。 ワンセグ放送では、PMTテーブルの項目のうち stream type=0x6 (MPEG-2 Packetized Elementary Stream packets containing private data)になっているものが、ほぼ字幕とみて間違いない*1。 より正確にはTableID=0x52のStream Identifierを見付けて(len=1) ESタグの値が0x87 であるもの。ここまでパースすれば完璧。「教科書p148 図5-23」参照。
*1 ちなみにビデオは0xd(ISO/IEC 13818-6 type D),オーディオは0xf(ISO/IEC 13818-7 Audio with ADTS transport syntax)
TSパケットの中身はこういう階層になっている。資料は「教科書p167」。TS,PESの情報はヘッダを読み飛ばす以外に使わないので説明は割愛*1。
TSヘッダ |
PESヘッダ |
data_group() |
data_group()は「ARIB STD-B24 第ー編 第3部 第9章 字幕・文字スーパーの伝送」。data_group()にはdata_group_idという変数があり、これで管理データdata_management_data()と字幕本体caption_data()を区分けする。data_group_idは6bitあるのだが、管理データは0x00か0x20, 字幕本体は0x1〜0x8か0x21〜0x28と2ペアになって分かれている。運用上、放送する字幕言語が1種類(日本語のみ)の場合は、0x00〜の組で運用し、 2種類の場合は0x20〜の組で管理するらしい。つまり、日本語字幕をダンプするという目的を設定したとき、管理テーブルを解析してISO_639_language_codeをサーチして'jpn'の言語テーブル行をみつけ、そのlanguage_tagをとりだし、 管理テーブルのdata_group_id + language_tag + 1したものが字幕のdata_group_idとなる 。
data_management_data()もcaption_data()も字幕本体であるdata_unit()を複数個含む。その総バイト長を指示するdata_unit_loop_length変数が前置されている。
data_unit_loop_length:24 = data_unit() { unit_separator:8 data_unit_parameter:8 data_unit_size:24 for (i = 0; i < data_unit_size; i++) { data_unit_data_byte:8 } }のバイト数 * N回
このN回の方はへッダには表れないので注意。ただ、ダンプして見た限りは1個以上のdata_unit()が入っていること自体けっこう稀。 データ放送やファームウェアアップデートで使われているデータカルーセルとは異なり、PES独立型字幕データにはフラグメントの概念がないため、188バイトに必ず納めなければならず、連続して挿入する場面が考えられないのかもしれない*2。
data_unit_parameter=0x20が本文、0x30がDRCS。DRCSというのはいわゆる外字図形データ*1。本文は Cプロファイル8単位符号 というEUC-JPに似た形式。0x00〜0x1fは制御符号、0xfcxx〜0xffxxは追加符号と外字呼出に割り当てられている。「教科書p168 図5-34」「ARIB STD-B24 第ー編 第3部 第5章」。ただ、普通のPC UNIXに備えられたフォントでは、ARIBの追加符号部分はほとんど表示できないため...字幕放送で使われる音符マークとかが表示できないんだ...。
*1 アナログ放送の時代から使われてたようだ...歴史は意外に古い
2009年1月6日: ディレクトリ指定(D:\TS)に対応。ソースコードとWin32バイナリも同梱。
@echo off :LOOP dumpeit.exe D:\TS goto LOOP
みたいなバッチを書いて実行しておけば、OneTwoFour.exeが作ったそばからTSファイルを変換していきます。 でも、HDDのランダムアクセスが遅い場合はOneTwoFour.exeが落ちるかも。 少しウェイト入れないといけないかもしれません。Linuxなら各種UNIX由来コマンド群と組み合わせたほうが良いでしょう。
どなたか番組表CGI書いていただけませんか。
みなとみらい線で一駅移動して本日のディナー、 ローストビーフの鎌倉山 さんへ。(反対側に個室もあったようだが)基本4席しかないような レストラン初めて入ったよ('A`)
一応、カジュアル過ぎず(煩さそうなところは却下)、フォーマル過ぎず(キツいドレスコードあるところは却下)って感じで、11月頃から必死こいて調べてたんだよね。しかし、思いのほか選択肢がなかった印象。予約は早めにして正解か。
貝類とフォアグラ。後で揚げたての蟹の天ぷらが来たww 極めて和風な献立だが美味しい。
アルコールを飲むとgdgdになるのが わかっていたので、食前酒はガス入りミネラルウォーターにしたのだが 、早くもアルコールが欲しくなってくる。
伊勢海老は目の前で包丁をいれられた(ざっくり)
できあがったこれが......ブイヤベース....?? てっきり魚介が沢山入ったスープ( こんなの)を 想像していたのだが、全然違った。
しかし伊勢海老の旨味が出た濃厚なソースがおいしい。 焼きたてフランスパンにつけて食べると捗る。これもワインにあう味だ。
我慢できずに赤ワインのハーフを頼む。テイスティングを頼まれたが、 ここをスマートに決められないのがオタクのダメなところである。
箸休めは野菜をグリルしたもの。
ソースはバジルとチーズ。小さいロマネスコが可愛い。あと写真裏に隠れてるお芋が美味しかったな。
メインはもちろんローストビーフだー!(ドコドコドコ)
シェフと会話していたらちょっとおまけしてくれたようだww ほんとかどうかは知らないが少し多い気がする。 ホースラディッシュも目の前で削ってくれた。これも多めで。
ソースは醤油とグレイビーを選べたので、俺はグレイビーにした。 意外なほどさっぱりと食べられた。肉は柔らかく、もちろん美味い。
箸休め。いずれもどうということはなし。
が、コーヒーカップもポットもきちんと鎌倉山謹製だった。こういう細かいところが可愛い。
通常は3品とのころだが、クリスマスなので全部選べるようだ。
最後.....プリンだけ誰かのまつげが入ってて(俺のかもしれないが) 少しケチがついてしまったかなーというところ。 まあ、お腹いっぱいでそれどころではなかったのだけれどね。
十分美味しかったし素敵な時間を過ごせました。ありがとう 鎌倉山(のシェフたち)
少し落ち着いてきたので書いておこうと思います。
突然の転勤を内々示で言い渡されたのが11月中旬。所属が移動したのが12/1付け。 1/7付けで新しい事業所に出社しろ とのお達し。
まあね....サラリーマンをやっている限り転勤は免れない。そこは理解してるんだ。忙しい部署があって、そこの応援というのならば、転勤まではいかなくても何度かあった。異動後の初めてのあいさつに、現地事業所に12/3に行ったのだけど 行ってみたら机がなかった・・・・
結局、受け入れ先の部署も何も事情を聴いていないことがわかった。 事業部長クラスに聞いても「なぜ異動しなければならなかったのか」が欠片もわからない。
今までの俺のミッションというのは研究職の末席に位置し、 要素技術開発をして、特許提案をして、それを利用した事業のビジネスモデル・ロジックを提示して、新しいサービスにつなげる職務だった。実際にもう12月には試験公開できるレベルのスマートフォンアプリとクラウドサービスを作り上げていたのだ。
しかし突然配属されたのは、とあるハードウェア製品を作っているバリバリの事業部。俺からみると、スマートフォンにおされて 余命3年のしぼみゆく職場 でしかないのだが。
今になってみれば、その部長と談判する、という行為は、およそ不幸な結果しか招かないことはわかる。しかし「話せばわかるだろう」と思って前記のような自分のやってきた仕事を話してしまったんだよね。
矢継ぎ早に「それどこで売れるの?」「開発にいくらかかるの?」「P社もうまくいってないよなやつだよな」「ウチには売る営業部隊ないから」と言われた終わったった・・・・・・
・・・・
・・・
言うなれば、どこの会社のサラリーマンでも一定の割合で経験するであろう 不幸な事故 というだけ。しかし1年以上作ってきたものを、一度も見たこともない人間にガラガラポンされて、あなたは正気でいられます?俺は狂うわ。まさにパソナルームの積み木崩しだよ。
_ 職業。本屋 [錦堂_谷書店の宣伝をして頂き、まことにありがとうございますm(_ノ_)m]
_ ngc [PMT type=0x0D : DSM_CC section data,type=0x1B: H.264/AVC s..]