広告 MP3、AAC音質関連

Afconvertとffmpegを組み合わせたハイレゾ音源にも対応するメタデータ付きAAC変換アプリの作成

スポンサーリンク

 

afconvertはMacOSに標準で搭載されているオーディオファイルを変換することが出来るコマンドラインツールです。

afconvertによるAAC変換は音質的に最右翼の一つですが、メタデータを引き継ぐオプションが見当たりません。 

これを補う方法として、ffmpegのコマンドラインを利用してAACファイルにメタデータを後から付加する手段が考えられます。

今回は、コマンドラインをターミナルに打ち込む煩雑さから開放される、Macショートカットアプリを活用したハイレゾ音源にも対応したメタデータ付きAAC変換アプリ(.app)の作成方法を紹介します。 更に音質評価とハイレゾ音源からAAC変換した音源も掲載しています。

 

使用するコマンドラインについて

AAC変換用として2つのApple Afconvertコマンドラインメタデータ付加用としてffmpegコマンドラインを組合せます。 

ハイレゾ音源に対応するためのAAC変換用afconvertコマンドラインー2個

ハイレゾファイル(ex. fs=192khz)をfs=48khzのAAC変換するとデシメーション(decimation)フィルタの影響で高域減衰が生じます。 高域減衰の影響を軽減させるため、AAC変換する前にaiff形式でダウンサンプリング処理しておくことが必要です。(fsはサンプリング周波数を示す)

事前にダウンサンプリングする意味
ハイサンプリングのハイレゾファイル(fs=192khz)をafconvertでfs=48khz,320kbpsで直接AAC変換すると上限周波数(Cut-Off周波数)が19.9khzに低下してしまいます。 
事前にaiffでfs=48khzでダウンサンプリングした後320kbpsでAAC変換した場合は、Cut-Off周波数が、23.7khzになりナイキスト周波数殆(fc=24khz)と殆ど一致し、CDの上限周波数(22.05khz)を超えることができます。

1) ダウンサンプリング用のコマンドライン
 command
afconvert -d BEI24@48000 --quality 127 -r 127 --src-complexity bats -f AIFF "Original file(フルパス)"  "output file.aiff(フルパス)"
  • このコマンドラインは、Original file【変換元のファイル名で指定されたファイル(WAVE、FLAC、etc)】をサンプルレートを最高品質のAIFFフォーマットで48khzにダウンサンプリングします。 
  • オプションは、「Apple Degital Mastersドロップレット」のソースコードから見倣ったもので、 -d BEI24@48000で指定されたオーディオファイルを24ビット整数(ビッグエンディアン)形式で、サンプルレート48khzに変換します。 --quality 127-r 127で最高のエンコーディング品質を指定しています。、更に、--src-complexity bats で最も高品質な変換を指定し、-f AIFFは、AIFFファイルフォーマットに変換指定しています。
2) AAC変換用のコマンドライン(fs=48khz,320kbpsの場合)
 command
afconvert -d aac -f m4af -q 127 -s 0 -b 320000 "ダウンサンプリンされたaiff ファイル(フルパス)" "output file.m4a(フルパス)"
  • このコマンドラインは、ダウンサンプリングされたaiffファイルを最高品質のAAC変換(m4a)を行います。
  • オプションは、「Apple Degital Mastersドロップレット」のソースコードから見倣ったものです。 -d aacは、出力ファイルのデータフォーマット(AAC)を指定し、-f m4afは、出力ファイルのコンテナフォーマットm4aを指定しています。 -q 127の意味は、127で最高品質のエンコーディングを行います。(-q 0 〜 127 ) -s の意味は0で最高品質のサンプルレートを指定しています。(-s 0 〜 3 ) -b 320000は、ビットレート320kbpsを指定しています。
afconvertで対応しているフォーマット(参考)

 

メタデータを付加するffmpegコマンドライン

AACファイルにメタデータを後から付加するffmpeg コマンドラインです。

 command
ffmpeg -i "output file.m4a" -i "Original file" -map_metadata 1 -codec copy "Final file.m4a"
  • このffmpegコマンドラインは、変換元のOriginal file(WAVE、FLAC、etc)に含まれたメタデータを抽出し、afconvertで変換されたAAC(m4a)に、メタデータを付加した Final file.m4a を出力します。
  • -i オプションは、入力ファイルを示します。 -i "output file.m4a"は1番目の入力ファイル、-i "Original file"は2番目の入力ファイルになります。
  • -map_metadata 1 オプションは、どの入力ファイルからメタデータをコピーするかを指定します。1は、2番目の入力ファイル(ffmpegではインデックスは0から始まるため、0が最初の入力ファイル、1が2番目の入力ファイルを指します)からメタデータをコピーします。
  • -codec copyオプションは、再エンコードせずに無劣化でコピーすることを意味します。

FFmpeg のインストール
ffmpegコマンドライン(CLI)を実行するには、予めHomebrew を経由して、FFmpegをMaxOSにインストールしておく必要があります。 詳しくは、「FFmpeg libfdk_aacエンコーダをハイレゾピュアー音源で音質評価してみました。」記事中を参照してください。

 

オペレータ
オペレータ
夫夫のコマンドラインをターミナルに打ち込めばメタデータ付きのAAC(m4a)ファイルが作れますが、非常に面倒です。 そこで、Macのショートカットアプリを使って、この作業を自動化することが出来ます。 ここから、ショートカットを作成する手順を説明して行きますね。

 

AAC変換の操作・仕様

