2010/09/24(金) [n年前の日記]
#1 [sound] MP3について少し調べた
lameでmp3に変換したファイルをFlash上でループ再生しようとするとループ部分で音が途切れてしまう。解決策を知りたいと思って検索。
どうやら mp3 というものは、必ず先頭に無音部分が入るものらしい。 _いまさらながらMP3のギャップレス処理を復習 という記事に解説があった。エンコーダが挿入してしまうディレイと、デコーダが挿入してしまうディレイがあり、かつ、mp3はフレーム単位で記録してるから、フレームの時間と合致しない分は無音が挿入されてしまうのだとか。これは参った。実際、Audacity や spwave で mp3 を開いてみたが、たしかに先頭に無音部分が入っているように見える。mp3 の仕様だったのか…。
lame で変換された場合、MP3 info tag とやらにディレイ時間を記録してあるらしく。デコーダ側・プレイヤー側がその情報を反映しつつ再生してくれれば、無音部分がない状態で再生できる ―― ギャップレス再生ができるらしい。例えば、foobar2000 などはそのあたりもんサポートしているらしく。foobar2000上で1曲をループ再生させると、綺麗にループしてるように聴こえる、時もある。
となると、Flash Player も foobar2000等と同様に、そのディレイ情報とやらを反映して再生してくれれば問題解決ということになるが…。どうも反映してない予感。
Flash上でパブリッシュ時に wav から mp3 に変換すると、ループ時に無音が入ったりはしないのだけど。想像するに、Flash上でmp3変換がされる際には、変換後のmp3に無音部分がどのくらいあるか、つまりエンコーダディレイ情報をmp3と一緒に同梱して、Flash Player がその情報を反映しつつ再生してる、ということではあるまいか。であれば、それと同じ処理をする外部ツールがあればどうにかなりそうなのだが…。
どうやら mp3 というものは、必ず先頭に無音部分が入るものらしい。 _いまさらながらMP3のギャップレス処理を復習 という記事に解説があった。エンコーダが挿入してしまうディレイと、デコーダが挿入してしまうディレイがあり、かつ、mp3はフレーム単位で記録してるから、フレームの時間と合致しない分は無音が挿入されてしまうのだとか。これは参った。実際、Audacity や spwave で mp3 を開いてみたが、たしかに先頭に無音部分が入っているように見える。mp3 の仕様だったのか…。
lame で変換された場合、MP3 info tag とやらにディレイ時間を記録してあるらしく。デコーダ側・プレイヤー側がその情報を反映しつつ再生してくれれば、無音部分がない状態で再生できる ―― ギャップレス再生ができるらしい。例えば、foobar2000 などはそのあたりもんサポートしているらしく。foobar2000上で1曲をループ再生させると、綺麗にループしてるように聴こえる、時もある。
となると、Flash Player も foobar2000等と同様に、そのディレイ情報とやらを反映して再生してくれれば問題解決ということになるが…。どうも反映してない予感。
Flash上でパブリッシュ時に wav から mp3 に変換すると、ループ時に無音が入ったりはしないのだけど。想像するに、Flash上でmp3変換がされる際には、変換後のmp3に無音部分がどのくらいあるか、つまりエンコーダディレイ情報をmp3と一緒に同梱して、Flash Player がその情報を反映しつつ再生してる、ということではあるまいか。であれば、それと同じ処理をする外部ツールがあればどうにかなりそうなのだが…。
◎ 変換ビットレートも関係してくるのかもしれない。 :
lame で mp3変換する際に、どのくらいのビットレートで変換するかも関係している感じがする。44.1KHz、16bit、ステレオのwavを、56Kbps、64Kbpsでmp3変換してみたが、56Kbpsではループが途切れるのに対し、64kbpsでは綺麗に繋がっているように聴こえた。
foobar2000上で表示された情報を見ると、56kbpsの場合はサンプリングレートが32KHz、64Kbpsの場合はサンプリングレートが44.1KHz になっていた。おそらく、変換ビットレートに適したサンプリングレートになるように、lame が途中で変換している予感。その段階で、余分な無音部分が入ってしまっている、ような気がする。
foobar2000上で表示された情報を見ると、56kbpsの場合はサンプリングレートが32KHz、64Kbpsの場合はサンプリングレートが44.1KHz になっていた。おそらく、変換ビットレートに適したサンプリングレートになるように、lame が途中で変換している予感。その段階で、余分な無音部分が入ってしまっている、ような気がする。
[ ツッコむ ]
以上、1 日分です。