MP3の無音部分

2009/10/22

 MP3は曲と曲の間にどうしても無音部分が出る。これはMP3(圧縮オーディオ全般かもしれない)の構造に拠る。

 MP3形式にエンコードする時、フェードアウト等を行わずにループする曲を作る際には曲の終わりを極限まで切り詰めると思うが、MP3はあらゆる曲長を取れるわけではない。 現実的には0.02秒以上の一定の秒数(ビットレート依存)の倍数である。中途半端な曲長はこの倍数に揃えられる。中途半端と言うよりは、運良くその倍数で終わらない限り必ずと言った方が相応しいだろう。

 ここまで読んで帰ろうと思い始めた人に簡単に説明すると、
「曲長の単位が0.02秒だとして、10.003秒の曲をmp3にすると、曲長は10.004秒に勝手に修正される」
 ということである。つまり切り詰めても結局無音が挿入されてしまうのである。

(勿論、曲の終端を切り詰める作業は無駄ではない。切り詰められる無音等の長さは通常、0.02秒より長いからだ。無駄になるのは0.01秒単位で曲の終わりを切り詰める行為に限られる。)

 他にも、mp3を生成するプログラム(エンコーダー)や、再生するプログラム(デコーダー)は、MP3音声の冒頭に無音を挿入するそうである。詳しくは不明だが、処理の都合上そうならざるを得ないのだと思われる。これも最短で0.02秒程度らしい。動画の音声にmp3フォーマットを使う場合、この分映像とのズレが生じるらしい。

 こうした無駄な部分を再生させないために、いくつかの対策が考案されている。
 iTunesやLAME(LAMEはフリーのMP3エンコーダーとして有名)で生成したMP3ファイルには、曲の長さの情報が含まれているので、これを超える分は再生しないようにできる訳だ。ちなみに通常のmp3では曲長をビットレートなどから計算して算出しており、曲の秒数などという情報は全く持っていない。
 こうすることで無音部分を省くことが可能になるのだが、これはあくまでも「再生ソフト側が対応していれば」の話である。iTunesが生まれる前から存在していたMP3再生ソフトから見れば、そんなものは当然無意味なデータに過ぎず、結局余計な部分を含めて再生することになる。ものによっては音声のデータだと認識されてしまうこともある。実はNiciousMUGENBGMで一部のMP3ファイルが全く鳴らないのはこの点に多少関係があり、鳴らないファイルには概してこういう情報が含まれている。
 鳴ってくれないMP3ファイルをバイナリエディタで見てみたところ、通常1つくらいしかないLAMEの情報タグが数十も含まれていた。言ってしまえばMP3ファイル自体にも問題はあるのだ。そんなMP3でも難なく再生できてしまう他の再生ソフトが尋常でない位に優秀なのだ。

 ……勿論うちのプラグインで再生できないことの言い訳なのだが。





前の雑記 次の雑記

雑記トップへ 
サイトのトップページへ