
音声ファイルを非可逆圧縮する、FFmpegのエンコーダは、AAC変換用として3種類【 aac_at 】、【 libfdk_aac 】、【 NativeAAC 】、MP3変換用は1種類の【libmp3lame】がコマンドライン(CLI)で提供されています。 各々のエンコーダはそれぞれに特長(後述)があり、用途に応じて適切なものを選択することがベターです。
しかし、音声変換するたびにエンコーダを使い分けるとなると、毎回コマンドライン(CLI)でオプションを打ち分けるのは面倒です。 そこで、本記事では、macOSショートカットを活用し、用途に応じて各エンコーダを選択して、且つビットレートも選択できる音声変換するツールを作成してみました。
音声ファイルの変換で使うFFmpeg CLI(コマンドライン)と特長
音声ファイルを変換する時に使用する、各エンコーダのCLI(コマンドライン)を下に示します。 (コマンドラインは、ターミナルのzshやbashシェルから実行します)
各エンコーダの詳細を知りたい時は、【 ▶リンク 】をクリックすると、評価記事やCLIのオプション(赤文字で示す)を参照できます。
command 【 aac_at 】AACエンコーダ ▶リンク ffmpeg -i "変換元ファイル.wav" -acodec aac_at -c:v copy -ar 48000 -ab 320k "変換後のファイル名.m4a" 【 libfdk_aac 】AACエンコーダ ▶リンク ffmpeg -i "変換元ファイル.wav" -acodec libfdk_aac -c:v copy -ar 48000 -ab 320k -cutoff 20000 "変換後のファイル名.m4a" 【 NativeAAC 】AACエンコーダ ▶リンク ffmpeg -i "変換元ファイル.wav" -aac_coder twoloop -c:v copy -ar 48000 -ab 320k "変換後のファイル名.m4a" 【libmp3lame】MP3エンコーダ ▶リンク ffmpeg -i "変換元ファイル.wav" -codec:a libmp3lame -c:v copy -ar 48000 -b:a 320k "変換後のファイル名.mp3"
特長
各エンコーダは、下に示す特長があります。
- 【 aac_at 】:macOS限定、劣化量が少ないが、16bit入力なのでCD音源の変換に最適。(cut-off:max22.5khz)
- 【 libfdk_aac 】:劣化量が少ないが、16bit入力なのでCD音源の変換に最適。(cut-off:max20khz)
- 【 NativeAAC 】:24bit入力なのでハイレゾ24bit音源の変換に対応しているが、劣化量からビットレートを250Kbps以上に設定するのがオススメ(cut-off:max22.5khz)
- 【libmp3lame】:24bit入力で、且つ劣化量が少ないので、CD〜ハイレゾ24bitの変換に最適。 (cut-off:max20khz)
「音声変換する」ショートカットの概略フロー
Step1:変換元の音声ファイル(wav,flac等々)の複数選択
Step2:選択されたファイルが音声ファイルか判定
(非音声ファイルがあれば停止)
Step3:エンコーダの選択とビットレートの選択
Step4:音声変換(エンコード)の実行
同一フォルダに変換されたファイル(fs=48khz)が保存される。
AAC/MP3エンコーダを選択して音声変換するショートカットの作成手順
今回のショートカット名は【FFmpeg AAC / MP3 変換】にしました。
macOSショートカット・アプリを起動して「ファイル」>「新規ショートカット」をクリックすると、まっさらなショートカット編集画面が現れます。 ここに必要なアクションを配置して行きます。 アクション中にあるマジック変数は、「これで分かったマジック変数の取扱い」を参照してください。
ショートカットの概略フロー(Step1〜Step4)に従って説明していきます。
Step
1 変換元の音声ファイルの複数選択

