dancept2の日記

あやしうこそものぐるほしけれ

YouTube 動画アップロード時の音声ビットレート/形式について(その二)

下記つづき。

その一アップ後しばらくすると当方の PC 環境では Opus 再生が使用されるようになり、アップロードファイル作成時のサンプリング周波数は 48 kHz(あるいはその整数倍?)一択、AAC-LC 再生を考慮する意味も余りない感じになった。そんなんで続きをアップしたものか躊躇しているうちに随分時間が経ってしまったが、その一だけというのも何なので以下とりあえずそのままアップすることに。


4. 結果

こんかいの実験くんはタイトルのとおり元音源のサンプリング周波数(やビット深度)には着目していなかったのだが、そうはいっても取り上げた YouTube 側のエンコードが 44.1 kHz(AAC-LC)と 48 kHz(Opus)というところでサンプリング周波数が気になる結果となった。サンプリング周波数(やビット深度)をスコープにしての実験くんもおもしろいかも。当方の環境・耳ではこちらもデータ上のハナシになりそうですが(苦笑)。

4.1 入力ファイル

図14 はサンプル No. 01 から 07 の入力アップロードファイルの周波数特性。サンプルが多いので出力ダウンロードファイルとは別にした。入力ファイル変換元の FLAC を加え(黄色カーブ)、08(WAV)は省略(以下同様、08 については 4.7 参照)。

図14 、入力ファイル波形比較図14 、入力ファイル波形比較

(1) 3 (8)(エントリその一)で、サンプリング周波数 48 kHz のサンプル No. 06(Opus:シアン)の webm 入力および出力が 44.1 kHz の FLAC 元ファイルおよび m4a 出力に比べ微妙に上ずり気味とした *1 。図14 ではわかりずらいが同じく 48 kHz の 05(Vorbis:濃い緑)も同様。いっぽう 44.1 kHz のサンプル 01 – 04(AAC-LC)ではこうした「上ずり」は見えない。

(2) Audacity の周波数特性値取得ポイントの違い (a) でそこまで差が、しかももっぱら「上ずり」側に出るのかというところなのだが、いっぽう Opus 、Vorbis エンコードの特性 (b) とすると、Vorbis → Opus の 05 、Opus → Opus の 06 の webm 出力で 倍「上ずり」が見えてもよさそうだが後述のとおりそうは見えない。二度目のエンコードは 48 kHz → 48 kHz なので「倍」にはならない、すなわちエンコード時の 48 kHz リサンプリングの影響 (c) かともおもえる。ところが入力ファイルの如何に関わらず webm 出力に「上ずり」が見られ、入力時点で 「上ず」っていた筈の 05 、06 を含む m4a 出力には見えない(以上、後述 4.2 参照)——ということで (a) に戻ってしまった。48 kHz のサンプルを用意すればある程度切り分けできそうだが、こんかい元ネタが CD ということもあり先にすすむ。

(3) 図15 に 図14 を拡大。サンプル No. 05(Vorbis 160 kbps(VBR):濃い緑)がやや特徴的。01 AAC-LC 128 kbps(ABR)より急激に落ちる(17.2 kHz 付近)。また、図14 ではわかりずらいが、図15 の 14 kHz – 15 kHz 間のように波形の谷での上振れが目立つ。以上後述 4.4 参照。その他についても後述各項目で。

図15 、入力ファイル波形比較図15 、入力ファイル波形比較

4.2 出力ファイル

(1) 図16 はサンプル No. 01 から 07 の YouTube 出力ダウンロードファイルの周波数特性。こちらはさらに webm 出力(上) と m4a 出力(下)に分割した。前述 4.1 のように(上)グラフは「上ずり」でやや黄色( FLAC 元ファイル)が下側に覗くが(後述 4.6.2 図26 、図27 も参照)、すでに入力時点で「上ずり」の見えていた 05(Vorbis:濃い緑)、06(Opus:シアン)でとくに「上ず」っているというようには見えない。

図16 、入力ファイル波形比較図15 、入力ファイル波形比較図16 、出力ファイル波形比較

4.2.1 Opus/WebM 出力

(1) サンプリング周波数は 48 kHz に変換される。図17 に 図16(上)を拡大。20 kHz ハイカット。黄色カーブが変換元音源の FLAC 。その FLAC をアップロードしたサンプル No. 07(濃い青)含め、ぜんたいに 15.6 kHz あたりから上振れし始め 20 kHz ハイカット。20 kHz に収める反動が 15.6 kHz あたりから出ているかんじか。3 (9) (エントリその一)で触れたように YouTube 出力 Opus は平均 160 kbps 出ていないのだが、サンプル No. 06 の Opus 160 kbps(VBR)入力ファイル(上掲 図15 シアン)ではこのようなひずみ(?)は出ていない。当方の環境(FFmpeg は "libavcodec 58. 54.100" というのを搭載している模様)でも 130 kbps くらいでエンコードしてみればこのカーブを再現するのかの追試の予定は未定(笑)。以上 3 (8)(エントリその一)および後述 4.3.2.1 も参照。

