音風景ブログ

目隠しテストによるエンコーダの音質評価などを行うブログです。

FFmpegから使えるエンコーダの音質比較

警告

この内容は2014年の古い結果です。
2024年2月現時点では、AACへのエンコードならばFFmpeg公式推奨の Fraunhofer FDK AAC 外部ライブラリ(-c:a libfdk_aac) を推奨します。

  • 2015年10月より、FFmpeg内蔵AACエンコーダの音質は、以下に説明するv7パッチよりも少し良い程度の音質となっています。すでに修正が終わった状態でFFmpegが配布されているため、パッチを当てる必要はありません。
  • libfaac のサポートは2016年10月に廃止されました。使おうとするとFFmpegからUnknown encoder ‘libfaac’と言われるはずです。コマンドライン中のlibfaacをlibfdk_aacに書き換えてください。

概要

FFmpegで使える音声エンコーダの音質比較。比較対象は、FFmpeg内蔵AACエンコーダ(v4パッチ ABR、v7パッチ ABR、v7パッチ VBR)、FAAC(libfaac)、FDK-AAC(libfdk_aac)、LAME(libmp3lame)、FFmpeg内蔵AC3の7種類。ビットレートは128kbps。

FFmpeg内蔵AACエンコーダの品質を改善するv4パッチ、v7パッチはhttps://trac.ffmpeg.org/ticket/2686から入手できるが、自分で適用してビルドする必要がある。
(注:2015年10月より、パッチは新しいFFmpegに取り込まれた上、さらに細かい改善が行われています。そのため最新のFFmpegに内蔵されているAACエンコーダは図のv7よりも少し良い程度の音質となっています。2016年3月11日現在追記。)

結果

FDK-AAC > LAME ≒ FAAC > FFmpeg内蔵AACエンコーダ(v7パッチABR ≒ v4パッチABR ≒ v7パッチVBR) ≒ 内蔵AC3
FDK-AACが最も高い評価点となった。ただしFDK-AACとFAACはFFmpegのバイナリプログラムが配布不可であり、FDK-AACとFAACを使うためには、自分でFFmpegをビルドする必要がある。パッチ適用済みのFFmpeg内蔵AACエンコーダは2014年3月現在まだ一般的には配布されていない。それらを除くと、LAMEが最も高い評価となった。

評価

エンコーダ AAC AAC AAC FAAC FDK LAME 内AC3
バージョン v4 v7 v7 1.28 0.1.2 3.99.5 r57288
リリース年 2013 2013 2013 2009 2013 2012 2013
レート制御 ABR ABR VBR VBR ABR VBR CBR
指定レート 128k 128k 0.7 97 128k V5 128k
ファイル形式 AAC AAC AAC AAC AAC MP3 AC3
41_30sec 打楽器 1.8 2.2 1.7 2.7 3.6 3.9 2.5
finalfantasy 撥弦楽 2.6 3.5 1.9 3.9 4.4 3.0 2.6
ATrain ジャズ 3.8 4.2 3.2 3.8 4.3 4.0 2.7
BigYellow POPS 3.4 3.3 2.5 3.4 3.8 3.5 2.2
FloorEssence テクノ 3.1 2.7 3.3 3.5 3.9 3.4 3.4
macabre オケ 2.6 3.2 2.4 3.3 3.5 3.6 2.0
mybloodrusts 弦楽器 2.0 2.9 2.2 3.5 4.3 3.2 2.8
Quizas ラテン 3.4 3.2 2.8 3.5 4.2 3.8 2.9
VelvetRealm テクノ 2.6 2.4 2.2 4.1 3.6 3.9 3.3
雨降花 POPS 3.3 2.9 2.8 3.4 4.0 3.7 2.4
Trust Gosp 3.4 3.1 3.4 4.3 4.0 3.8 2.3
Waiting ロック 2.7 3.1 2.9 3.4 3.8 3.5 3.0
Experiencia ラテン 3.3 3.1 2.4 3.4 5.0 3.6 2.3
HeartToHeart POPS 3.1 2.9 2.4 3.8 5.0 3.5 2.5
Tom's Diner 女声 3.3 3.0 2.7 3.6 4.1 3.5 3.0
ReunionBlues ジャズ 3.5 3.2 3.1 3.6 3.8 3.7 2.5
French 男女声 2.5 3.3 2.8 3.1 5.0 3.8 3.5
undelete POPS 2.9 2.8 3.3 3.5 4.1 3.7 3.1
Dimmu Borgir メタル 2.2 3.3 2.9 3.7 4.0 3.8 2.7
Run up POPS 3.2 3.3 2.4 3.7 4.4 3.6 2.6
German 男声 2.8 2.6 3.2 3.0 5.0 3.6 3.4
ItCouldBeSweet POPS 2.7 2.9 2.9 3.2 4.0 3.9 2.6
ontheroofwith POPS 2.7 3.0 3.5 4.1 5.0 3.8 3.8
easy game POPS 2.6 3.4 3.1 5.0 3.9 4.1 2.5
Tears Infection POPS 3.9 3.6 2.4 4.0 4.3 3.1 2.5
↑音源 平均点 2.94 3.08 2.74 3.62 4.20 3.64 2.76
実レート 129k 129k 138k 132k 130k 135k 128k
エンコーダ AAC AAC AAC FAAC FDK LAME 内AC3
バージョン v4 v7 v7 1.28 0.1.2 3.99.5 r57288

