11/04/21 23:44:45.85 SSREDIQS
HD-TS(captured)をH.264に変換する際に、途中でabortしたり、途中で変換終了になってしまう現象は
0.7.5.4770あたりから2011-5136まで続いているが、expert windowへのエラーメッセージ表示がバージョンごとに異なってはいるものの、
・音声のdecode&encodeでバッファオーバーフロー、アンダーフローが発生して、ffmpegが死ぬ
・x264が終了する
・中間の音声ファイル(.m4aや.ac3)と映像(.264)が正常にクローズされると、mp4box.exeやTSmuxeRのMuxerが動いて、
中途半端な状態で終了。 音声ファイルがクローズされず消去されてしまうと、Muxerがアボートされて、
MCはアボートを報告する。
ということで、現象は共通しているようだ。 32bitでは少なく、64ビット版で多く起こる不具合だ。
2011-5100以降ではアボートされることは少なく、途中終了がほとんどで、expert windowにbuffer overflowya
underflowが報告されることもなくなったようだが、メッセージが抑止されているだけだと思います。
元ファイルのTSを詳細に調べてみると、日本で放送されてる地デジ、BSCS放送を
Friioでcaptureしたものでは、PAT,PMT,PCR,video,audio以外に5-6個の意味不明なPIDを持つパケットが
バイト数で全体の0.1%ほどふくまれており、これがbuffer overflowの原因になっている可能性が高いことが分かった。
この意味不明PIDのトラックはTSselectでは除去することができないし、MurdocCutterで指定PIDのみ抽出にしても除去できない(おそらく両アプリのバグだろう)が、
capture後のTSをTSmuxeRに入れて(この時意味不明トラックを無視との警告が出る)、そのままrewriteすると、PAT,PMT,PCR,video,audio
だけで構成されるTSになる。 このTSだと、途中でアボートされたり、途中終了することはほとんど起きない。
従来、変換途中失敗のファイルを、音声のみ.ac3に変換して、TSmuxERでmpeg2-aacをmpeg2-ac3に書き換えたものにすると
正常することが多かったのだが、実はこれら余計なパケットの除去が聞いていたようだ。