


m2tsファイルは192バイトのパケットで、それぞれのパケットには
PIDというIDが割り振られることで、そのパケットが映像なのか音声なのか
画像字幕なのかテキスト字幕なのかなどの判別が出来るようになっています。
今回は PID:0x1200〜 の画像字幕についてです。
ユーザではないので、お借りしたSR11とTG1との1920×1080撮影データを
元にしています。0x47 は「16進数で47」の意味で、ここでは同期バイトの事です。
それぞれのパケットは「ヘッダ4バイト+0x47+〜」のようになっていますが、
0x47の直後の2バイト(16ビット)のうち下位13ビットがPIDを表します。
SONYの字幕付m2tsを見ると、「4バイト+47 52 00+〜」と「4バイト+47 12 00+〜」
となっているものがあり、16進数の「5200」は2進数で「101001000000000」、
16進数の「1200」は2進数で「1001000000000」ですからどちらも下位13ビットは
「1001000000000」つまり0x1200ですのでこれらが画像字幕となります。
本来はPGS(Presentation Graphics Stream)と呼ばれているもので、
別にこの画像は字幕に限った話ではありませんが、今回は字幕に使われて
いますので、以後このように呼びます。
「47 12 00 〜」のパケットは実際のビットマップデータが入っていますが、
こっちはいずれいじってみるとして、「47 52 00 〜」のパケットの中から
いくつか抜粋して書いてみます。
同じ「47 52 00 〜」パケットの中でも後半に出てくる数値によって
それぞれ役割が異なり、それぞれの要素はセグメントと呼ばれます。
「0x16」→ その字幕の基本的な定義
「0x17」→ 字幕を表示する枠の定義
「0x14」→ パレットなど、字幕の色情報の定義
「0x15以下」→ 字幕のビットマップデータなど
その他、この定義の終わりを表すセグメントで計5種類。
これらが集まったものがディスプレイセット、
そしてその1つ以上の集まりをエポックと呼びます。
書込番号:8647107
2点

字幕の基本的な定義
「47 52 00 〜」パケットの中でも後半に「0x16」が出てくるもので、具体的には
47 52 00 (PTS DTSなど略) 16 00 13 07 80 04 38 40 00 00 80 00 00 01 00 00 00 00 03 80 03 84
などのように出てきます。これを分解してみてみますと、
「16」→ セグメントの種類。
「00 13」→これより後のセグメントのサイズ(10進数で19バイト)。
「07 80 04 38」→字幕を表示する画面全体のサイズ。10進数で1920×1080。
「40」→フレームレート。
「00 00」→エポック内での順序。
「80」→このディスプレイセットの種類(ここからデコードしていいのかどうかなど)。
「00」→パレットの更新を行うかどうか(上位1ビットのみで残りはReserved)。
「00」→この字幕が参照するパレットのID。
「01」→字幕画面一つにいくつのオブジェクトが存在するか(以下はオブジェクト数だけループ)。
「00 00」→字幕のビットマップデータなどを指すID。
「00」→このオブジェクトに割り当てられるウィンドウのID。
「00」→実際のビットマップデータから一部分を切り出して表示するかどうか(1ビット)。
次のビットは字幕の強制ON/OFFの切り替え(1ビット)。残りはReserved。
0x00→0x40とすると、ユーザの操作にかかわらず常に字幕がONになる。
「03 80 03 84」→オブジェクトの画面上の位置★。10進数で(896,900)。
書込番号:8647110
1点

字幕を表示する枠の定義
「0x17」が出てくると、字幕の表示枠の定義を表すセグメントです。具体的には
17 00 0A 01 00 03 80 03 84 03 80 00 24
などのように出てきますので分解してみます。
「17」→セグメントの種類。
「00 0A」→これより後のセグメントのサイズ(10進数で10バイト)。
「01」→このディスプレイセットで表示される字幕1画面中のウィンドウの数。
以下はそのウィンドウの数だけループ。
「00」→ウィンドウのID。
「03 80 03 84」→通常、画面の左上からみたウィンドウの座標★。10進数で(896,900)。
「03 80 00 24」→ウィンドウのサイズ。背景色の範囲(552×36くらい)とは違います。10進数で896×36。
書込番号:8647112
1点

