EPWINGのマルチメディアデータについて hishida@bg.mbn.or.jp 2000.11.10(初版) 2000.12. 4(第三版) 2001.04.29(第四版) 2002.03.11(第五版)  JIS X-4081規格では、EPWING V2以降の静止画、音声、動画などのマルチメディア機能 については記載がありません。  以下では、EBStudioを作成する上で知り得たEPWINGのマルチメディアデータの フォーマットについて、覚え書きを書いておきます。 (その後、「JIS X-4081-2001」によって明らかになったマルチメディアデータに  関する情報を追加しています。)  ちなみにEPWINGのバージョンとマルチメディア機能の対応は、下記の通りです。 EPWING V1.0 EPWINGの基本検索機能をサポート。文字表示・白黒の 図版表示・音声再生ができる。 EPWING V2.0 EPWING V1の基本検索機能に加え、カラー図版表示や 圧縮音声(WAVE)の再生などをサポート。 EPWING V2.0 ST 美術など、幅広いジャンルの書籍のために、カラー画像の 表示と音声の連続再生をサポート。 EPWING V3.0 EPWING V2の拡張機能に加え、MPEG-1の動画再生をサポート。 EPWING V4.0 EPWING V3の拡張機能に加え、圧縮やハードディスク インストール機能をサポート。 EPWING V5.0 EPWING V4.0の拡張機能に加え、JPEGなどのマルチメディア 機能拡張や数式表示などの表現系機能をサポート。 【凡例】 WORD 16bit 整数(ビッグエンディアン) DWORD 32bit 整数(ビッグエンディアン) BCD(n) nバイトの二進化十進数 BYTE[n] nバイトの文字列。EPWING内の漢字コードは必ずJISコード ●モノクロ図版(D0) WindowsのBMPファイルの色数が1(モノクロ2値)ならモノクロ図版(D0)、 2以上ならカラー図版(D2)になるので、BMPのヘッダを調べてどちらを書くか決める。 ・本文 WORD 開始記述子 =1F44 BCD(2) 再生識別番号 =0001 BCD(4) width =0000 0400(例) BCD(4) height =0000 0352(例) BYTE[*] 表示文字列[可変長] JISコード WORD 終了記述子 =1F64 BCD(4) ブロック番号 BCD(2) ブロック内オフセット ブロック番号:オフセットは図版データの先頭を指す。 【実例】400*352のモノクロビットマップ Offs -0--1--2--3--4--5--6--7--8--9--A--B--C--D--E--F 0123456789ABCDEF 04B0 25 36 25 5F 21 23 1F 0A 1F 44 00 01 00 00 04 00 ザミ。.......... 04C0 00 00 03 52 25 22 21 3C 25 46 25 23 25 41 25 67 ....アーティチョ 04D0 21 3C 25 2F 1F 64 00 16 23 79 13 57 1F 0A 1F 09 ーク....y...... 04E0 00 01 1F 41 01 30 25 22 21 3C 25 48 1F 61 21 5A ......アート..【 ・データ領域(書籍構成要素識別子=D0) カラー図版と違ってヘッダ情報はなく、バイナリデータで連続して格納される。 ただしWindowsのBMPファイルから変換する場合、次の注意がいる。 ・BMPのファイルヘッダを削除し、ビットマップ・データのみを格納する。 ・ビットの0/1が逆。Windowsは0=前景色、1=背景色。EPWINGは0=白、1=黒。 ・Y軸の座標原点が上下逆。  (そのまま書き込むと、白黒逆、天地逆になってしまう) ●カラー図版(D2)  BMPはEPWING V2以降、JPEGはV5以降対応のビューア(DDwin,Jammng,OASYS CD-View) であれば表示できる。 ※ただしGIFはビューアが対応していないため、格納しても表示できない。 ・本文 WORD 開始記述子 =1F4D BCD(2) カラー画面表示モード =0009(V3のBMP -広辞苑4版による) =1209(V5のJPEG-広辞苑5版による) 1桁目: 0:DIB 1:JPEG 2桁目: 0:後続の表示用データは1行分(改行まで)表示。印刷複写許可 1:後続の表示用データは無効。印刷複写許可 2:後続の表示用データは全て表示 (1行目名称、2行目著作権表示) 3:予備 4:後続の表示用データは1行分(改行まで)表示。印刷複写禁止 5:後続の表示用データは無効。印刷複写禁止 6:後続の表示用データは全て表示。印刷複写禁止 3桁目: 0:表示位置の調整は再生ソフトにまかせる 1:左に寄せて表示 2:右に寄せて表示 3:中央に表示 4桁目: 1:一般表示(排他的) 2:上書き(重ね合わせ) 9:文字列と混在表示(表示座標は無効) BCD(2) 再生識別番号 =0000 図版データの記録領域の先頭に記述されたデータ表現 形式種別のどれに対応した形式で記録されているかを 先頭からの相対番号で示す。 BCD(2) xpos =0000 BCD(2) ypos =0000 BCD(2) wigth =0000 BCD(2) height =0000 BCD(4) ブロック番号 BCD(2) ブロック内オフセット BYTE[*] 表示文字列[可変長] WORD 終了記述子 =1F6D ブロック番号:オフセットは図版データの先頭を指す。 【実例】 Offs -0--1--2--3--4--5--6--7--8--9--A--B--C--D--E--F 0123456789ABCDEF 0790 21 23 1F 0A 1F 4D 00 09 00 00 00 00 00 00 00 00 。.............. 07A0 00 00 00 16 71 89 01 92 25 22 25 24 25 2C 21 3C .... ..アイガー 07B0 1F 6D 21 21 1F 4D 00 09 00 00 00 00 00 00 00 00 .. ............ 07C0 00 00 00 16 72 44 18 76 25 22 25 24 25 2C 21 3C ....鯆..アイガー 07D0 1F 6D 1F 0A 1F 09 00 01 1F 41 01 30 24 22 24 24 ............あい ・データ領域(書籍構成要素識別子=D2) HONMON中に記録する場合は、ヘッダ(ブロック番号1)の書籍構成要素識別子はD2。 外部ファイルとする場合は、HONMONGという名前のファイルに記録する。 (おそらくEPWING V4からの圧縮辞書形式が導入されたときに、HONMONの外に出し たと思われる) データ領域の先頭32バイトには以下の内容のヘッダがあるが、内容は不明。 22バイトからの4バイトは画面のwidth(640),height(480)らしい。 ちなみにこのヘッダは ALL 0 を書いても検索には差し支えない。 (ヘッダ;先頭32バイト) Offs -0--1--2--3--4--5--6--7--8--9--A--B--C--D--E--F 0123456789ABCDEF 0000 02 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0010 00 01 00 0E 12 00 06 40 04 80 01 01 00 00 00 00 ................ 32バイト目からカラー図版データが連続して格納される。 各図版毎に、 0000 4バイトの文字列"data" 0004 図版のデータサイズ(リトルエンディアン4バイト) 0008 図版データ(ファイルイメージ) 8バイト目からの図版データは、BMPであれ、JPEGであれ、ファイルイメージを 丸ごと格納しているだけである。 (BMPの場合;32バイト目から) Offs -0--1--2--3--4--5--6--7--8--9--A--B--C--D--E--F 0123456789ABCDEF 0020 64 61 74 61 90 BE 01 00 42 4D 90 BE 01 00 00 00 籬゚ ..騨 .... d a t a size=1BE90 ↑ここからBMPファイル 0030 00 00 36 04 00 00 28 00 00 00 7C 01 00 00 2A 01 .. .. .. .. 0040 00 00 01 00 08 00 00 00 00 00 00 00 00 00 12 0B ................ 0050 00 00 12 0B 00 00 00 00 00 00 00 00 00 00 FF FF .............. 0060 FF 00 EF F7 FF 00 D6 EF FF 00 BD E7 FF 00 A5 E7 0070 FF 00 BD DE FF 00 B5 DE FF 00 94 DE FF 00 AD D6 (JPEGの場合;32バイト目から) Offs -0--1--2--3--4--5--6--7--8--9--A--B--C--D--E--F 0123456789ABCDEF 0020 64 61 74 61 36 A0 00 00 FF D8 FF E0 00 10 4A 46 data6::.......JF d a t a size=0A36 ↑ここからJPEGファイル 0030 49 46 00 01 02 01 00 48 00 48 00 00 FF ED 01 E8 IF.....H.H...... 0040 50 68 6F 74 6F 73 68 6F 70 20 33 2E 30 00 38 42 Photoshop 3.0.8B 0050 49 4D 03 E9 00 00 00 00 00 78 00 04 00 00 00 48 IM.......x.....H 0060 00 48 00 00 00 00 03 0D 02 1A FF E2 FF E4 03 2B .H.............+ 0070 02 36 E2 42 05 7B 03 DE 00 02 00 00 02 58 02 58 .6磽.{.......X.X 0080 00 00 00 00 19 73 11 76 00 01 00 00 00 64 00 00 .....s.v.....d.. 0090 00 02 00 01 01 01 00 02 00 01 27 0F 00 01 00 01 ..........'..... ●PCM音声(D8) ・本文 WORD 開始記述子 =1F4A BCD(2) 音声再生モード =0001 1桁目:予備 2桁目: 0:後続の表示用データを一行分(改行まで)表示する 1:後続の表示用データは無効 2:後続の表示用データを全て表示 (1行目が名称、2行目が著作権表示を意味する) 3桁目:予備 4桁目: 0:使用しない(実装の過去の互換を保持するため) 1:簡易PCM 2:MIDI BCD(2) 音声タイプ =0112 1桁目: 0:モノラル 1:ステレオ ※2桁目以降は簡易PCMのみ有効、MIDIでは使用せず 2桁目: 0:アドレス情報がヘッダ情報を指す 1:アドレス情報が波形の始まりを指す 3桁目: 0:16ビットサンプリング 1:8ビットサンプリング 4桁目: 0:44.1kHzサンプリング 1:22.05kHzサンプリング 2:11.025kHzサンプリング BCD(4) 開始位置:ブロック番号 BCD(2) 開始位置:ブロック内オフセット BCD(4) 終了位置:ブロック番号 BCD(2) 終了位置:ブロック内オフセット BYTE[*] 表示文字列[可変長] WORD 終了記述子 =1F6A 開始位置、終了位置は、データ領域中の音声の再生開始位置と終了位置 【実例】 Offs -0--1--2--3--4--5--6--7--8--9--A--B--C--D--E--F 0123456789ABCDEF 05A0 1F 6D 1F 0A 1F 4A 00 01 01 12 00 25 26 22 00 64 ............Β.. 05B0 00 25 26 70 05 43 22 2A 25 22 25 2A 25 38 1F 6A ....→アオジ.. 05C0 1F 0A 1F 09 00 01 1F 41 01 30 24 22 24 2A 21 3E ..........あお‐ ・データ領域(書籍構成要素識別子=D8) HONMON中に記録する場合は、ヘッダ(ブロック番号1)の書籍構成要素識別子はD8。 外部ファイルとする場合は、HONMONSという名前のファイルに記録する。 (おそらくEPWING V4からの圧縮辞書形式が導入されたときに、HONMONの外に出し たと思われる) データ領域には、WAVEファイルのデータチャンクが連続して格納される。 (一続きの長い音声として記録している)。 データ領域の先頭32バイトには以下の内容のヘッダがあるが、内容は不明。 Offs -0--1--2--3--4--5--6--7--8--9--A--B--C--D--E--F 0123456789ABCDEF 0000 01 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 .. ............. 0010 00 01 00 0E 00 00 01 02 00 00 00 00 00 00 00 00 ................ 32バイト目から24バイトのfmtチャンク。56バイト目から単一のdataチャンクが続く。 Offs -0--1--2--3--4--5--6--7--8--9--A--B--C--D--E--F 0123456789ABCDEF 0020 66 6D 74 20 10 00 00 00 01 00 01 00 11 2B 00 00 fmt .........+.. ↑fmtチャンク(24バイト) 0030 11 2B 00 00 01 00 08 00 64 61 74 61 10 92 29 04 .+......data..). ↑dataチャンクの始まり、size=0x4299210 0040 8E 6E 7E 8B 76 83 7B 78 8F 76 73 8F 7A 7A 84 76 始~久ボx竣s循zё 0050 88 82 6D 8A 85 71 86 7B 7E 89 6F 80 8E 70 7F 86 N喝q{~頴.姿.. 0060 77 88 77 77 91 76 74 8C 79 81 7F 72 8E 80 6E 8B www宋t軽..r死n. 0070 80 79 84 75 85 88 6C 84 8A 73 83 7C 7C 8D 71 7A .yеlшsポ|航z ●動画 ・本文 WORD 開始記述子 =1F39 BCD(2) 表示モード =1000 (広辞苑4版) (広辞苑5版では「決まり手」などアニメ) =1201 (広辞苑5版では実写) ※気にせず必ず1000で書いても問題ない 1桁目: 1:MPEG 2桁目: 0:後続の表示用データを一行分(改行まで)表示する 1:後続の表示用データは無効 2:後続の表示用データを全て表示 (1行目が名称、2行目が著作権表示を意味する) 3桁目: 予備 4桁目: 0:一般表示(排他的) 1:上書き(重ね合わせ) BCD(2) 動画識別指標 =9999 BCD(2) xpos =0000 BCD(2) ypos =0000 BCD(2) wigth =0000 BCD(2) height =0000 BCD(4) 開始フレーム番号=00000000 BCD(4) 終了フレーム番号=00000000 BYTE[16] ファイル名[16] JISコードで8文字。空白部分は0x0000 BCD(2) 代替データ格納書籍番号 動画ファイルが利用できない再生システムで代わりに再生するデータ が存在する場合の記録されている書籍。下2桁が登録書籍名管理ファイル 内のエントリ番号 BCD(6) 代替データアドレス情報 同、書籍中の記録されている位置 WORD 終了記述子 =1F59 【実例】 Offset -0--1--2--3--4--5--6--7--8--9--A--B--C--D--E--F 0123456789ABCDEF 000EBBD0 1F 0A 1F 09 00 02 1F 39 12 01 99 99 01 60 01 20 .......... .... 000EBBE0 03 20 02 40 00 00 00 00 00 00 00 00 23 30 23 35 ............05 000EBBF0 23 30 23 31 23 33 23 30 23 31 23 30 00 00 00 00 013010.... 000EBC00 00 00 00 00 25 22 25 5B 25 26 25 49 25 6A 1F 0A ....アホウドリ.. 000EBC10 44 73 36 21 1F 04 21 21 1F 10 23 4E 23 48 23 4B 提供.. ..NHK ・動画ファイル 動画ファイルは [ディレクトリ名]/MOVIEの下に1動画1ファイルで格納されている。 フォーマットはAVIまたはMPEGそのものである。 ※広辞苑の KOJIEN/MOVIE/* のファイルは、拡張子を.mpgに変更するとそのまま再生できる!