日々

朝、第二神明で出社。
日中、自前でtscutterにTSファイルのタイムコードを求める機能を付けられるように色々調べてみた。タイムコードはどうやらMPEG-2の映像や音声のデータに付いているヘッダに含まれているようでPTSとDTSってのがあるらしい。取り出し方は判ったところまでで以下の通り。

  1. TSファイルから188バイトごとに0x47で始まるTSパケットを取り出す。
  2. TSパケットのTSヘッダからPID(先頭から2バイト目と3バイト目をくっつけた末尾の13ビット)を取り出す。
  3. PIDが0x0000のPATを探す。
  4. PATに列挙されている1つ目のPMTのPIDを探す。
  5. PMTに含まれる映像や音声のPESのPIDを探す。
  6. PESのTSヘッダでペイロードユニットスタートインジケータ(2バイト目の上から2ビット目)が1(PESヘッダが含まれる)のものを探す。
  7. PESのTSペイロードに含まれる0x000001で始まるPESヘッダを探す。
  8. PESヘッダに含まれるPTS、DTSを求める。
  9. PTSは90KHzのクロックで計測した値を33ビット長で表している。

PESヘッダの詳細は、デジタル放送教科書(上)に載っていた。うわ、またこの本か(汗)軽くGoogleブック検索で欲しい情報が78ページ目に載っているのは確認できた。買ってくるか・・・?
定時後、DEEN宅へ。
REGZA 37Z7000でTS録画したファイルを見ている時に気付いた。リアルタイムにスクランブル解除しているTSファイルは放送日時が正しく表示されるのに、後でMulti2Decを使ってスクランブル解除したものは時間が半日?ほど後ろにズレている模様。うむむ、ちゃんと調べないとわかんないけど、ちょっとイヤんなカンジ。
で、後日調べてみたら動画サムネイルの上に表示されている放送日時はファイルの作成時刻が表示されているだけだと判った。だから、Multi2Decでスクランブル解除された日時が出てただけだと判明。ちなみに本来は「2009/11/17(火)AM 1:40〜AM 2:10 0.4%」のように録画開始時刻から録画終了時刻が表示されているが、metaファイルの無いtsファイルだけだと「2009/ 7/ 5(日)AM 9:00〜 0.1%」のようにtsファイル作成日時しか表示されない模様。