Blu-ray コピーの選び方

Blu-rayバックアップ動画の破損を確認する:ハッシュ・全編デコード・復元テスト

MKVやMP4のBlu-rayバックアップを、SHA-256、ffprobe、FFmpegの全編デコード、実機再生、復元テストの順で確認する手順です。

バックアップを信頼するには、同じファイルであること、最後まで読み取れること、必要な内容がそろっていることを別々に確認します。 SHA-256が一致しても、壊れた元ファイルを正確に複製しただけかもしれません。全編デコードが成功しても、字幕、メニュー、選んだタイトル、テレビでの再生までは証明しません。

この手順は、自作または利用を許可された素材から作った、すでに読み取り可能なMKV・MP4向けです。暗号化解除、ドライブのファームウェア変更、破損ファイルの修復、ISO/BDMVメニューの検証は扱いません。確認が終わっても、唯一の原本を自動的に削除する根拠にはしません。

最初に「正しいはずの状態」を記録する

検査コマンドを実行する前に、対象を取り違えないための基準を残します。

品質が分からないファイルを「ゴールデンマスター」と呼ばないことが大切です。再エンコードやリマックスではファイルのバイト列が変わるため、元ファイルと異なるハッシュでも、それだけで破損とは言えません。その出力を残すなら、完成後に新しい基準を作ります。個人メディアのアーカイブガイドでは、原本、作業用、閲覧用の役割と複数コピーの置き方を整理しています。

1. SHA-256で「同じバイト列」を確かめる

PowerShellでは、コピー元とコピー先を同じアルゴリズムで計算します。パスは実際のものに置き換えてください。

Get-FileHash -LiteralPath 'D:\Archive\movie.mkv' -Algorithm SHA256
Get-FileHash -LiteralPath 'E:\Backup\movie.mkv' -Algorithm SHA256

MicrosoftのGet-FileHash資料にあるとおり、SHA-256はファイル内容から値を計算します。内容を変更していないコピー同士で値が一致すれば、その2ファイルの内容が同じだと確認できます。Library of Congressのfixity解説の考え方も、受け取ったコピーを既知の基準と比較するものです。

ただし、一致は映像の健全性を示しません。コピー前から壊れていれば、壊れた内容も同じ値で複製されます。値が違う場合はコピーを受け入れず、原本を残したまま、転送・保存先・対象パスを調べます。

2. ffprobeで収録内容と長さを棚卸しする

次に、コンテナ、長さ、映像・音声・字幕の一覧を保存します。

ffprobe -v error -show_format -show_streams -of json 'E:\Backup\movie.mkv' > 'E:\Backup\movie-probe.json'
$LASTEXITCODE

ffprobeの公式資料では、-show_formatがコンテナ情報、-show_streamsが検出した各ストリームを出力します。期待した本編時間、映像、必要な言語の音声や字幕と照合してください。音声・字幕を残す確認手順を先に作っておくと、検出数だけで判断せずに済みます。

JSONが生成できても、全ファイルを最後までデコードした証拠にはなりません。逆に、想定していたトラックが一覧にないのに、その後のコマンドを通過させてはいけません。

3. 音声と映像を最後までデコードする

FFmpegをPATHから実行できる状態で、映像と音声を明示的に選び、出力を保存せずに最後まで処理します。

ffmpeg -hide_banner -v error -xerror -i 'E:\Backup\movie.mkv' -map '0:v?' -map '0:a?' -f null - 2> 'E:\Backup\movie-decode.log'
$decodeExit = $LASTEXITCODE
$decodeExit
Get-Content -LiteralPath 'E:\Backup\movie-decode.log'

FFmpegの公式オプション資料にある-mapは対象ストリームを明示し、末尾の?は映像または音声の種類そのものがない場合の「一致なし」エラーを避けます。これは必要なトラックの欠落を許可する指定ではありません。必ず直前のffprobe一覧と照合します。-xerrorは検出したエラーで停止させ、null muxerはデコード結果をファイルに書き出しません。

-v errorがログへ残すのはerror以上で、warningをすべて保存する設定ではありません。-c copyはパケットをデコードしないため、この検査の代わりになりません。-t 60のような時間制限を加えれば冒頭しか確認できません。時間制限なしで、コマンドがファイル末尾まで正常終了した場合にだけ「このFFmpegビルドでは、今回対象にした音声・映像にエラーが報告されなかった」と記録します。

それでも、形式として成立したまま途中で短くなったファイルはエラーにならない場合があります。想定時間と実時間を比べ、終盤も確認してください。未対応コーデック、PATH設定、コマンドの誤りによる終了もあり得るため、終了コード1を直ちに「媒体が壊れている」と読み替えません。このコマンドは字幕、添付ファイル、Blu-rayメニューをデコードしません。

合成ファイルで確認できた範囲

CopyBlurayでは、既存のFFmpeg/ffprobeビルドN-100410-gcd821c18dcを使い、3秒のH.264映像とAAC音声を収めた合成MKVを作りました。これは最新版の性能評価ではなく、手順が異なる状態を区別できるかを見る再現実験です。

合成ファイル ffprobe 全編デコード ハッシュ比較
正常ファイル 映像・音声の2ストリーム、終了0 終了0 正常な複製と一致
映像先頭パケットを制御して破損 同じ2ストリームを列挙、終了0 終了1 破損ファイルの複製とは一致

この結果は、メタデータを読めることと、映像・音声を最後までデコードできることが別の検査だと示します。同時に、破損ファイルを正確にコピーすればハッシュは一致することも確認できました。実ディスク、光学ドライブ、市販バックアップソフト、テレビ、字幕やメニューは試していません。検出率の一般化もしません。

4. 実際の再生環境と復元先で確かめる

デコード後も、利用予定のプレーヤーで冒頭、中盤、終盤へ移動し、チャプター、必要な音声、字幕、強制字幕の場面を確認します。全編を人が視聴したと表現せず、確認した箇所を台帳へ残します。USBへ持ち出す場合は、FAT32の上限とコピー後の確認も別に行います。

最後に、保管用コピーから一度、別の一時フォルダーまたは別ストレージへ復元します。復元ファイルのSHA-256を保管用コピーの基準と比べ、ffprobe、必要なら全編デコードと再生確認を繰り返します。復元できて初めて、パス、権限、媒体を含む保管手順を確認できます。ISOやBDMV構造を残す目的なら、動画ファイル用のこの手順ではなく、ISO・フォルダー・MKVの選び方で別の検証項目を決めてください。

合格記録には、ファイルID、ハッシュ、期待時間と検出時間、必要トラック、コマンド、版、終了コード、ログ、再生した機器と確認箇所、復元先を残します。一つでも未確認なら「未完了」とし、原本と他の独立コピーを保持します。すべて通過しても将来の媒体寿命や全機器互換を保証せず、唯一の原本を削除する自動ルールにはしません。