Allegro Moderatoな日常

PC、音楽、食事など、その時はまっている事柄についてそこはかとなく。

続・AV-LS300DWでts

TsSplitterを使ってtsファイルを加工することにより
AV-LS300DWでもtsが再生できることがわかりました。⇒ 前回の話
がしかし、TsSplitterはwindows用のソフトです。

なんとかLinuxだけで完結したいのですが…。
TsSplitterのためだけにwineをつかうのは、なんだか負けた気がしますしw

ということで、TsSplitterとtsselectが出力するtsデータの差分を眺めてみることに。

悪戦苦闘の末、PATというtsパケットに差異があることがわかりました。
PATはtsデータのもっとも基本となるテーブルで、PMTとよばれるテーブルのIDを保持しています。
さらにPMTは、映像や音データ等のIDのセットを保持しており、HDや1seg毎にそれぞれ
一つずつ存在します。
なので、PATには複数のPMTのIDが書かれているわけですが、
これがAV-LS300DWのお気に召さず、再生をしてくれない原因となっていました。

TsSplitterは、1segの映像や音データそのものを削除するだけでなく、
PAT情報もPMT一つのみ残すように書き換えているようです。

この解析の副産物で、どのtsパケットを残せばいいのかも
だいたいわかりました。…ただのカンですがw
・PAT固有のID : 0x0000
・PATが指し示すPMTのID
・PMTが指し示す映像、音声、同期をとるためのクロック(PCR)のID

てことで…

必要なtsパケットを残しつつ、PATを書き換えるプログラムをPythonで作成。
なんとかLinuxだけで完結することができるようになりました。
(需要があればソースを公開します。…まー無いかw)

ただ処理時間がちょっと長いでしょうか。tsselectの倍ちかくかかってます…w
暇なときにC++で書き直そう。

■ 参考文献
ARIB標準規格:デジタル放送に使用する番組配列情報
http://www.arib.or.jp/english/html/overview/doc/2-STD-B10v4_6.pdf

■必要なtsパケットを残しつつ、PATを書き換えるpythonスクリプト
tss.py

1.↑のリンク先をファイルに保存。
2.ファイル名のお尻の「.txt」を削除。
3.chmodで実行属性付加。
4.スクリプト実行。
./tss.py hoge.ts
hoge.tsは、入力tsファイル名。「hoge_tss.ts」というファイル名で出力されます。

・ pythonは、最近のlinuxディストリビューションでは最初から入っているみたいですが、なかったらyum等でインストールしてください。
・メインストリームの動画しか取り出しません。1segとかは捨てるのみです。
・入力ファイルにfifoを使う場合は、114行目のseekをコメントアウトしてください。(これによって頭のパケットが少し削られますが、今まで使っていて特に支障はありません。)
・同期処理は入っていません。b25の結果ファイルは同期がとれているようなので。

コメント

ソース公開してください!!

TSsplitterのLinux版がないので、私も非常に困っています。
PATの解析とソース、ぜひぜひ公開してください!!
お願いします!!

承知しました!

ソースのご要望、ちょっと嬉しいです。
pythonのソースを追記に貼りたいと思います。
(C++で書き直しはまだやってないのです。)

PATの解析の話は、後ほど別立てでアップしたいと思います。

コメントの投稿

管理者にだけ表示を許可する

トラックバック

http://allegro.dtiblog.com/tb.php/177-bc8d1f56

 | HOME | 

Calendar

06 | 2009-07 | 08
S M T W T F S
- - - 1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31 -

Categories

Recent Comments

Profile

son

son

ババ〜〜トリック♪

Monthly

Recent Entries

Recent Trackbacks

Appendix

顔文字教室

DTIブログ
ブログでアフィリエイト


DTIブログポータルへ

このブログを通報