😸

【ffmpeg】フォルダ内の動画と音声を名前に対応させてマージを自動化

2024/10/08に公開

ゲームデータを抽出したときに、ムービーが動画と音声に分かれていたのでスクリプトで自動化しちゃいました。

〇〇_Video.mp4〇〇_Sound.oggをマージして〇〇.mp4として出力します。

@echo on
setlocal enabledelayedexpansion

rem 現在のディレクトリを取得
set "dir=%cd%"

rem ディレクトリ内の全ての動画ファイルに対してループ
for %%v in ("%dir%\*_Video.mp4") do (
    rem 動画ファイルのベース名を取得し、"_Video"を削除
    set "base=%%~nv"
    set "base=!base:_Video=!"

    rem 対応する音声ファイルを探す
    set "audioFile=%dir%\!base!_Sound.ogg"
    
    if exist "!audioFile!" (
        rem ffmpegコマンドを実行して結合
        ffmpeg -i "%%v" -i "!audioFile!" -c:v copy -c:a copy -map 0:v:0 -map 1:a:0 -shortest "!base!.mp4"
        echo 結合完了: !base!_output.mp4
    ) else (
        echo 音声ファイルが見つかりません: !audioFile!
    )
)

endlocal

Discussion