各アクションの説明
- 【アラート】アクション:このショートカットで何を行うか?概要をダイアログで説明
- 【ファイルを選択】アクション:Finderが表示され、非可逆圧縮したい、音声ファイルを選択(複数選択可)できます。
- 【シェルスクリプトを実行】:選択した音声ファイルをマジック変数で受取り、2行目のfor文で、選択されたファイルをループして、一つ一つのファイルをffprobeで検査して、非音声ファイルが一つでも含まれると、ループから抜け出し”NOT_AUDIO”の文字列をマジック変数として、出力します。
スクリプト内容
|
1 2 3 4 5 6 7 8 9 10 11 |
# 音声ストリームの有無をチェック 非音声なら”NOT_AUDIO”を出力 for f in "$@"; do if ! /opt/homebrew/bin/ffprobe -v error \ -select_streams a \ -show_entries stream=index \ -of csv=p=0 "$f" | grep -q .; then printf "NOT_AUDIO" exit 0 fi done |
Step
2 選択ファイルが音声ファイルか判定

各アクションの説明
- 【if文】アクション:【シェルスクリプトを実行】アクションで出力されたマジック変数を受取り、、”NOT_AUDIO”の文字列の有無を調べて、”NOT_AUDIO”があると、次のアクションが実行されます。
- 【アラート】アクション:非音声ファイルが含まれている旨のアラートを表示します。
- 【このショートカットを停止】:ショートカットが停止されます。
Step
3 エンコーダの選択とビットレートの選択

各アクションの説明
- 【リスト】アクション:エンコーダの4種類を表示
- 【リストから選択】アクション:リストから一つだけエンコーダを選べます。 選ばれたエンコーダの文字列をマジック変数として出力します。
- 【リスト】アクション:ビットレートの4種類を表示
- 【リストから選択】アクション:リストから一つだけビットレートを選べます。 選ばれたビットレートの文字列をマジック変数として出力します。
Step
4 音声変換(エンコード)の実行

各アクションの説明
- 【シェルスクリプトを実行】:ファイルは、Step1の【ファイルを選択】アクションのマジック変数を指定します。リストから受取った encorder="選択エンコーダ"とbitrate="選択bitrate" マジック変数です。
6行目は、for文で、選択された音声ファイルをループさせて、
8行目は、case文で、選択されたエンコーダに従って分岐させて、同一フォルダ内に音声ファイルを変換しています。 また、変換されたファイルは、ビットレートとエンコーダ名を付記し、エンコーダCLIのオプション -y で、ファイルの上書きを可能にしています。 - 【アラート】アクション:選択した音声ファイルをマジック変数で受取り、ファイルをffprobeで検査して、非音声ファイルが一つでも含まれると、”NOT_AUDIO”の文字列をマジック変数として、出力します。
スクリプトの内容
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
encorder="選択エンコーダ" #マジック変数 第1のリストから受取り bitrate="選択bitrate" #マジック変数 第2のリストから受取り # FFmpegの -yオプションで上書き許可 for f in "$@"; do case $encorder in "AAC-[aac_at]") /opt/homebrew/bin/ffmpeg -y -i "$f" -acodec aac_at -c:v copy -ar 48000 -ab $bitrate "${f%.*}_chg-[aac_at]$bitrate.m4a" ;; "AAC-[libfdk_aac]") /opt/homebrew/bin/ffmpeg -y -i "$f" -acodec libfdk_aac -c:v copy -ar 48000 -ab $bitrate -cutoff 20000 "${f%.*}_chg-[libfdk_aac]$bitrate.m4a" ;; "AAC-[Native]") /opt/homebrew/bin/ffmpeg -y -i "$f" -aac_coder twoloop -c:v copy -ar 48000 -ab $bitrate "${f%.*}_chg-[Native_aac]$bitrate.m4a" ;; "MP3-[libmp3lame]") /opt/homebrew/bin/ffmpeg -y -i "$f" -codec:a libmp3lame -c:v copy -ar 48000 -b:a $bitrate "${f%.*}_chg-[libmp3lame]$bitrate.mp3" ;; esac done |
作成したショートカットの実行ビデオを観る
音声ファイル変換: Before / After オリジナルファイル Handel Violin Sonata No_4 Vn_Grumiau.wav Handel Violin Sonata No_4 Vn_Grumiau_FLAC.flac ↓↓↓↓↓↓↓ [aac_at]で160kbpsに変換後 Handel Violin Sonata No_4 Vn_Grumiau_chg-[aac_at]160k.m4a Handel Violin Sonata No_4 Vn_Grumiau_FLAC_chg-[aac_at]160k.m4a