fc2ブログ

VLCを使ってTSファイルを修復するバッチを作りました

番組を録画中にドロップが発生すると不完全なTSファイルができてしまい、エンコードに失敗することがあります。問題があるTSファイルを修復するツールとしてはmpeg2repairが有名で私も使っていたのですが、欠点もいくつかあります。
  1. コマンドラインで動作しないのでバッチを使った自動化ができない
  2. mpeg2repairで修復したTSファイルでも ffmpeg でエンコードできないことがある
  3. 音声が一つしか選択できないのでデュアル音声番組だと修復後のTSファイルには一つの音声しか残らない。

そこでこれらの欠点のない修復ツールがないか探したところこちらの記事でVLC が使えそうだということがわかりました。そこに書かれている方法でmpeg2repair でうまく修復できなかったファイルを修復し、ffmpegでエンコードしてみると何の問題もなくエンコードできます。また、mpeg2repairて発生していた音ずれもほとんど発生せず、非常に優れた修復能力を持っています。

ただ、他のブログも含めてVLCを使った修復例はみなGUIから使用する方法ばかりでコマンドでバッチ化した例は見当たりません。ならば自分で作るしかないということでVLCのマニュアルを読みながら試行錯誤の末出来上がったのが以下のバッチです。私はこれを TsRepair.bat というバッチファイルにしています。このバッチは複数ファイルのドラッグ&ドロップに対応しており、修復されたファイルは元のファイルと同じ場所に _fixed という名前を付加して作られます。

また、当然ですがこのバッチを動作させるにはVLCが必要になりすのでこちらからダウンロードしてインストールしてください。
インストールが終わったらvlc.exeが存在するフォルダを調べて、以下のバッチの3行目を修正してください。

2012/5/15 vlc.exeを呼び出すあたりを変更しました

@ECHO off
setlocal
SET VLC_DIR=C:\Program Files\VideoLAN\VLC

:start
IF "%~1" == "" GOTO finish
IF "%~x1" == ".ts"  GOTO encode
goto next

:encode
SET SRC_DIR=%~d1%~p1
SET SRC_EXT=%~x1
SET SRC_FILE=%SRC_DIR%%~n1%SRC_EXT%
SET DES_FILE=%SRC_DIR%%~n1_fixed.ts

IF "%SRC_FILE%" == "%DES_FILE%" ( echo "エラー: 元ファイルとエンコード後のファイルが同一です" &goto next)

call  "%VLC_DIR%\vlc.exe" -I dummy -vvv "%SRC_FILE%" --sout-all --sout=#std{access=file,mux=ts,dst="%DES_FILE%"} vlc://quit

IF EXIST "%SRC_DIR%\done\." move "%SRC_FILE%" "%SRC_DIR%\done"

:next

SHIFT
GOTO start

:finish

関連記事
スポンサーサイト



コメントの投稿

非公開コメント

No title

これはこれは大変参考に‥というよりも、有用なバッチファイルありがたいです。利用させて頂きます。感謝

管理人のみ閲覧できます

このコメントは管理人のみ閲覧できます

Re: 修復バッチの使用法について質問です

トトロさん

不完全ファイルがどういうものかチェックする必要があります。VLCプレーヤーでその TS ファイルは見ることが出来ますでしょうか。VLC では不完全なTSファイルであってもなんらか画像は表示してくれます。

もしVLCでもまったく再生できないようであればスクランブルが解除されていない可能性が高いです。私のPCの場合休止状態から復帰して録画を始めたときにB-CASカードがうまく読み込めずにスクランブルがかかったままの TSファイルが出来ることがたまにあります。

まずはそこの確認からお願いします。

> PC初心者ですが、よろしくお願いします。
>
> 毎日、10本以上の番組をPT3 (TV TEST)を使って録画、FVCで編集していますが3~4日放置で録画していると不完全なTSファイルが出来てしまい、PCの再起動をするまでに録画したファイルは全て不完全ファイルになりFVCで開けなくなります。
>
> 5.1chの番組は変換出来ない場合があったり、音声に不具合が出るようですが、その他のファイルも不完全ファイルになり原因が分かりません。
>
> FVCサポートに尋ねても、TSファイルは対応していないので変換しないで下さいと言われました。
>
> いろいろ探しているうちに、こちらの修復バッチを見つけ早速試してみましたが解決しませんでした。
>
> メモ腸に実行ファイルを変更後、上記コードをコピペして拡張子を.batにし、ディスクトップに置き、不完全ファイルをbatファイルに入れる…で、間違っていますか?
>
> 不完全ファイルは、最新版のFVCや他のバージョンも試しましたが開く事すら出来ません。
> TV TESTの設定が悪いのでしょうか?
>
> お忙しいところ申し訳ありませんがご教授のほどよろしくお願い致します。
>
> OSはWindows 7 Pro 64bitです。

管理人のみ閲覧できます

このコメントは管理人のみ閲覧できます

Re: No title

トトトさん

問題は最低二つはありそうですね。

1. VLC で再生しても何も表示されない
   -->たぶんスクランブルが解除できていない

2. VLC でとりあえず再生できるが、音がずれたりしてうまく見ることができないもの
   -->TSファイルが壊れていたり、tssplitter で音声分離を行っていないかったり

まず、1. の話をしましょうか。

> この場合、修復バッチを使っても (使い方が分かっていませんが…汗)修復は不可能なのでしょうか?

不可能です。修復バッチは VLC を使っていますので、VLCで再生できないものは修復できません。
スクランブルを解除する簡単な方法は TsSplitter と B25Decoder.dll を使用する方法です。
B25Decoder.dll をインターネットで検索してダウンロードし、TsSplitter と同じフォルダにおきます。
次に TsSpliiterGUI を起動し、右の列にある B25Decoder.dll を使用するにチェックをして TS ファイルを
処理すれば解除してくれます。

次に2. のうち、音声の分離ができていない可能性ですが、TsSplitterGUIの真ん中の列の音声チャンネル切り替えで分割にチェックをつけて TS ファイルを処理するとよいです。ステレオと5.1ch の切り替わりなど音声フォーマットが変わったポイントでTSファイルを分離してくれます。

まずは以上を試してみてください。

プロフィール

いなかっぺ

Author:いなかっぺ
FC2ブログへようこそ!

最新記事
カテゴリ
フリーエリア
月別アーカイブ
最新コメント
最新トラックバック
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QR