ffmpegでフォルダ内の動画を一括変換しよう
ffmpeg、便利ですよね。
今回はffmpegを使って、フォルダ右クリック→項目選択でフォルダ内の動画を一括変換するバッチファイルを書いてもらいました。
はい。書いてもらいました。ChatGPTに。
code:mp4一括変換.bat
@echo off
setlocal enabledelayedexpansion
set "folderPath=%~1"
cd /d "%folderPath%"
for /r "%folderPath%" %%I in (*.*) do (
if /I "%%~xI"==".mp4" (
echo Skipping: %%~nxI
) else (
set "output_file=%%~dpnI.mp4"
C:**/ffmpeg.exe -i "%%I" -c:a copy -c:v h264_nvenc -rc:v vbr_hq -cq:v 20 -movflags +faststart "!output_file!"
echo Converted: %%~nxI
)
)
pause
いやあ、便利ですねChat GPT。(すっとぼけ)
注意点として、このコードはGPUを使った変換用に書き換えてもらっています。
GPUを使用したffmpegの変換等についての詳細は割愛します。他の人のほうが無限倍わかりやすく書いてる。 実際に使用する際は、C:**/ffmpeg.exeの部分を使用するffmpeg.exeのパスに書き換えてください。
このコードをメモ帳などにコピー
https://gyazo.com/c74d594a8206fd7f363577cd2cd7f8c4
→拡張子を.bat等で保存
https://gyazo.com/20773fc39e97539ce28545c6eb77431d
→C:\Users\**\AppData\Roaming\Microsoft\Windows\SendTo等に格納(ショートカットを置いても可)で準備完了です。
https://gyazo.com/d411b5ce7e57cf6cf4d2e4af65709c6a
右クリックメニューのここに表示されます。
https://gyazo.com/6e56b9da0d38a37d11457af42bb09c0e
あとは適当なフォルダを右クリック→バッチファイルを選択で変換が始まります。
https://gyazo.com/b0bbdb273a68249f89c58089e3224b7f
複数のフォルダを選択しても問題なく変換され、かつ変換元のフォルダ内に変換後のファイルが生成されるので管理もしやすいです。
さて、肝心なのはこいつの機能ですね。
こいつは、選択したフォルダの中にある全てのファイル、及びサブフォルダの中のファイルをmp4形式に変換する
という特性を持っています。
つまり
素材フォルダ
素材1.mov
素材2.mov
人物素材
人素材.ts
人素材2.avi
その他
人混み1.mkv
人混み2.mkv
背景素材.avi
みたいな、地獄みたいに拡張子がたくさんあるフォルダでも一発で全部mp4に変換することができます。
「たくさん素材ダウンロードしたけど全部.tsだ!」とか「もらった映像素材の拡張子がが引くほどバラバラだ!!!」みたいな時に、是非お使いください。
おまけ
これ、選択したフォルダ内のファイルを無差別にmp4に変換する、いわば暴食お化けなので、ファイル単体利用ができるスクリプトも置いときますね。
code:mp4変換単体利用.bat
@echo off
cd /d %~dp1
C:\**\ffmpeg.exe -i "%~1" -c:a copy -c:v h264_nvenc -rc:v vbr_hq -cq:v 20 -movflags +faststart "%~dpn1.mp4"
pause
例によって、C:**/ffmpeg.exeの部分を使用するffmpeg.exeのパスに書き換えてお使いください。
ついでにいろんな形式の画像ファイルをpngに統一したい時用のスクリプトも置いときます。
code:png一括変換.bat
@echo off
setlocal enabledelayedexpansion
set "folderPath=%~1"
cd /d "%folderPath%"
for /r "%folderPath%" %%I in (*.*) do (
if /I not "%%~xI"==".png" (
echo Converting: %%~nxI
set "output_file=%%~dpnI.png"
C:**/ffmpeg.exe -i "%%I" -c:a copy -c:v png "!output_file!"
echo Converted: %%~nxI
)
)
pause
もう言わなくてもわかると思いますが、C:**/ffmpeg.exeの部分を使用するffmpeg.exeのパスに書き換えてお使いください。