複数のエンコーダを使ってそれぞれの遅延の有無と、音声時間の変動を調べた。
まとめ
可逆圧縮は時間は変わらず、Fraunhofer_mp3, lame, speex だけ音声が短くなり、それ以外の全ては時間が長くなった。AAC では特に fdk_aac_he, fdk_aac_he_v2 で大きな遅延が見られ、nero_aac は 1pass と 2pass を比較しても遅延が発生しなかった。AAC では LC よりも HE, HE よりも HE_v2 の方が遅延や時間が長くなったが、aacplus だけ、HE と HE_v2 の長さが一致した。
AAC 以外のエンコードについては opus は優秀であるが動画投稿向けではない。ローカル環境の保存として x264/opus MKV や、音楽ファイルとして有効に使える。また歌ってみたなどで MIX を依頼するときに無圧縮の音声ファイルである WAV を送ってくださいと言われるのは、無劣化であるというのもあるが、この遅延問題も大きな理由である。
関連記事
AviUtl で出力したときにどのような場合に音がずれるのか
使用エンコーダ
- iTunes 11.0.2 for Windows (64-bit)
itunes_aac, itunes_mp3, itunes_alac
http://www.apple.com/jp/itunes/download/
- ffmpeg-20130408-git-9dc88ac-win64-static,
libopus, native_aac, speex, nellymoser, alac, flac は zeranoe ビルドより
http://ffmpeg.zeranoe.com/builds/win64/static/
- ffmpeg-HEAD-90a56eb.tar.gz
libaacplus-2.0.2
http://tipok.org.ua/node/17
fdk-aac
https://github.com/mstorsjo/fdk-aac
faac-1.28
http://sourceforge.net/projects/faac/files/faac-src/
- えこでこツール 1.14
http://sourceforge.jp/projects/ecodecotool/
Fraunhofer は付属のもの
- neroAacEnc 1.5.4.0
http://www.nero.com/jpn/company/about-nero/nero-aac-codec.php
- Quicktime 7.7.3
http://www.apple.com/jp/quicktime/download/
qaac 2.18
https://sites.google.com/site/qaacpage/cabinet
エンコード素材
魔法少女まどか☆マギカBDの2巻に入っているサウンドトラックの2曲目より。「Salve, terrae magicae」は次回予告に流れる曲で、全3巻のサウンドトラックの中で一番圧縮率が低かった曲である。
エンコーダの種類と内訳
AAC:13
MP3:3
ogg:3
nellymoser:1
可逆圧縮:2
オリジナル:1
AAC
ffmpeg_native_aac_lc
faac_lc
fdk_aac_lc
fdk_aac_he
fdk_aac_he_v2
aacplus_he
aacplus_he_v2
nero_aac_lc
nero_aac_he
nero_aac_he_v2
qaac_lc
qaac_he
itunes_aac_lc
MP3
lame_mp3
fraunhofer_mp3
itunes_mp3
OGG
vorbis
opus
speex
可逆圧縮
itunes_alac
ffmpeg_alac
ffmpeg_flac
その他
nellymoser
itunes_wav
使用コマンドオプション
ffmpeg
-acodec aac -strict -2
-acodec libfaac
-acodec libfdk_aac -ab 128k -afterburner 1
-acodec libfdk_aac -profile:a aac_he -ab 70k -afterburner 1
-acodec libfdk_aac -profile:a aac_he_v2 -signaling explicit_sbr -ab 20k -afterburner 1
-acodec libaacplus -ab 70k // HE-AAC
-acodec libaacplus -ab 20k // HE-AAC v2
-acodec vorbis -strict -2
-acodec libopus -ar 480000
-acodec libmp3lame
-acodec speex -ac 1 -ar 16000 -ab 28k
-acodec nellymoser -ac 1
-acodec alac
-acodec flac
iTunes
aac 160k
mp3 160k
えこでこツール
Fraunhofer cbr 128k
nero
-2pass -lc -br 128000 -of nero_aac_lc_2p.m4a
-2pass -he -br 70000 -of nero_aac_he_2p.m4a
-2pass -hev2 -br 20000 -of nero_aac_he_v2_2p.m4a
qaac
in.wav -o qaac_lc.m4a
in.wav --he -o qaac_he.m4a
検証方法
CD から itunes を使い wav にエンコードし、それぞれのエンコーダを使いエンコードする。そして ffmpeg でモノラル wav にエンコードし、Audacity 2.0.3 で波形表示してオリジナルと比較して遅延の確認と、真空波動研Lite 130324 で音声時間の確認した。ただし、speex と opus はサンプリング周波数が異なるので、44.1kHz の WAV に変換し直している。
エンコード後の音声時間
開始時間や総時間が変わらないのは無圧縮と可逆圧縮である WAV, Flac, Alac だけである。Fraunhofer_mp3, lame, speex だけ音声が短くなり、それ以外は全て時間が長くなった。AAC では LC よりも HE, HE よりも HE_v2 の方が長くなったが、libaacplus だけ、HE と HE_v2 の長さが一致した。opus.mkv で ogg に入っていないのは真空波動研で時間を測れなかったためにmkvコンテナに入れた。
[ori.wav] | 89.439 | 0.000 |
[flac.flac] | 89.439 | 0.000 |
[alac.m4a] | 89.439 | 0.000 |
|
|
|
[aac.m4a] | 89.463 | +0.024 |
[faac.m4a] | 89.463 | +0.024 |
[fdk_lc.m4a] | 89.486 | +0.047 |
[fdk_he.m4a] | 89.555 | +0.116 |
[fdk_he2.m4a] | 89.578 | +0.139 |
[itunse_aac.m4a] | 89.489 | +0.050 |
[libaacplus_he.m4a] | 89.444 | +0.005 |
[libaacplus_he2.m4a] | 89.444 | +0.005 |
[nero_aac_lc.m4a] | 89.512 | +0.073 |
[nero_aac_he.m4a] | 89.582 | +0.143 |
[nero_aac_he_v2.m4a] | 89.582 | +0.143 |
[qaac_lc.m4a] | 89.489 | +0.050 |
[qaac_he.m4a] | 89.536 | +0.097 |
|
|
|
[Fraunhofer.mp3] | 89.290 | -0.149 |
[itunse_mp3.mp3] | 89.495 | +0.056 |
[lame_mp3.mp3] | 89.365 | -0.074 |
|
|
|
[nellymoser.flv] | 89.447 | +0.008 |
[opus.mkv] | 89.447 | +0.008 |
[speex.ogg] | 89.431 | -0.008 |
[vorbis.ogg] | 89.466 | +0.027 |
真空波動研Lite 130324 / DLL 130324 Unicode
エンコード後の音声波形
CDから itunes で wav にエンコードした場合と、そこから可逆圧縮形式の alac や flac にエンコードし、再度 wav に戻しても波形に変化はなかった。
m4a コンテナの低遅延ランキング(// 以下は上の位から遅延秒)
- faac, ffmpeg_alac, itunes_alac, nero3種, qaac_lc, itunes_wav
- qaac_he // 0.022
- aac // 0.002
- fdk_lc // 0.024
- libaacplus_he // 0.047
- fdk-he // 0.020
- libaacplus_he2 // 0.002
- fdk-he2 // 0.021
上から(aac = ffmpeg_native_aac_lc), faac, fdk_he, fdk_h2_v2, fdk_lc, ffmpeg_alac, itunes_alac, libaacplus_he, libaacplus_he_v2, nero_aac_he, nero_aac_he_v2, nero_aac_lc, ori(itunes_wav), qaac_he, qaac_he

m4a 以外の低遅延ランキング
- flac, lame_mp3, itunes_wav, vorbis
- nellymoser // 0.003
- speex, opus // 0.015
- Fraunhofer_mp3 // 0.013
- itunes_mp3 // 0.012
上から flac, fraunhofer_mp3, itunes_mp3, lame_mp3, nellymoser, opus, ori(itunes_wav), speex, vorbis

nero の 1pass と 2p(pass) の違いで遅延に差はない

nero と qaac_lc はオリジナルの wav と比べて音が遅延していない

lame_mp3 と vorbis もオリジナルの wav と比べて音が遅延していない

- 関連記事
-
コメント
い
すごく参考になりました
ただ可逆圧縮がWAVと同じで遅延がないのは変です。
自分が非圧縮と可逆を混ぜてよく聞いてるせいで狂った耳かもしれませんが必ずコンマ数秒ずれます
2014/02/04 URL 編集
ロベルト
リンクし忘れていましたが、動画についても調べています。
AviUtl で出力したときにどのような場合に音がずれるのか
http://looooooooop.blog35.fc2.com/blog-entry-1106.html
この記事はけっこう苦労して書いたものですが、
>> 可逆圧縮がWAVと同じで遅延がないのは変です
記事より「ffmpeg でモノラル wav にエンコードし」
の部分で、もしかしたら無圧縮なのでデコード遅延がなくなっているのかもしれません。
今では ffmpeg の音声フィルタを使って波形を表示したり、エンコーダ部分の改良も
それからあるので再度調べると違う結果になるかもしれません。
今は時間が取れなくて再検証できませんが、動画の遅延問題を含めて再検証したいと思っています。
2014/02/04 URL 編集