このAAC変換の操作・仕様に基づいてショートカット(プログラム)を作成します。

  1. 作成したショートカットをクリックして実行すると、「ファイル変換(fs=48khz)を行います。」ダイアログが表示され【OK】ボタンを押すと
  2. ビットレート(320kbps〜128kbps)を選択する画面が表示されます。 例えば320kbpsを選択して【OK】ボタンを押すと
  3. Finder画面に遷移して、AACに変換したい音声ファイルを選択(複数選択可)して【選択】を押します。
  4. afconvertのAAC変換が完了すると、「ファイル変換が完了しました」ダイアログが表示され【OK】を押して完了です。
  5. 先ほどFinderで選択した場所を見ると、AACに変換されたファイル(選択ファイル名+_chg-320kbps[afconvert].m4a)の存在が確認できます。 
    (ファイル末尾にビットレートとafconvertのスタンプが追記されます。)

 

ショートカットの作成から単独実行できるアプリ化まで

このショートカットは、前回作成したffmpeg [aac_at]ショートカットをモディファイします。

基本的なショートカットのガイドは下のカスタムショートカットを作成するのURLリンクをクリックして参照ください。

Apple公式Macでカスタムショートカットを作成する
URL:https://support.apple.com/ja-jp/guide/shortcuts-mac/apd5ba077760/ma

 

Step
1
ショートカット作成の事前準備

  1. Macのショートカットアプリを開き ファイル > 新規ショートカット を選択します。 空の名称未設定ショートカットがショートカットエディタに表示されます。
  2. 「ショートカット名」をクリックしてから、ショートカットの名前を入力します。 名前を「Afconvert to AAC with meta data」にしました。
  3. 右のサイドバーからカテゴリ「スクリプティング」を選択し、表示されるリストで「シェルスクリプトを実行」アクションをダブルクリックします。 ショートカットエディタにドラッグすることもできます。

 

Step
2
「シェルスクリプトを実行」アクションにコードを貼り付ける

「シェルスクリプトを実行」のエリアに後述のシェルスクリプト(bash+AppleScript)コードをコピペします。

blank

「シェルスクリプトを実行」のコード内容

コードの説明(黄色のハイライト行)

  • 2行: 変数encoder_nameにエンコーダ名を記述 ここでは[afconvert]としています。
  • 9-25行: ビットレート選択リストダイアログを表示するコード
  • 58-73 行:ファイル選択ダイアログを表示を表示するコード
  • 94-96行: 変換処理の番号ステータスを、notification表示(一瞬画面右に表示される)
  • 104行: afconvertでaiff形式のダウンサンプリングを実行するコードです。 出力されたaiffファイルは一時ファイルですのでファイル名末尾に、_work.aiffを付加しています。
  • 107行:aiffファイルをafconvertでAAC(m4a)形式に変換するコードです。 出力されたm4aファイルはテンポラリファイルですのでファイル名末尾に_temp.m4aを付加しています。
  • 110行:ffmpegで、変換元のメタデータを取得し、テンポラリファイル(m4a)にメタデータを引き渡すコードです。 メタデータが付加された出力ファイル(m4a)の末尾にビットレートとエンコーダ名の変数を付加(スタンプ)しています。_chg-$selected_option$encoder_name.m4a
  • 114,115行:不要になった一時ファイルとテンポラリファイルを削除します。
  • 備考: コード中のosascript <<EOF ~ EOF の部分が、AppleScriptのコードになります。

 

Step
3
AAC変換が成功したらショートカットの完成です

このショートカットをテストするには、ショートカットエディタ右上部の[ ▶ ] をクリックします。

エラーの発生無く、Finderで下の様にAACファイルが生成されていればショートカットの完成です❗

変換元の音源ファイル:
24192k _pink -20db加算.WAV

320kbps設定で生成されたAACファイル:
24192k _pink -20db加算_chg-320kbps[afconvert].m4a

完成したショートカット

blank

このショートカットをダブルクリックすればAAC変換が実行できます。

 

スポンサーリンク

 

Step
4
ショートカットを単独で実行できるアプリ化(.app)

作成したショートカットは、Macのショートカットアプリから選択して起動するのは面倒です。 通常のアプリファイルの様にファインダーからダブルクリックして単独で実行できる様にアプリ化するには、

ショートカットを一旦、Dockに入れることで、単独で実行出来る「.app(アプリ)」にできます。 (下の手順参照)

簡単な手順(実行ファイル化)

  • ショートカットを開いて、作成したショートカット「Afconvert to AAC with meta data」を右クリックして
  • ファイル > Dockに追加 を選択
  • Dockに入れた「Afconvert to AAC with meta data」を右クリックして、オプション > Finderに表示 を選択
  • Finderに表示されたファイルを見ると、Afconvert to AAC with meta data.app になって、単独で実行できるアプリファイルになります。
  • Dockに追加された、ショートカットが不要なら、オプション > Dockから削除 します。

単独実行可能なAAC変換アプリが作成されました。

blank

 

[Afconvert to AAC with meta data]アプリの音質評価と試聴

次のページで、AAC変換する時の「5つのヒント」』で音質評価し、更に[Afconvert to AAC with meta data]アプリでAAC変換した音源が試聴できます。

結論を言いますと、以前投稿した「AACエンコーダ(アプリ)の評価ランキング」と比較して[Afconvert to AAC with meta data]アプリは、評価ランキングが上位のAACエンコーダと同等以上であることが分かりました。

次のページへ >

 

t