広告 MP3、AAC音質関連

FFmpegでACC変換する時に自動的にArtwork画像が継承されるmacの「ショートカットApp」の作成

スポンサーリンク

 

画像:FFmpeg AAC with Artworkのラベル

macOSの「ショートカットApp(又はAutomatorでもOK)」を使ってACC変換する時に自動的にArtwork画像が継承されるコマンドライン入力作業を自動化する方法の紹介です。 (旧記事からから改訂

合わせて、ハイレゾ音源をAAC変換した時、CDを凌ぐ音質が実現されているか?も合わせて評価しました。

改訂内容(2024/6/4)

当記事 は、下の記事に倣ってショートカットの作成手順を変更しました。  FFmpegのコマンドライン・オプションを -vn 代わりに-c:v copy に変更することでアートワークが継承できます。

参 照FFmpegを使用して音声ファイルのアートワーク含めメタデータを操作するオプションのこと

FFmpegのオプションは多岐に渡り、オプションの選択は非常に難解です。そこで、ChatGPTの力を借りて、音声ファイルのアートワークやメタデータを操作するためのFFmpegのオプションを調べてみまし ...

旧投稿記事 は、-vn オプションを使っているので、アートワークを継承するために AtomicParsley CLI を使っています。  

 

作成した「ショートカットApp」の起動からAAC変換まで(動画)

この動画は、「ショートカットApp」で作成したファイル名「FFmpeg AAC with Artwork」の起動からAAC変換・完了までのスクリーン動画(44秒間)です。 (この動画は旧記事のものです)

 

AAC変換が完了した後、Finderのアイコン表示で確認したのが下のスクショです。 Artwork付きの音声ファイル(wav)が自動的にArtwork画像が継承されたAACファイル(m4a)が生成されています。

画像:Finderでアートワークアイコンの表示確認

 

作成したショートカットAppの仕様(概要)について

仕様項目 内容
「ショートカット」の名称 FFmpeg AAC with Artwork
AACエンコーダ FFmpegの[NativeAAC]エンコーダを使用
(24bit入力で歪率的に有利ですが、劣化率に難がり、ビットレートは
256kbps以上を推奨します。)
ビットレート 320kbos、256kbps,160kbps,128kbpsのリスト中から選択可
(CBR設定で設定していますが、256kbps以上はVBRになります)
サンプルレート 48khz固定
変換元の対応フォーマット wav,flac,等FFmpegに準じます。
音声ファイルは複数選択でき、一括でAAC変換できます
AAC変換後のファイル名 例えばビットレートを160kbpsで指定すと、変換したファイルの
末尾に_chg-160k[Native AAC].m4aが追記されます。

 

オペレータ
オペレータ
それでは、ショートカットAppによる「FFmpeg AAC with Artwork」ショートカットを作成して行きますね。

 

「FFmpeg AAC with Artwork」ショートカット・作成(手順)

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

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

Step
2
「シェルスクリプトを実行」アクションにコードをコピペ

「シェルスクリプトを実行」のエリアに下のシェルスクリプト(bash+AppleScript)コードをコピペしたスクリーンショット画像です。(この画像は、FFmpeg[aac_at]エンコーダを使った時のものです)

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

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

  • 2行: 変数encoder_nameにエンコーダ名を記述 ここでは[NativeAAC]としています。
  • 9-25行: ビットレート選択リストダイアログを表示するコード
  • 58-73 行:ファイル選択ダイアログを表示を表示するコード
  • 94-96行: 変換処理の番号ステータスを、notification表示(一瞬画面右に表示される)
  • 103行: FFmpegの[NativeAAC]コマンドラインを実行するコードです。 変換ファイルの末尾に、変数$selected_optionと$encoder_nameを付加しています。
  • 備考: コード中のosascript <<EOF ~ EOF の部分が、AppleScriptのコードになります。

Step
3
テストして成功したらショートカットの完成です

このショートカットをテストするには、ショートカットエディタ右上部の[ ▶ ] をクリックしてAAC変換作業を開始します。

動作確認でエラー発生が無く、Finderで下の様にAACファイルが生成されていればテスト成功です❗

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

生成されたAACファイル:
24192k _pink -20db加算_chg-160k[NativeAAC].m4a

 

アートワーク(画像)の継承の有無確認とアプリ化

アートワーク(画像)の継承確認

適当な(出来るだけ再生時間の短い)アートワーク付きの音声ファイル(wav or flac)を用意しておき、作成したショートカットを実行します。

Finderで変換されたAACファイルにアートワークiconが表示されていればOKです。 または、「Tag Editor Free」アプリ でもアートワークの有無が確認できます。

 

ショートカットのアプリ化

動作確認ができたら、ショートカット「FFmpeg AAC with Artwork」に拡張子.appがついた、自己実行型のアプリ(FFmpeg AAC with Artwork.app)にしましょう。

画像:FFmpeg AAC with Artwork.appのバッジ

タスクバーの ファイル > Dockに追加 を選択します。

すると、Dockに「FFmpeg AAC with Artwork」が追加されますので、右クリックで、オプション > Finderに表示 を選択します。

するとFinderにアプリ化された、FFmpeg AAC with Artwork.app が存在している筈です。

このアプリ化されたファイルを実行すれば、ダブルクリックすれば単独実行できて、Artwork画像が継承されてAAC変換が行われる様になります。

 

Artwork付きハイレゾ音源ファイルをAAC変換してみます。

今回AAC変換するArtwork付きのハイレゾファイル(FLAC 192Khz 24bit )は、1964年録音のレコードから収録したカラヤン指揮・チャイコの悲愴・第3楽章です。

先程アプリ化したFFmpeg AAC with Artwork.appをダブルクリックして、ビットレートを320kbpsと128kbpsの二通りでAAC変換しました。 1ファイル当たりのAAC変換時間は2.5分程要しました。

Finder確認・AAC(m4a)ファイル

画像:AAC(m4a)ファイルをFinderで確認

上のFinder画面で、変換されたAAC(m4a)ファイルにArtworkと同じiconが表示され、ファイル名にビットレートと_FFmpeg_chgが追記されているのが確認できます。 一方、flacファイルはArtworkが付加されていますが、macOSではflacファイルの場合、iconが表示されない様です。

なお、このflacファイルは、当ブログの「サンプル音源・DLコーナー」の中に掲載されています。

AAC(m4a)変換されたサウンドはこれ

 

ピュアー音源で、CDを凌ぐ音質でAAC変換されているか確認します。

1khz sin波:AAC変換の歪率特性

1khz sin波のレベルを変えた(-0.5db,-3db,-20db,-48db,-60db)ファイル(24bit 192khz)を320kbpsでAAC変換した時の歪率をWaveSpectraで測定します。

下のグラフの通り、16bit CD 歪率よりも「FFmpeg AAC with Artwork.app 」でAAC変換した方の歪率が低減されていることが確認できます。

画像:「FFmpeg AAC with Artwork.app 」の歪率特性

 

pink noiseを使ったcut-off周波数

-20db pink nois ファイル(24bit 192khz)をビットレートを320kbps、256kbps、160kbsを変えてAAC変換した時のスペクトルでcut-off周波数を測定します。

下のスペクトルの通り、320kbpsにおいてcut-off周波数を測定すると23.7khzで、CDのcut-off周波数(22.05khz)を超えていることが確認できました。

画像:cut-off周波数のスペクトル確認

 

高域暴れの有無を確認

原因は定かではありませんが、AACエンコーダ(アプリ)によって、レコードからハイレゾ化したレベルの低い音源をAAC変換するとスペクトル上で高域部分に暴れが生じることを経験しています。

『「4つの視点」で再評価』記事で使用した高域暴れ評価用音源(192khz 24bit Flac)を使ってAAC変換したファイルのスペクトル(WaveSpectra)を確認したところ、下の動画(1分23秒)のとおり、高域暴れは生じていないことが確認できました。

 

評価結果

以上の評価データから、ハイレゾ(24bit)ファイルを「FFmpeg AAC with Artwork.app」でビットレートを320kbpsに指定してAAC変換を行えば、変換されたAACファイルはCD音質を超えることが期待できます。

 

注意ポイント

NativeAACは、ビットレートが192Kbps付近から劣化量が増大すると言う問題点が浮かび上がりました。 ビットレートを256kbps以上に設定する必要があります。 詳しくは下の記事を参照してください。(2023/1/20追記)

劣化量
Pink-noiseでビットレートと劣化量の関係を調べてみました。

AAC変換する時にビットレートを低く(オプション)設定すると劣化量がどの程度に増加するものなのか?ネットで調べても具体例が無く、その特性を知りたくなりました。  そこで、今回はFFmpegAACエンコ ...

 

今まで、FFmpegによるAAC変換は、今回作成した「ショートカットApp」により、自動的にArtwork画像が継承されることができるようになります。

 

スポンサーリンク

 

スポンサーリンク