図17 、出力ファイル(webm)波形比較図17 、出力ファイル(webm)波形比較

(2)「結論」(エントリその一)で述べたように、サンプル No. 07(FLAC)、06(Opus:シアン)、04(AAC-LC 320 kbps:ピンク)、03 (同 256 kbps:明るい緑)までほぼ同等のカーブに収れんする。

(3) 02(AAC-LC 192 kbps:赤)になると、それ以前から上記 (2) のグループのカーブでボトムをキープするが 18.8 kHz 過ぎあたりで脱落。01(同 128 kbps:茶)は 14.5 kHz あたりからボトムの位置をキープし出し、他が上振れし始める 15.6 kHz 過ぎで脱落。この「脱落」位置は入力ファイルの時点での挙動を反映しているかんじ。上掲 図15 および後述 4.3.2.1 も参照。

(4) 05(Vorbis:濃緑)は 01 が脱落した 15.6 kHz 過ぎからは残った上振れグループでボトムをキープし、入力ファイルの挙動(前述 4.1 (3))を反映して 17.2 kHz 過ぎあたりで脱落。高周波域での特性は 01 より元ファイルに近付くが、それ以前の領域では入力ファイルの動きを反映し波形の谷で上振れ気味。後述 4.4 参照。

4.2.2 AAC-LC(mp4a/m4a)出力

サンプリング周波数は 44.1 kHz に変換される。15.8 kHz ハイカット。図18 に 図16(下)を拡大。m4a 出力は 128 kbps(CBR)ということで、サンプル No. 05(Vorbis:濃緑)の「上振れ」(上述 4.2.1 (4) )を除き、「上ずり」の見えた 06(Opus:シアン)入力(前述 3 (8)(エントリその一)および 4.1)も含め、同等のカーブに収れん、15 kHz 過ぎで下がり出し、わかりずらいが実際にはそれ以前(12 kHz あたりか)からやや下がりぎみ(黄:FLAC 元ファイルが上側に覗くようになる)。05 については 4.4 参照。

図18 、出力ファイル(m4a)波形比較図18 、出力ファイル(m4a)波形比較

以下入力サンプル(入力コーデック)ごとに記述。もともと AAC-LC でビットレートを振ってみるテストだった筈なのだが手抜きして「差分抽出」は(「変換元ファイル」との比較となるサンプル No. 07 FLAC 除き)省略(苦笑)。

4.3 サンプル No. 01 – 04:AAC-LC(mp4a/mp4)入力

4.3.1 出力ファイル波形

図19 は入力ファイル 4 本(上)と m4a 出力ファイル 4 本(下)の波形。出力側サンプル No. 01(128 kbps)と 03(256 kbps)で一か所ずつクリップの赤線(1分47秒6 付近、潰れなし)。入力ファイルの時点で最大レベルはそれぞれ −0.042 、−0.283 、−0.042 、−0.357 、−0.356 dB と 01 、03 は高い。入力ファイルの変換元 FLAC は −0.386 dB 。これくらいは振れるということだろう(エントリその一 3 (4) および (5) も参照)。

図19 、入/出力ファイル波形比較(サンプル No. 01 – 04)図19図19 、入/出力(m4a)ファイル波形比較(サンプル No. 01 – 04)

4.3.2 周波数特性

図20 は入/出力ファイルの周波数特性。図16 同様 webm(上) と m4a(下)に分割した。細線のカーブが入力ファイル、太線は出力ファイル。色分けは 図14 − 図18 に合わせた。

図20 、入/出力ファイル周波数特性(サンプル No. 01 – 04)図20 、入/出力ファイル周波数特性(サンプル No. 01 – 04)図20 、入/出力ファイル周波数特性(サンプル No. 01 – 04)

4.3.2.1 Opus/WebM 出力

(1) 図21 に 図20(上)を拡大した。入力ファイル変換元 FLAC(黄色)カーブから入力ビットレートごとに出力レベル低下。

図21 、入/出力(webm)ファイル周波数特性(サンプル No. 01 – 04)図21 、入/出力(webm)ファイル周波数特性(サンプル No. 01 – 04)