字幕の色情報の定義
「0x14」が出てくると、字幕の色情報の定義を表すセグメントです。具体的には
14 00 0C 00 00 00 10 80 80 80 01 E8 80 80 FF
などのように出てきます。
「14」→セグメントの種類。
「00 0C」→これより後のセグメントのサイズ(10進数で12バイト)。
「00」→パレットID。
「00」→エポック内でのパレットのバージョン。
「00」→インデックス(?)。
「10 80 80」→Y,Cr,Cbの数値(ここでは背景色)。この場合は黒。
「80」→不透明度の数値。この場合は不透明度50%。
「01」→インデックス(?)。
「E8 80 80」→Y,Cr,Cbの数値(ここでは文字色)。この場合は約84%の白。
「FF」→不透明度の数値。この場合は完全な不透明。
書込番号:8647114
1点

結局何ができるの?
(1)字幕を強制ONに
→上記の説明のように1バイト書き換えればOKです(0x00→0x40)。
再生ソフトでどのように操作してもずっと字幕がONのままになります。
該当するパケットだけ変更すれば、その部分だけ強制ONにできます。
(2)字幕を好きな位置に移動
→変更するのは二か所の★印の座標です。m2tsファイル内の
「00 00 01 00 00 00 00 03 80 03 84」を
「00 00 01 00 00 00 00 05 10 04 00」に、そして
「17 00 0A 01 00 03 80 03 84 03 80 00 24」を
「17 00 0A 01 00 05 10 04 00 03 80 00 24」などに全置換すると
字幕がもう少し右下に移動します。ただし、万が一の事があるので
バックアップは取ってからお試し下さい。
本当はきちんと構造を解析してから書き換えなくてはいけません。
書き換えるべきセグメント以外に上記の内容が含まれている可能性は
まったくゼロとは言い切れないからです。
なお、必ず二か所同時に同じ数値に変更して下さい。
(3)字幕の背景色と文字色を変更
→wikiなどで見てみると、下記のような変換式があるようなので
お好みの色のRGBの値を式に当てはめればYCrCbの値が出ますから
それを16進数に変換したものを上記のY,Cr,Cbの数値から変更します。
不透明度もお好みで設定して下さい。
Y=16+0.299R+0.587G+0.114B
Cr=128+0.500R-0.419G-0.081B
Cb=128-0.169R-0.332G+0.500B
EXCELで背景色などの「色の設定」→「ユーザー設定」でRGBの数値を覚えて
セルに入力したらYCrCb&16進数に変換(DEC2HEX)してくれるようにすれば
作業の手間が省けます。
-----
※限られたサンプルを見た限りのお話ですので、撮影条件次第では数値が
異なる可能性があります。
※ワイルドカードに対応したHEXエディタがあれば、動画全体にわたって
より安全に変換できると思います。
もしくはこれを簡単にやってくれるソフトが登場すると良いですね。
書込番号:8647116
3点

お疲れ様です。
大変興味深いです、今度試してみます。
>もしくはこれを簡単にやってくれるソフトが登場すると良いですね。
欲しいですねー。
ソニーHDカムのストリーム日時字幕は表示位置が悪すぎますよね。
書込番号:8653173
0点

>山ねずみRCさん
>ソニーHDカムのストリーム日時字幕は表示位置が悪すぎますよね。
せめて4:3向けと16:9向けの二通りくらいあっても良さそうですよね。
ちなみにチャピレさんのデータを使わせてもらって、
・右上に移動
・背景色を非表示
・文字色を黄色に&不透明度0x70
・年月日のみにクロップ
みたいなことをやってみると、添付画像のようになります。
地デジの右上放送局ロゴみたいな感じもできますね。
書込番号:8657649
1点


このスレッドに書き込まれているキーワード
「ビデオカメラ > SONY」の新着クチコミ
内容・タイトル | 返信数 | 最終投稿日時 |
---|---|---|
![]() ![]() |
1 | 2025/08/24 10:02:23 |
![]() ![]() |
6 | 2025/08/08 20:15:54 |
![]() ![]() |
11 | 2025/08/09 11:25:35 |
![]() ![]() |
11 | 2025/07/12 13:28:48 |
![]() ![]() |
11 | 2025/07/03 13:53:12 |
![]() ![]() |
1 | 2025/06/25 13:49:33 |
![]() ![]() |
15 | 2025/06/28 5:24:43 |
![]() ![]() |
8 | 2025/06/10 19:04:14 |
![]() ![]() |
28 | 2025/06/14 14:53:04 |
![]() ![]() |
0 | 2025/06/08 0:47:17 |
クチコミ掲示板検索
新着ピックアップリスト
-
【欲しいものリスト】グラボなし
-
【欲しいものリスト】白で可愛くVRゲームを快適に
-
【質問・アドバイス】構成
-
【欲しいものリスト】α Eマウント系
-
【欲しいものリスト】購入リスト
価格.comマガジン
注目トピックス

(カメラ)
