ID3 タグ形式 ( https://en.wikipedia.org/wiki/ID3#Layout ) の構造を確認してください。これは v1 の形式です。
| Field | Offset | Length | Value |
|--------|--------|--------|---------|
| Header | 0 | 3 | TAG |
| Title | 3 | 30 | |
| Artist | 33 | 30 | |
| ... ect |
- ファイルから 128 バイトを BLOB に読み取ります。
- Blob を読み取るためのリーダーを作成します。
- ArrayBuffer を読み取るための DataView を作成します。
- フィールドごとに、バッファを で文字列に変換し
String.fromCharCode
ます。
function readString(dataView, offset, length) {
var o = '';
for (var i = offset; i < offset + length; i++) {
// keep only printable characters
if (i >= 32) o += String.fromCharCode(dataView.getUint8(i));
}
return o;
}
var file = fileElm.files[0];
var blob = file.slice(file.size - 128, file.size);
var reader = new FileReader();
reader.onload = function(evt) {
var buff = evt.target.result;
var dataView = new DataView(buff)
console.log('TAG:', readString(dataView, 0, 3));
console.log('title: ', readString(dataView, 3, 30)); // title
console.log('artist: ', readString(dataView, 33, 30)); // artist
console.log('album: ', readString(dataView, 63, 30)); // album
console.log('year: ', readString(dataView, 93, 4)); // year
}
reader.readAsArrayBuffer(blob);