(2) サンプル No. 03(256 kbps:明るい緑)は入力ファイル(細線)、出力ファイル(太線)とも 04(320 kbps:ピンク)と同等(カーブが重なって後者はほとんど見えない)、入力ファイルは FLAC にほぼ追従し、最後の最後 22 kHz 付近でどちらも 1.5 dB ほど落ちている。が、出力ファイルは 20 kHz ハイカットなので影響はない。

(3) 02(192 kbps)になると、すでに入力ファイル(赤細線)の段階において 19 kHz あたりで落ちている。出力ファイル(赤太線)はこの入力カーブをトレースして 19 kHz で落ちるのではなく、20 kHz ハイカットに合わせて出力レベルを引っ張り上げている感じである。図21 では出力レベルを −110 dB までしか示していないが、AAC-LC エンコードは 32 ビット浮動小数点で −150 dB まで出力があった。この −150 dB に到る領域に 32 ビット浮動小数点の分解能で圧し潰され、あるいは文字どおり「圧縮」されて収められていた出力を 20 kHz ハイカットのカーブに合わせつつだが引き延ばして再生、あるいは「解凍」する動作に見える。

(4) 図22 は 図21 縦軸を −150 dB まで伸ばした。192 kbps(赤)までは 16 kHz あたりからの「上振れ」(4.2.1 (1) 参照)が出ているが、128 kbps(茶)まで下がると入力ファイルより出力ファイルの方が変換元 FLAC(黄)に近いカーブとなり、改善というか部分的に回復(?)している。通常はさいしょからビットレート上げてエンコードしておけば良いのであまり意味はないが、「圧縮」が重ねられる際にはエンコードの組み合わせにより、このような振る舞いも見られるということですね(後述 4.4 も参照)。

図22 、入/出力(webm)ファイル周波数特性(サンプル No. 01 – 04)
図22 、入/出力(webm)ファイル周波数特性(サンプル No. 01 – 04)

(5) webm 出力ファイルを再アップロード、あるいは手元の環境ででも各出力ファイルを Opus で再エンコードしてみる、または二度のエンコードの順序を変えてみる、などなどの追試の予定は未定。

4.3.2.2 AAC-LC(mp4a/m4a)出力

図23 に 図20(下)を拡大。出力は CBR 128 kbps ということで 4.2.2 で触れたとおり出力カーブ(太線)は一定。webm 出力のようなハイカット前の「上振れ」もない。こんかいサンプル 01 – 04 は ABR で作成したが、出力と同じ CBR で入力ファイルを作成してみるテストの予定は未定(実用上敢えて使うかたもいないでしょう)。

図23 、入/出力ファイル周波数特性(サンプル No. 01 – 04)図23 、入/出力(m4a)ファイル周波数特性(サンプル No. 01 – 04)

4.4 サンプル No. 05:Vorbisvorbis/webm)入力

図24 は入/出力ファイルの周波数特性。カーブの色分けは 図12(エントリその一)の方に合わせている。

図24 、入/出力ファイル周波数特性(サンプル No. 05)図24 、入/出力ファイル周波数特性(サンプル No. 05)図24 、入/出力ファイル周波数特性(サンプル No. 05)

4.4.1 入力ファイル

(1) 前述 4.1 (3) で触れたように入力ファイル(濃い青)は波形の谷部分が 6 kHz あたりから上振れし始めている。15.6 kHz 過ぎからは頂き側でも上振れし出し、17.2 kHz 過ぎで元ファイル FLAC(黄)のカーブから脱落。どうせ 16 kHz 以上は聴こえないので(笑)、6 kHz あたりからの挙動の方がもんだいかも(?)。サンプリング周波数が異なるので直接比較できないが、6.3 kHz 過ぎで FLAC 元ファイル約 −55 dB に対して 2 dB 弱の上振れ、2 dB 超えてるであろう個所もあり。

(2) 当該の vorbis/webm 入力ファイルは Aviutl の FFmpegOUT プラグイン "--vbr --bitrate 160" オプション指定で作成したが、MPC-HC 再生時の「統計情報」ビットレート「(平均)」は 100 kbps 。そこから FFmpeg で取り出した(-acodec copy)ogg ファイルの FFmpeg 表示は "bitrate: 101 kb/s" 。VBR なので「平均」160 k 行かないのはそんなものかもだが、06 の入力ファイル Opus 160 kbps(VBR)指定ではそれぞれ「(平均)」156 kbps 、"bitrate: 157 kbps" である(エントリその一 3 (9) 参照)。Aviutl−FFmpegOUT エンコードで使用されたライブラリは "Lavc58.54.100 libvorbis" の模様。Vorbis や Opus 入力エンコードビットレートを振ってみるテストの追試の予定は未定。

