ドロップ発生などにより、うまくエンコード出来ないTSファイルが出来た場合は、修復をかける必要がある。
エラー修復用ツールとして出来が良いのは、VLC Player になるとの情報をを得たのでいろいろ試してみたところ、以下の様なコマンドでファイルを渡せば良さそうな感じになった。
vlc.exe -I dummy "ソースファイル" --sout-all --sout-ts-es-id-pid --sout=#std{access=file,mux=ts,dst="出力ファイル"} vlc://quit
オプションの意味(互換とマニュアル斜め読みに基づく解釈)
- -I dummy
- "Disables the graphical interface" との事なので GUI 操作を廃するためのオプションかな。
- vlc://quit
- --sout-ts-es-id-pid
- 出力ファイルのメタデータにPID情報を埋め込むためのオプション。
- この設定を入れないと、PIDが固定の値(videoが68, audioが69 など) に置き換わってしまう。
- 自分の環境だと、IDがずれると他のバッチの動きに影響が出るので必須のオプション。
- --sout=#std{access=file,mux=ts,dst="出力ファイル"}
- VLCに渡した動画データを TS動画(エラーがない状態)に変換した上でファイルに出力する。
エンコ出来ないファイルが見つかるたびに修復をかけるのもめんどくさいので、録画終了時に毎回このバッチで修復をかけようかとも思ったけど、修復前後のファイル両方を抱えるほどストレージに空きがないので断念。修復前ファイル消すのも怖いし。
参考URL