🤖

macOSで特定のオーディオファイルを手軽に.mp3に変換したい

2022/03/10に公開

結論「ffmepgとAutomatorを使うとできるよ」

macOSのFinderにはクイックアクションとして「選択したオーディオファイルをエンコード」というのが予め用意されています。この場合のエンコードというのはMusic.appにて指定されているエンコードこのことになるので多くの人がm4aもしくはAppleロスレスなどになるかと思います。わざわざmp3で使ってる人いませんよね?

とはいえ、オーディオファイルをmp3フォーマットで渡したい、聞かせたい、という場面は少なからずありますので(ほんとか?windowsの状況を知らんまま書いてますけど、m4aとかで渡されても平気なんだおろうか?)mp3に変換をさっとやりたいと。

で、特定のディレクトリにある.wavを変換するなら以下のワンライナーで行えます。

➜  ~ for f in *.wav; do ffmpeg -i $f ./mp3/${f%.wav}.mp3; done;

あとはこれをエイリアスでwav2mp3みたいなコマンドにしておくのも良いかなと思うんですが、ここはひとつ先程のFinderのクイックアクションにしたいと思います。

やり方

  1. Automatorを起動してクイックアクションを新規に作成する

  2. 「ワークフローが受け取る現在の項目」を"オーディオファイル"、「検索対象」を"Finder"にする

  3. 「ユーティリティ」から「シェルスクリプトを実行」をドラッグする

4.「シェルスクリプトを実行」の「入力の引き渡し方」を"引数として"にする。
5. シェルスクリプトの中身は下記を記入

DIRNAME=`dirname $@`
BASENAME=`basename $@`

/usr/local/bin/ffmpeg -i $@ ${DIRNAME}/${BASENAME}.mp3

この時 which ffmpegなどでffmpegのパスは各自確認してください。

6.あとは「オーディオファイルをmp3に変換」など名前をつけて保存すればFinderでオーディオファイルを選択したときにクイックアクションで選択できるようになります。

課題

もともとついている拡張し(.wav, .aiff, .aifなど)を変換時に取り除き.mp3だけにしたい。が、あまりシェルスクリプトに詳しくないのでまぁいいか、、、となってる。やり方がわかる方はコメントなどお願いします。

Discussion