4.4.2 出力ファイル

(1) Opus/WebM 出力

6 kHz あたりからの波形の谷部分の上振れも含め、概ね入力ファイル(濃い青細線)の動きをトレースし 17.2 kHz 過ぎで脱落するが(ピンク)、15.8 kHz 過ぎではむしろ元ファイル FLAC(黄) のカーブに近づいているように見える。また、入力ファイルは 17.2 kHz 過ぎでサンプル No. 01 AAC-LC 128 kbps(ABR)より急激に落ちていたのだが(前述 4.1 (3))、出力ファイルでは Vorbis の方がより高出力となり(同 4.2.1 (4))、01 、02 同様のハイカット領域の「回復」が見られた(同 4.3.2.1)。

図25 は上掲 図24(下)に 01 の入力(茶色細線)および webm 出力(同太線) を加え、縦軸を伸ばした。考えてみると 32 ビット浮動小数点 = 24 ビット+小数点以下 8 ビットでこんなにフロアがあるのかということなのだが、そこはノン・リニアということなのだろう(?——これは違うか)。Vorbis はといえば −170 dB 近くまでフロアがあり、約 −150 dB までの 01 より「回復」した(濃い青細線 → ピンク)。ただし 02 AAC-LC 192 kbps(ABR)には及ばない(4.2.1 図17 参照、濃い緑と赤。02 は 15.6 kHz 過ぎからの「上振れ」もあるが)。

