昨日書いた記事のバッチファイルが中間ファイル2回も作ってて、ちょっとイケてないので少しだけ修正しました。
MKVコンテナに変換後のデータから生データを抽出して中間ファイルを作成してましたが、
この処理もffmpegにやってもらい中間ファイル作成は1回に減らしました。
@echo off
setlocal enabledelayedexpansion
:: --------------------------------------------------------
:: Bandicam AV1-MP4 ヘッダー修復バッチ
:: mkvmergeで構造を整え、FFmpegで不正メタデータを破棄してMP4化します
:: --------------------------------------------------------
:loop
if "%~1" == "" goto end
echo ======================================================
echo 処理中: %~nx1
echo ======================================================
set "IN=%~1"
set "TMP=%~dp1_temp_%~n1.mkv"
set "OUT=%~dp1fixed_%~n1.mp4"
:: Step 1: MKVへ変換して構造上のエラーを隔離
echo [1/2] 構造を一時修復中 (MKV)...
mkvmerge -q -o "!TMP!" "!IN!"
if %errorlevel% neq 0 (
echo [失敗] mkvmergeでエラーが発生しました。
goto next
)
:: Step 2: 不正なextradataをリセットしつつMP4へ
:: extract_extradataフィルタで古いヘッダー情報を物理的に除去します
echo [2/2] 不正メタデータを破棄してMP4を構築中...
ffmpeg -y -loglevel fatal -i "!TMP!" -i "!IN!" -map 0:v -map 1:a? -c:v copy -bsf:v extract_extradata -c:a copy -movflags +faststart "!OUT!"
if %errorlevel% equ 0 (
echo [成功] 完了しました: !OUT!
if exist "!TMP!" del /f /q "!TMP!"
) else (
echo [失敗] FFmpegでの再構築に失敗しました。
)
:next
echo.
shift
goto loop
:end
echo すべての処理が終了しました。
pause
Bandicam社にサポートリクエスト投げたので、そのうち直してくれるのではないかと思いたいですね。