続・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の解析の話は、後ほど別立てでアップしたいと思います。
移植してみました
C 言語で移植してみました。
・・・ただ、C 言語での実装経験がほとんどないのと、Python の知識が皆無なので少々不安なんです。
もしよろしければソースを確認していただけませんでしょうか・・・
# 自分の利用用途に合わせて少々修正を加えてしまいましたが・・・
CS 放送を 30 秒程度録画したものを分割して、TsSplitter で分割したものと比較した結果が一致しているので問題はないとは思っています。
# ソースを利用させていただいているので当然なんですが・・・
・・・ただ、C 言語での実装経験がほとんどないのと、Python の知識が皆無なので少々不安なんです。
もしよろしければソースを確認していただけませんでしょうか・・・
# 自分の利用用途に合わせて少々修正を加えてしまいましたが・・・
CS 放送を 30 秒程度録画したものを分割して、TsSplitter で分割したものと比較した結果が一致しているので問題はないとは思っています。
# ソースを利用させていただいているので当然なんですが・・・
遅くなりました…
ぺんぺん草が生え過ぎていて見落としておりました。すみません。
よかったらCソースの方、拝見させてください。
よかったらCソースの方、拝見させてください。
お世話になっております。
ttp://hp.vector.co.jp/authors/VA038175/tssplitter_lite.zip
にソース一式を置きました。
また、非常に勝手で申し訳ないのですが、
ttp://d.hatena.ne.jp/querulous/
で公開してしまいました。
# 問題があるようでしたら削除します。
ttp://hp.vector.co.jp/authors/VA038175/tssplitter_lite.zip
にソース一式を置きました。
また、非常に勝手で申し訳ないのですが、
ttp://d.hatena.ne.jp/querulous/
で公開してしまいました。
# 問題があるようでしたら削除します。
大変失礼しました・・・
ダウンロード&make
とりあえずダウンロード&makeできました。ありがとうございます。
ソースの方、拝見しまーす。
公開に関しましてはまったく問題ありません。
むしろリンクを張らせてください!
#昨晩同じような文章をコメントしたのですが、なんか投稿されてないですね…寝ぼけてたのかしらw
ソースの方、拝見しまーす。
公開に関しましてはまったく問題ありません。
むしろリンクを張らせてください!
#昨晩同じような文章をコメントしたのですが、なんか投稿されてないですね…寝ぼけてたのかしらw
消えてますね
コメントを拝見してリンクを間違えていたのに気がつきましたので、ちゃんと投稿されてましたよ。
リンクは大歓迎です。
こちらからもリンクを貼らせて頂いてもよろしいでしょうか?
リンクは大歓迎です。
こちらからもリンクを貼らせて頂いてもよろしいでしょうか?
リンク張りました
それから、相互リンクOKです。ぜひぜひ。
#コメントはなぜ消えてしまったのだろう…
#spamコメントと一緒に削除してしまった…とか。
#コメントはなぜ消えてしまったのだろう…
#spamコメントと一緒に削除してしまった…とか。
ソース確認しました
tss.pyが完璧に移植されているようです!
元のtss.pyからそうなっているのですが、188バイト単位の読み込みだと
ファイルアクセスが頻繁になって、処理時間が長くなっているかもしれません。
もし余力がありましたら、読み込みのバイト数を188*nバイトでまとめてみてはいかがでしょう。
元のtss.pyからそうなっているのですが、188バイト単位の読み込みだと
ファイルアクセスが頻繁になって、処理時間が長くなっているかもしれません。
もし余力がありましたら、読み込みのバイト数を188*nバイトでまとめてみてはいかがでしょう。
コメントの投稿
トラックバック
http://allegro.dtiblog.com/tb.php/177-bc8d1f56



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