図25 、入/出力ファイル周波数特性(サンプル No. 05 ならびにサンプル No. 01 webm 出力
図25 、入/出力ファイル周波数特性(サンプル No. 05 、
ならびにサンプル No. 01 webm 出力

(2) AAC-LC(mp4a/m4a)出力

webm 出力同様入力ファイルの挙動を反映し 6 kHz あたりから波形の谷部分で上振れ。それ以外は前述 4.2.2 の AAC-LC(mp4a/m4a)出力カーブ(15.8 kHz ハイカット)、15 kHz 過ぎで下がり始め FLAC 元ファイル(図24、図25 黄)の下側に転じ、15.8 kHz に到る(同赤)。サンプル No. 01 入力ファイル(図25 茶細)と同じ AAC-LC ということで −150 dB 近くまでフロアがある(同赤)。 

4.5 サンプル No. 06:Opus(opus/webm)入力

3項(エントリその一)参照。

4.6 サンプル No. 07:FLACflac/mkv)入力

4.6.1 入力ファイル

後述 4.7(2) 図30 ならびに 図14 、図15 参照。要するに映像と mux しただけなので、ここは順当に元ファイル FLAC(黄色)のカーブをトレースした(濃い青細線)。

4.6.2 出力ファイル

4.6.2.1 Opus/WebM 出力

今回ベストの、前述 4.2.1 (2) カーブ、図26 参照(こちらでの出力ファイルは細線)。図26(上)は前述 4.2 の「上ずり」が確認し易い。最大レベル −0.498 dB(入力ファイル −0.386 dB)、遅延ないし無音部分の付加なし。入/出力ファイル差分の最大レベルは −16.900 dB(差分抽出ミキシング時 48 kHz → 44.1 kHz リサンプリング)。

4.6.2.2 AAC-LC(mp4a/m4a)出力

サンプル No. 05 を除きすべて同等の、前述 4.2.2 カーブ、図27 参照(図26 と同じく出力ファイルは細線)。最大レベル −0.114 dB 、無音部分の付加先頭(遅延)0.037 秒、後端にも 0.01 秒 あまりあり。入/出力ファイル差分の最大レベルは −19.366 dB と、webm より 2.466 dB 低い。

4.6.2.3 出力ファイル差分

(1) Opus/WebM 出力

周波数特性をかくにんしてみた。図26 は webm 出力差分(濃い青太線)。低周波域 430 kHz あたりまでは −50 dB  を上まわる(上側グラフ)。前述 webm 出力(濃い青細線)のぜんたい的な「上ずり」もかくにんしやすい。その後下側拡大グラフで、出力ファイル(濃い青細線)が「上振れ」し始める 15.6 kHz 過ぎ(4.2.1 参照)から上昇し、ハイカット 20 kHz 過ぎから FLAC 元ファイル(黄)のカーブをトレース、と、いちおう出力ファイルの挙動を反映しているように見える。

図26 、入/出力(webm)ファイル差分周波数特性比較(サンプル No. 07)図26 、入/出力(webm)ファイル差分周波数特性比較(サンプル No. 07)図26 、入/出力(webm)ファイル差分周波数特性比較(サンプル No. 07)

(2) AAC-LC(mp4a/m4a)出力

図27 は m4a 出力差分(赤太線)。ハイカット 15.8 kHz 過ぎから FLAC 元ファイル(黄)をトレース(下側拡大グラフ)。出力ファイル(赤細線)は webm 出力のような「上ずり」は見られず FLAC 元ファイル(黄)を素直にトレース、12 kHz 過ぎからやや下がりぎみ(前述 4.2.2)。差分ファイルでは 7.4 kHz 過ぎに 5 dB くらいの山があるのが目につくが、出力側では(山はあるが)FLAC 元ファイルとの乖離は見られない。また、1 kHz 以下の低周波域のカーブが webm とは異なる(以上上側グラフ)。

図27 、入/出力(m4a)ファイル差分周波数特性比較(サンプル No. 07)図27 、入/出力(m4a)ファイル差分周波数特性比較(サンプル No. 07)図27 、入/出力(m4a)ファイル差分周波数特性比較(サンプル No. 07)

(3) 出力ファイル差分比較

図28 に 図26 と 図27 をマージしてみた。約 −117 dB までの webm 出力(青細線)に対し m4a は −150 dB 近くまでのフロアがあるが(図27(下)赤細線)、さすがにこの微小レベルだと(webm 出力ハイカット約 −117 dB の領域における)「差分」側の差は読み取れない。低域では webm 差分の方がかなり高く、Audacity「書き出し」による周波数特性値最初の取得ポイント 86.132813 kHz では m4a の −57.465221 dB に対し webm は −45.596596 dB と 12 dB 近く差がある。3項(エントリその一 )では端折ってしまったがこの傾向はサンプル No. 06 Opus 入力差分も同様。その後 m4a 出力のハイカット 15.8 kHz に到る領域のおおよそその中間、8 kHz 過ぎで上下逆転する(上側グラフ)。

図28 、入/出力ファイル差分周波数特性比較(サンプル No. 07)図28 、入/出力ファイル差分周波数特性比較(サンプル No. 07)図28 、入/出力ファイル差分周波数特性比較(サンプル No. 07)

という訳で「差分比較」では、4.1 (2) でも触れたが 48 kHz 音源のサンプルを用意してサンプリング周波数の影響についてかくにんした上で、それぞれ入力ファイルも含め他のサンプルについても FLAC 元ファイルと「比較」してみるなど考えられるが今回はここまで。

4.7 サンプル No. 08:WAV(wav/mkv)入力

ついでに追加した WAV 入力だがアップロード出来た。以下 webm 出力ダウンロードファイルでかくにん。

(1) 最大レベル −0.498 dB(入力ファイル −0.386 dB)で FLAC と等しい。ただしこちらでは後ろ側に 0.012 秒ほど無音データが付加されていた。図29 は上からサンプル No. 07 FLAC 入力(flac/mkv)、08 WAV 同(wav/mkv)、07 FLAC webm 出力、08 WAV 同ファイルの終端部。なお前述 4.2.1 (1) のとおり webm 出力ファイルはサンプリング周波数 48 kHz に変換されている。

図29 、入/出力(webm)ファイル波形比較(No. 07 – 08)図29 、入/出力(webm)ファイル波形比較(No. 07 – 08)

(2) 周波数特性はサンプル No. 07 FLAC の webm 出力ファイルと同じ。図30 は FLAC 入力(flac/mkv:濃い青細線)、ならびに webm 出力ファイル FLAC(濃い青太線)および同 WAV(灰色)の比較。WAV 入力ファイル(wav/mkv)は省略したが FLAC「元ファイル」(黄色)はこれまでのグラフに合わせて残してある。

図30 、入/出力(webm)ファイル周波数特性(サンプル No. 07 – 08)図30 、入/出力(webm)ファイル周波数特性(サンプル No. 07 – 08)図30 、入/出力(webm)ファイル周波数特性(サンプル No. 07 – 08)

(3) なお、図30 では出力ファイルのカーブ(FLAC:濃い青太線、WAV:灰色)は「同じ」に見えるが、出力値でみると平均で 0.0002292 dB WAV の方が FLAC より低い( n = 255 )。試しに WAV の出力ファイルの後ろ側 0.012 秒(前述 (1) 参照)を含まないよう範囲選択した上で特性値出力を行なったところ、213番目の 19,968.75 kHz まで完全一致し上記の差異平均値は 0.0000002 dB に減少した。

(おわり)


*1:サンプリング周波数が異なるため Audacity の周波数特性値取得ポイントが異なり、そのまま値で示せない。