テストに利用した音源を試聴したい方、ダウンロードしたい方、ログを見たい方はこちらへ。
http://zak.s206.xrea.com/bitratetest/main.htm
[file:kamedo2:bitratetest_wav30-34.zip]

方法

銘柄に対する先入観が影響しないように、PSP ABC/HR v2.4とRP-HT560を利用して、7個のエンコードされた圧縮音源をランダムに並び替えて、銘柄を伏せて採点した。1=音質劣化が非常に気になる 2=気になる 3=わずかに気になる 4=原音からの音質変化が分かるが、気にならない 5=音質変化がわからない、区別できない。4.9点以下の評点をつける場合は、ABXYテストを15回行い、12回以上(これ以上の成績をまぐれで出す確率は約2%)正解して、違いを聞き取れることを確認してからそうした。このテストでの採点は、25(音源)×7(エンコーダ)×1(回)=175(回)。

使用したオプション

FFmpeg内蔵AACエンコーダ r.55212、v4パッチ、ABR
ffmpeg -i input.wav -c:a aac -strict experimental -b:a 128k out.mp4
FFmpeg内蔵AACエンコーダ r.57288、v7パッチ、ABR
ffmpeg -i input.wav -c:a aac -strict experimental -b:a 128k out.mp4
FFmpeg内蔵AACエンコーダ r.57288、v7パッチ、VBR
ffmpeg -i input.wav -c:a aac -strict experimental -q:a 0.7 out.mp4
FDK-AAC エンコーダ 0.1.2 (これを含むFFmpegバイナリはライセンスの問題から配布されていない、使うには自分でビルドする必要がある。)
ffmpeg -i input.wav -c:a libfdk_aac -b:a 128k -afterburner 1 out.mp4
FAAC 1.28 (これを含むFFmpegバイナリはライセンスの問題から配布されていない)(2024年2月追記:2016年10月に廃止済み)
ffmpeg -i input.wav -c:a libfaac -q:a 97 out.mp4
LAME 3.99.5 V5
ffmpeg -i input.wav -c:a libmp3lame -q:a 5 out.mp3
FFmpeg's AC3 encoder r.57288
ffmpeg -i input.wav -c:a ac3 -b:a 128k out.ac3

詳細な優劣の分析

FRIEDMAN version 1.24 (Jan 17, 2002) http://ff123.net/
Blocked ANOVA analysis

Number of listeners: 25
Critical significance:  0.05
Significance of data: 2.22E-016 (highly significant)
---------------------------------------------------------------
ANOVA Table for Randomized Block Designs Using Ratings

Source of         Degrees     Sum of    Mean
variation         of Freedom  squares   Square    F      p

Total              174          78.35
Testers (blocks)    24           8.63
Codecs eval'd        6          45.26    7.54   44.41  2.22E-016
Error              144          24.46    0.17
---------------------------------------------------------------
Fisher's protected LSD for ANOVA:   0.230

Means:

