ffmpegとは
ffmpegは、動画や音声の処理を行うためのオープンソースのソフトウェアツールです。
マルチメディアファイルの記録、変換(エンコード/デコード)、再生、ストリーミング、編集などができます。
今回はファイルの「変換」の部分に焦点を当てます。
ffmpegの導入
「ffmpeg ダウンロード 方法」などと調べて導入してください。
または、以下のリンク先などを参考に導入してください。
ffmpegの使い方(基本)
以下が基本的なコマンドです。このほかにも様々なオプションがあります。
(詳しくはここを参照)
使用時は、例の input.mp4 output.mp3 の部分を、好きな 変換元のファイル名 . 拡張子 変換後のファイル名 . 拡張子 に変更して使います。
rem input.mp4-->変換元 output.mp3-->変換先
ffmpeg -i input.mp4 output.mp3
batでの自動化
フォルダ内にある大量のファイルを簡単に変換するためのプログラムです。
汎用的なものと限定的なものを用意しました。
変換元のファイルは無くなりません。
使用例:フォルダ内にあるたくさんのmp4ファイルをmp3ファイルに一括で変換する。
注意
- 本コードの利用は自己責任でお願いします
- 使用によって生じたいかなる損害についても、一切の責任を負いません
- 事前にバックアップを取ってから使用してください
手順
- 変換したいファイルを一つのフォルダにまとめます(要バックアップ)
- 同じフォルダ内に新しくテキストファイルを作ります
- テキストファイルを開き、以下のプログラムをコピぺし、保存します
- 名前を決め(例:ff_convert)、拡張子を「.txt」から「.bat」に書き換えます
- 完成したbatファイルをダブルクリックで実行します
プログラム
1、汎用ファイル変換
batファイルをダブルクリックした後、どの種類のファイルからどの種類のファイルに変換するかを自由に決められます。
プログラム
@echo off
cd /d %~dp0
setlocal enabledelayedexpansion
echo.
echo --- 汎用ファイル変換処理を開始します ---
echo.
rem 1. 変換元の拡張子を入力
:getInputExt
set "inputExt="
set /p "inputExt=変換元の拡張子を入力してください(例: mp4, avi, mov):"
if not defined inputExt goto getInputExt
if "%inputExt: =%" == "" goto getInputExt
rem 2. 変換先の拡張子を入力
:getOutputExt
set outputExt=
set /p "outputExt=変換先の拡張子を入力してください(例: mp3, wav, flac):"
if not defined outputExt goto getOutputExt
if "%outputExt: =%" == "" goto getOutputExt
rem 現在のフォルダ内の指定された拡張子のファイルを順次処理
for %%f in ("*.!inputExt!") do (
set "originalName=%%f"
set "baseName=%%~nf"
rem ランダムな数字を使って一時的なファイル名を設定
set "tempName=temp_!random!!random!"
set "tempInput=!tempName!.!inputExt!"
set "tempOutput=!tempName!.!outputExt!"
set "outputFile=!baseName!.!outputExt!"
echo --------------------------------------------------
echo 処理対象: "!originalName!"
rem 1. ファイル名に日本語などを含む場合に備え、一時的にファイル名を変更(ffmpegは日本語ファイル名を処理できないため)
echo 一時ファイル名に変更: "!tempInput!"
ren "!originalName!" "!tempInput!"
rem 2. ffmpegで変換を実行
echo ffmpegで[!outputExt!]に変換中...
ffmpeg -i "!tempInput!" "!tempOutput!"
rem 3. 変換後のファイルを元の名前に戻す
if exist "!tempOutput!" (
echo 変換完了。ファイル名変更: "!outputFile!"
ren "!tempOutput!" "!outputFile!"
) else (
echo [エラー] ファイルの変換に失敗したようです。
)
rem 4. 処理に使用した一時的な入力ファイル名を元の名前に戻す
echo 元のファイル名を戻す: "!originalName!"
ren "!tempInput!" "!originalName!"
echo 処理完了: "!outputFile!"
echo --------------------------------------------------
echo.
)
echo --- すべての処理が完了しました ---
pause
endlocal
2、限定ファイル変換
特定の種類のファイルから特定の種類のファイルに変更します。そのかわり、batファイルをダブルクリックすると、自動で始めから終わりまでやってくれます。
使用する際はコピペした後、<>の部分を自分の使いたい拡張子に書き換えてください。
例)
set "inputExt=mp4"
set "outputExt=mp3"
プログラム
@echo off
cd /d %~dp0
setlocal enabledelayedexpansion
rem ======================================================
rem **拡張子設定エリア**
set "inputExt=<変換元拡張子>"
set "outputExt=<変換先拡張子>"
rem ======================================================
echo.
echo --- [!inputExt!] を [!outputExt!] に変換する処理を開始します ---
echo.
rem 現在のフォルダ内のファイルを順次処理
for %%f in (*.!inputExt!) do (
set "originalName=%%f"
set "baseName=%%~nf"
rem ランダムな数字を使って一時的なファイル名を設定
set "tempName=temp_!random!!random!"
set "tempInput=!tempName!.!inputExt!"
set "tempOutput=!tempName!.!outputExt!"
set "outputFile=!baseName!.!outputExt!"
echo --------------------------------------------------
echo 処理対象: "!originalName!"
rem 1. ファイル名に日本語などを含む場合に備え、一時的にファイル名を変更(ffmpegは日本語ファイル名を処理できないため)
echo 一時ファイル名に変更: "!tempInput!"
ren "!originalName!" "!tempInput!"
rem 2. ffmpegで変換を実行
echo ffmpegで[!outputExt!]に変換中...
ffmpeg -i "!tempInput!" "!tempOutput!"
rem 3. 変換後のファイルを元の名前に戻す
if exist "!tempOutput!" (
echo 変換完了。ファイル名変更: "!outputFile!"
ren "!tempOutput!" "!outputFile!"
) else (
echo [エラー] ファイルの変換に失敗したようです。
)
rem 4. 処理に使用した一時的な入力ファイル名を元の名前に戻す(元のファイルを保持)
echo 元のファイル名を戻す: "!originalName!"
ren "!tempInput!" "!originalName!"
echo 処理完了: "!outputFile!"
echo --------------------------------------------------
echo.
)
echo --- すべての処理が完了しました ---
pause
endlocal