続・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.スクリプト実行。
・ pythonは、最近のlinuxディストリビューションでは最初から入っているみたいですが、なかったらyum等でインストールしてください。
・メインストリームの動画しか取り出しません。1segとかは捨てるのみです。
・入力ファイルにfifoを使う場合は、114行目のseekをコメントアウトしてください。(これによって頭のパケットが少し削られますが、今まで使っていて特に支障はありません。)
・同期処理は入っていません。b25の結果ファイルは同期がとれているようなので。
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.tshoge.tsは、入力tsファイル名。「hoge_tss.ts」というファイル名で出力されます。
・ pythonは、最近のlinuxディストリビューションでは最初から入っているみたいですが、なかったらyum等でインストールしてください。
・メインストリームの動画しか取り出しません。1segとかは捨てるのみです。
・入力ファイルにfifoを使う場合は、114行目のseekをコメントアウトしてください。(これによって頭のパケットが少し削られますが、今まで使っていて特に支障はありません。)
・同期処理は入っていません。b25の結果ファイルは同期がとれているようなので。
コメント
ソース公開してください!!
承知しました!
ソースのご要望、ちょっと嬉しいです。
pythonのソースを追記に貼りたいと思います。
(C++で書き直しはまだやってないのです。)
PATの解析の話は、後ほど別立てでアップしたいと思います。
pythonのソースを追記に貼りたいと思います。
(C++で書き直しはまだやってないのです。)
PATの解析の話は、後ほど別立てでアップしたいと思います。
コメントの投稿
トラックバック
http://allegro.dtiblog.com/tb.php/177-bc8d1f56



PATの解析とソース、ぜひぜひ公開してください!!
お願いします!!