fdkabr   lameV5   faacQ97  v7abr    v4abr    ac3cbr   v7vbr
  4.20     3.64     3.62     3.08     2.94     2.76     2.74

---------------------------- p-value Matrix ---------------------------

         lameV5   faacQ97  v7abr    v4abr    ac3cbr   v7vbr
fdkabr   0.000*   0.000*   0.000*   0.000*   0.000*   0.000*
lameV5            0.864    0.000*   0.000*   0.000*   0.000*
faacQ97                    0.000*   0.000*   0.000*   0.000*
v7abr                               0.206    0.007*   0.003*
v4abr                                        0.142    0.088
ac3cbr                                                0.811
-----------------------------------------------------------------------

fdkabr is better than lameV5, faacQ97, v7abr, v4abr, ac3cbr, v7vbr
lameV5 is better than v7abr, v4abr, ac3cbr, v7vbr
faacQ97 is better than v7abr, v4abr, ac3cbr, v7vbr
v7abr is better than ac3cbr, v7vbr

整形済みデータ

v4abr v7abr v7vbr faacQ97 fdkabr lameV5 ac3cbr
%feature 7 FFmpeg's_native_AAC FFmpeg's_native_AAC FFmpeg's_native_AAC AAC AAC MP3 ATSC_A/52
1.800 2.200 1.700 2.700 3.600 3.900 2.500
2.600 3.500 1.900 3.900 4.400 3.000 2.600
3.800 4.200 3.200 3.800 4.300 4.000 2.700
3.400 3.300 2.500 3.400 3.800 3.500 2.200
3.100 2.700 3.300 3.500 3.900 3.400 3.400
2.600 3.200 2.400 3.300 3.500 3.600 2.000
2.000 2.900 2.200 3.500 4.300 3.200 2.800
3.400 3.200 2.800 3.500 4.200 3.800 2.900
2.600 2.400 2.200 4.100 3.600 3.900 3.300
3.300 2.900 2.800 3.400 4.000 3.700 2.400
3.400 3.100 3.400 4.300 4.000 3.800 2.300
2.700 3.100 2.900 3.400 3.800 3.500 3.000
3.300 3.100 2.400 3.400 5.000 3.600 2.300
3.100 2.900 2.400 3.800 5.000 3.500 2.500
3.300 3.000 2.700 3.600 4.100 3.500 3.000
3.500 3.200 3.100 3.600 3.800 3.700 2.500
2.500 3.300 2.800 3.100 5.000 3.800 3.500
2.900 2.800 3.300 3.500 4.100 3.700 3.100
2.200 3.300 2.900 3.700 4.000 3.800 2.700
3.200 3.300 2.400 3.700 4.400 3.600 2.600
2.800 2.600 3.200 3.000 5.000 3.600 3.400
2.700 2.900 2.900 3.200 4.000 3.900 2.600
2.700 3.000 3.500 4.100 5.000 3.800 3.800
2.600 3.400 3.100 5.000 3.900 4.100 2.500
3.900 3.600 2.400 4.000 4.300 3.100 2.500
%samples 41_30sec hihats
%samples finalfantasy cemb
%samples ATrain Jazz
%samples BigYellow Pops
%samples FloorEssence Techno
%samples macabre orch
%samples mybloodrusts guitar
%samples Quizas Latin
%samples VelvetRealm Techno
%samples Amefuribana Pops
%samples Trust Gospel
%samples Waiting Rock
%samples Experiencia Latin
%samples HearttoHeart Pops
%samples Tom'sDiner Vocal
%samples ReunionBlues Jazz
%samples French Speech
%samples undelete Pops
%samples DimmuBorgir Metal
%samples Run_up Pops
%samples German Speech
%samples ItCouldBeSweet Pops
%samples OnTheRoofWith Pops
%samples easy_game Pops
%samples TearsInfection Pops	

注:公開試聴試験での多人数の平均評点と管理人の評点が似たような傾向になることは確認しているので言えるが、ある個人がある再生環境で、ある価値観のもとに聞いたときの評価が、ここに書いた管理人の評価に似るかどうかまでは何とも言えない。また、今回利用した音源とは傾向の異なる音を多くエンコードした場合、結果や順位が異なる可能性があります。