Winampの標準のMP3デコーダ(in_mp3.dll)の代わりに in_mpg123.dll を使用したい場合に、
再生に支障が出ないようにパック化MP3ファイルを作成する方法です。
支障の内容については mpg123 の項を参照してください。
( サンプルCD: Dire Straits / Dire Straits )
※ 2〜9 は実験なので、結果だけ知りたい場合は まとめ を参照してください
1.CDからMP3へ変換
MP3ファイルはどのように作成しても構いません。
用意したサンプルMP3はすべてID3v1v2タグとXingヘッダーが付いています。
以降でいろいろなパターンのパック化MP3を作成して動作検証します。
2.そのままパック化した場合
各MP3ファイルのID3タグとXingヘッダーはそのまま付加された状態でパック化してみます。
(※キューシートなしで作成していますが、有無はどちらでも構いません、以降同様)
■Xing ■ID3v1 ■ID3v2
作成したパック化MP3ファイルを Winamp+in_mpg123.dll で開きます。
(※in_mpg123.dllのオプションで [フルバッファリング] をチェックしてください、以降同様)
先頭1曲分の長さ(4:01)しか認識されていないのが確認できます。(NG)
3.ID3タグを除去した場合
各MP3ファイルのID3タグを除去してパック化してみます。
■Xing ■ID3v1 ■ID3v2
作成したパック化MP3ファイルを Winamp+in_mpg123.dll で開きます。
いずれの場合も先頭1曲分の長さ(4:01)しか認識されていないのが確認できます。(NG)
4.Xingヘッダーを除去した場合
各MP3ファイルのXingヘッダーを除去してパック化してみます。
■Xing ■ID3v1 ■ID3v2
作成したパック化MP3ファイルを Winamp+in_mpg123.dll で開きます。
今度は全曲分の長さを認識できました。
しかし合計時間(41:29)は実際の時間(41:28)より微妙に長く算出されてしまったようです。
とりあえず頭出し再生させてみます。
聴いてみたところ、各曲の再生開始位置がずれてしまっているのが確認できます。
しかも後の方の曲になるに従ってその誤差は大きくなるようです。(NG)
5.XingヘッダーとID3タグを除去した場合
各MP3ファイルのXingヘッダーとID3タグを除去してパック化してみます。
まずはXingヘッダーとID3v1タグを除去した場合。
■Xing ■ID3v1 ■ID3v2
前記4のXingヘッダーを除去した場合と同じ結果でした(NG)
次にXingヘッダーとID3v2タグを除去した場合。
■Xing ■ID3v1 ■ID3v2
合計時間は正しく算出されたみたいです。頭出し再生もずれはありませんでした。
しかし頭出し再生直後にWinampの再生時間がゼロクリアされてしまう場合があるようです。
上記例では5曲目を頭出し再生させた直後ですが、再生時間は 00:00 から始まっています。
この状態でも実際に再生されているのは 2:59 の5曲目なのですが、
1曲目の 4:01 として処理されてしまう為、リピート/シャッフル再生で正常な曲の切り替え制御ができなくなります。(NG)
最後にXingヘッダーとすべてのID3タグ(v1v2)を除去した場合。
■Xing ■ID3v1 ■ID3v2
合計時間も頭出し再生もすべて正常でした。(OK)
例ではPack形式で作成していますが、無圧縮ZIP/LHAでも問題ないと思います。
6.全体のXingヘッダーを付加した場合
パック化MP3ファイル全体に対するXingヘッダーを付加してパック化してみます。
(※Pack形式でのみ作成可)
■Xing ■ID3v1 ■ID3v2
■Xing(パック化MP3全体)
作成したパック化MP3ファイルを Winamp+in_mpg123.dll で開きます。
ファイル全体のXingヘッダーを付ければ再生時間が正しく算出されるかと思ったのですが、
これでも先頭1曲分の長さ(4:01)しか認識されないという事象が発生してしまいました。(NG)
7.全体のXingヘッダーを付加して、ID3タグを除去した場合
パック化MP3ファイル全体に対するXingヘッダーを付加して、更に各MP3ファイルのID3タグを除去してパック化してみます。
まずはID3v1タグを除去した場合。
■Xing ■ID3v1 ■ID3v2
■Xing(パック化MP3全体)
前記6の場合と同じ結果でした(NG)
次にID3v2タグを除去した場合。
■Xing ■ID3v1 ■ID3v2
■Xing(パック化MP3全体)
合計時間は正しく算出されたみたいです。頭出し再生もずれはありませんでした。
しかし頭出し再生直後にWinampの再生時間がゼロクリアされてしまう場合があるようです。
上記例では6曲目を頭出し再生させた直後ですが、再生時間は 00:00 から始まっています。
この状態でも実際に再生されているのは 5:36 の6曲目なのですが、
1曲目の 4:01 として処理されてしまう為、リピート/シャッフル再生で正常な曲の切り替え制御ができなくなります。(NG)
最後にすべてのID3タグ(v1v2)を除去した場合。
■Xing ■ID3v1 ■ID3v2
■Xing(パック化MP3全体)
合計時間も頭出し再生もすべて正常でした。(OK)
8.全体のXingヘッダーを付加して、各Xingヘッダーを除去した場合
パック化MP3ファイル全体に対するXingヘッダーを付加して、更に各MP3ファイルのXingヘッダーを除去してパック化してみます。
■Xing ■ID3v1 ■ID3v2
■Xing(パック化MP3全体)
作成したパック化MP3ファイルを Winamp+in_mpg123.dll で開きます。
前記4のXingヘッダーを除去した場合と同じ結果でした。
データによっては頭出しだけはうまく処理される場合もあるみたいですが、
その場合でも再生時間がゼロクリアされる事象が発生します。(NG)
9.全体のXingヘッダーを付加して、各XingヘッダーとID3タグを除去した場合
パック化MP3ファイル全体に対するXingヘッダーを付加して、更に各MP3ファイルのXingヘッダーとID3タグを除去してパック化してみます。
まずはID3v1タグを除去した場合。
■Xing ■ID3v1 ■ID3v2
■Xing(パック化MP3全体)
前記8の場合と同じ結果でした(NG)
次にID3v2タグを除去した場合。
■Xing ■ID3v1 ■ID3v2
■Xing(パック化MP3全体)
合計時間は正しく算出されたみたいです。頭出し再生もずれはありませんでした。
しかし頭出し再生直後にWinampの再生時間がゼロクリアされてしまう場合があるようです。
上記例では6曲目を頭出し再生させた直後ですが、再生時間は 00:00 から始まっています。
この状態でも実際に再生されているのは 5:36 の6曲目なのですが、
1曲目の 4:01 として処理されてしまう為、リピート/シャッフル再生で正常な曲の切り替え制御ができなくなります。(NG)
最後にすべてのID3タグ(v1v2)を除去した場合。
■Xing ■ID3v1 ■ID3v2
■Xing(パック化MP3全体)
合計時間も頭出し再生もすべて正常でした。(OK)
まとめ
・各曲間に挟まれることになるID3タグは結果的にエラーデータになるので全て取り除く
・パック化MP3全体に対するXingヘッダーを付加すれば各曲のXingヘッダーは残しても可
・パック化MP3全体に対するXingヘッダーを付加できない場合は各曲のXingヘッダーは取り除く
|
|
|
|
|
|
| | |
■ | | |
| ■ | |
■ | ■ | |
| | ■ |
■ | | ■ |
| ■ | ■ |
■ | ■ | ■ |
| | |
■ | | |
| ■ | |
■ | ■ | |
| | ■ |
■ | | ■ |
| ■ | ■ |
■ | ■ | ■ |
|
|
× | - | - | NG |
× | - | - | NG |
× | - | - | NG |
× | - | - | NG |
△ | × | - | NG |
△ | × | - | NG |
○ | ○ | × | NG |
○ | ○ | ○ | OK |
× | - | - | NG |
× | - | - | NG |
○ | ○ | × | NG |
○ | ○ | ○ | OK |
△ | × | - | NG |
△ | × | - | NG |
○ | ○ | × | NG |
○ | ○ | ○ | OK |
|
|
|
時 間 … パック化MP3ファイル全体の再生時間が正しく認識されること
頭出し … 頭出し再生をした場合に再生開始位置にずれがないこと
シーク … 頭出し再生をした場合に再生時間がゼロクリアされないこと
□ … パック化MP3ファイル全体に対するXingヘッダーを追加
■ … 各MP3ファイルのID3タグまたはXingヘッダーを除去
× … 不可
△ … 不完全
○ … 可