TSConverterのソースを読んでみた
あちこち手を出して、どれもなかなか収束しない今日この頃。できれば、PT2から読み出してファイルに出力するフェーズで、TSConverterと同様の処理で、ワンセグデータを切り出しておけば、一旦ファイルにして後で切り出すより軽いかな、と。
さらっと読んでみた感じ、こんな流れか。
- ワンセグのVideo/AudioのPIDを探すところ
- それぞれをファイルに出力するところ
- タイムコードを振るところ
- MP4Boxを呼ぶところ
- DtsEditを呼ぶところ
1番目のは、0x1fc8のPMTを拾って、stream_typeがVideo/Audioのelementary_PIDを取ればいいので楽勝
2番めの、.264と.aacのファイルを切り出すところがTSConverterのツボっぽい。とりあえず現状、何をやってるのかさっぱり分からん。音ずれがないように?なんか同期を取ってダミーをはさんでいるようなのだが。
3番目以降は別に切り出して、スクリプトから順番に実行する方がすっきりするような。
これを参考に、自前TSパーサーにもPESヘッダの解析を入れてみた。TSを食わせてみた出力からすると、
- そのPIDがtableを指してたら、unit_start_indicatorが1の時の、payloadの先頭バイトはpointer_field
- そのPIDがPESを指してたら、unit_start_indicatorが1の時の、payloadの先頭バイトはPESヘッダの先頭
ということで正しいんだろうか。なんとも面倒な。