ffmpegを使って手持ちのm4a形式の音楽ファイル30個を一度にmp3形式に変換したかったため、Windowsのバッチファイルで作成。
次のようなMS-DOSコマンドのバッチファイルを作成して実行すればいちいちコマンドを打つことなく一気にフォルダ内のファイルをMP3形式に変換できる。
ファイル名: file2mp3.bat
: : フォルダ内のm4aファイルをffmpegを使って全てmp3に変換するバッチ : @echo off for %%f in (dir /b *.m4a) do (ffmpeg -i "%%f" "%%~nf.mp3" -c copy)
前提条件として上記バッチファイルと音楽ファイル、ffmpeg.exeなどは全て同じフォルダにあること。
DOSコマンドのFOR~IN命令で拡張子がm4aのファイル名のみ全て取り出し(dir /b *.m4a)、取り出したファイル名をffmpegを使ってmp3ファイルに変換している。(ffmpeg -i “%%f” “%%~nf.mp3” -c copy)
拡張子部分の記述(上記m4aとmp3の部分)を変更すれば、mp4の動画をmp3の音声ファイルにとか、逆にmp3をm4aになどと色々できるはず。
ポイントは
%%~nf.mp3
の部分。FOR %%f IN~とすると取り出したファイル名は1つずつ%%fという変数に代入される。%%fのままだと拡張子.m4aがついたファイル名となっている。拡張子を取り除いたファイル名に.mp3を追加して変換後のファイル名を生成する必要がある。
例)ffmpeg -i hoge.m4a hoge.mp3 -c copy
~nを変数%%fにつけて%%~nf.mp3として利用すると拡張子を取り除いたファイル名に.mp3をつけてくれる。
コメント
めっちゃ参考になりました
ネット探してもPythonだExcelだLinuxだMacだと環境を持ってないやり方しか出てこなかったのでWindowsPCだけあって手順どうりやればだれでも出来る方法すごく助かります
管理人です。ありがとうございます。
そうですね。Pythonとかプログラミングによるものはネットに多数散見しますが、他のやり方もあるよ!と個人的には示したかったので、お役に立てたのなら嬉しいです。
プログラミングしなくても出来るのならそれに越したことはないと思います。
Perlというプログラミング言語を作ったラリー・ウォールという人の言葉がわたしはとりわけ好きです。
という意味だそうです。
こちらのバッチファイルを走らせてみたのですが、
@echo off
for %%f in (dir /b *.mp4) do (C:\ffmpeg\a\ffmpeg -i “%%f” “%%~nf.mp3” -c copy)
%%fの使い方が誤ってるとエラーが出ます。
何か変更が足りないんでしょうか?
エラーマンさん、こんにちは。管理人です。
お伝え頂いたエラーマンさんのバッチファイルの C:\ffmpeg\a\ffmpeg の部分が気になります。
これはffmpeg.exeが保存されているフォルダか何かでしょうか?だとしてもエラーになってしまいます。
この記事で紹介しているように
として、該当のフォルダ(mp4のファイルとffmpeg.exeが保存されているフォルダ)に、このファイルをhenkan.batなどのファイル名で保存して実行してみてください。
もしよければ実際のエラーメッセージなどもお伝え頂けるとありがたいです。
管理人様。
足りないのでなく余計な事をしてたのですね・・・。
おかげさまで無事に変換できました。
丁寧なご説明ありがとうございます。
良かったですね。メリークリスマス!
アクションカメラ録画のMOVファイルが50以上もありmp4変換したく半分ぐらい一つずつコマンドラインでちまちまやっていたのですがせめて変換先ファイル名ぐらいはワイルド指定できればと思いネット探していたらバッチ例があったので2つ試したのですが動かず、こちらのFor Inを試すとなんと全く自動的に変換され、とても便利でした、金銭的なフィードバックなく失礼ながら本当に感謝です、助かりました
松野さん
お役に立てて良かったです。感謝のコメントありがとうございます。
自分はfor in命令に感謝しています(笑)