広告 MP3、AAC音質関連

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

スポンサーリンク

 

画像:FFmpeg AAC with Artworkのラベル

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

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

一部改定(2024/4/7追記)

アートワークが付いた音声ファイルをFFmpegでAAC変換する時、 -vn オプションの代わりに -c:v copy に変更すると、アートワークが継承され AtomicParsley CLIを使う必要は無いことが分かりました。 詳しくはここをクリックして参照してください。 

今まで AtomicParsley CLI を使っていた記事に、この内容を追記しました。 主な変更箇所は、『「FFmpeg AAC with Artwork」ショートカット・作成(手順)』の部分になります。(追記箇所:ここをクリック

 

作成した「ショートカット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
(libfdk_aacエンコーダは16bit入力で歪率的に不利になるのでNativeAACを採択しています)
ビットレート 320kbos、256kbps,160kbps,128kbpsのリスト中から選択可
(CBR設定で設定していますが、256kbps以上はVBRになります)
サンプルレート 48khz固定
変換元の対応フォーマット wav,flac,等FFmpegに準じます。
音声ファイルは複数選択でき、一括でAAC変換できます
AAC変換後のファイル名 変換元のファイル名の後ろに「320k〜128k_FFmpeg_chg.m4a」が追記されます。

 

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

 

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

macOSのLaunchpadから「ショートカットApp」を開きます。 ファイル > 新規ショートカット を選択しショートカット名の欄に「FFmpeg AAC with Artwork」と記入します。

アクションの選択と説明

ヒント:右の検索窓にアクション名を入れると簡単に目的のアクションが見つかります。

 

Act
1
ACTION-1:AppleScriptを実行

アクションの中から「AppleScriptを実行」を選択して「ショートカットエディタ」エリアにドラッグアンドドロップします。

画像:「AppleScriptを実行」アクション

AppleScriptのエディタエリアのデフォルトコード(on run .......)を全て削除して下のコードをコピペします。

Scriptのポイント説明

1行目〜6行目:「FFmpeg AAC with Artwork」の概要説明ダイアログを表示するコードです。

画像:「FFmpeg AAC with Artwork」の概要説明ダイアログ

8行目〜16行目:ビットレート選択リストダイアログを表示するコードです。

ビットレート(320k〜128k)を選択して、「音声ファイル選択へ」ボタンが押されると
20行目のコードで、選択されたビットレートデータ(320k〜128k)をクリップボードに渡し、次のアクションに続きます。

画像:ビットレート(320k〜128k)を選択

「AAC変換をキャンセル」ボタンが押されると、
15行目のコードが実行されて下のダイアログが表示されます。
【OK】ボタンが押されると「ショートカットApp」のアクションが終了します。

画像:AAC変換終了ダイアログ

Act
2
ACTION-2:ファイルを選択

アクションの中から「ファイルを選択」を選択して「ショートカットエディタ」エリアにドラッグアンドドロップします。

画像:ファイルを選択アクション

このアクションが実行されると、Finderが表示されて、AACに変換する音声ファイルが(複数)選択できます。

 

Act
3
ACTION-3:通知を表示

アクションの中から「通知を表示」を選択して「ショートカットエディタ」エリアにドラッグアンドドロップします。  通知の内容に「AAC変換が開始されました!」に書き換えます。 また、タイトルを「AAC変換 開始!!」にします。

画像:通知を表示アクション

このアクションが実行されると、macOS画面の右から通知が表示され、通知サウンドが鳴ります

 

Act
4
ACTION-4:シェルスクリプトを実行

アクションの「シェルスクリプトを実行」を選択して「ショートカットエディタ」エリアにドラッグアンドドロップします。

画像:シェルスクリプトを実行アクション

上の画面の様に設定します。bash Scriptのエディタエリアのデフォルトコード(echo....)を全て削除しておきます。

FFmpegで-c:v copyオプションを使う方法を追記しました。(2024/4/7)

こちらの(追記)がオススメです。




以下コードの17行目の、-c:v copy オプションを使用すると 音声ファイルに含まれているArtwork(画像)を継承してAAC変換が出来るので非常にシンプルなプログラムコードになります。

下のコードを「シェルスクリプトを実行」のScriptを記述するエディタエリアにコピペします。

Scriptのポイント説明

5行目:クリップボードにコピーしたビットレート・データをbpsにセットするコードです。 17行目:選択された音声ファイルをbpsで示されるビットレートでAAC(m4a)に変換するコマンドラインコードです。 ffmpegのCLIが在る絶対アドレスでコマンドラインを実行しています。
また、-c:v copy オプションで、ビデオストリーム(アートワーク画像)をコピーします。
24行目:AppleScriptのalert dialog を呼び出しています。

FFmpegの-vn オプションでAAC変換すると、音声ファイルに含まれれているアートワークが継承されないので、AtomicParsley CLIプログラムを使用してアートワークの引き渡しが必要です。 事前に、AtomicParsleyの事前インストールが必要です。 詳しくはここをクリック

下のコードを「シェルスクリプトを実行」のScriptを記述するエディタエリアにコピペします。

Scriptのポイント説明

5行目:クリップボードにコピーしたビットレート・データをbpsにセットするコードです。 17行目:選択された音声ファイルをbpsで示されるビットレートでAAC(m4a)に変換するコマンドラインコードです。 ffmpegのCLIが在る絶対アドレスでコマンドラインを実行しています。 35、38行目:抽出したArtworkファイルを、AtomicParsleyのCLIが在る絶対アドレスで、AAC変換したフィルに追加するコマンドラインを実行しています。 38行目でも同じコマンドラインを繰り返しているのは、overWriteミスを防ぐためです。 50行目:AppleScriptのalert dialog を呼び出しています。

AppleScriptのalert dialog

画像:AppleScriptのalert dialog

以上で「FFmpeg AAC with Artwork」ショートカットの完成です。

 

作成したショートカットの動作確認とアプリ化

動作確認

適当な(出来るだけ再生時間の短い)Artwork付きの音声ファイル(wav or flac)を用意しておきます。

「ショートカットエディタ」画面の右上の ▶ マークをクリックすると「FFmpeg AAC with Artwork」ショートカットが起動してACTION-1〜4が実行されます。 ACTION-2「ファイルを選択」が実行されるとFinderが開きますので、用意した音声ファイルを選択してAAC変換します。 

ショートカットACTIONが終了したら、FinderでAAC変換されたAAC(m4a)ファイルを探し、Artworkの継承の有無を確認します。 変換されたAACファイルは「Tag Editor Free」アプリ でArtworkを確認するか、Finderで変換されたAACファイルがArtworkと同じiconが表示されていればOKです。

 

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

動作確認ができたら、ショートカット「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追記)

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

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

 

今まで、FFmpegによるAAC変換は、Artwork画像が引継がれませんでしたが、今回作成した「ショートカットApp」により、自動的にArtwork画像が継承されることができるようになりました。 なお、アクションをワークフローに置き換えればAutomatorでも実現できると思います。

 

スポンサーリンク

 

スポンサーリンク

 

t