mp3agic や jaudiotagger などのライブラリを使用する方が簡単だと思いますが、学習のために id3 タグを手動で編集したいと考えていました。
タグを適切に取得するようにコードを設定しましたが、一部の曲ではタイトルが 30 文字でカットされていることに気付きましたが、音楽プレーヤーで .mp3 ファイルを開くと、30 文字を超える完全なタイトルが表示されます。
これは、タグを表示するために現在使用しているコードです。
File mp3File = new File(filePath);
byte[] mp3Meta = new byte[128];
try {
//convert file into array of bytes
fileReader = new FileInputStream(mp3File);
fileReader.skip((int)mp3File.length() - 128);
fileReader.read(mp3Meta);
String id3 = new String(mp3Meta);
String tag = id3.substring(0, 3);
if (tag.equals("TAG")) {
System.out.println("\nTitle: " + id3.substring(3, 32) + "\n" +
"Artist: " + id3.substring(33, 62) + "\n" +
"Album: " + id3.substring(63, 91) + "\n" +
"Year: " + id3.substring(93, 97) + "\n" +
"************************************************");
} else {
System.out.println("File has no ID3 tags..");
}
}catch(Exception e){
e.printStackTrace();
}
タグを編集する方法については考えがありますが、30 文字を超える場合、完全なタイトル (または任意のタグ) を取得するにはどうすればよいですか? id3v2 に 30 文字を超えるタグを追加する方法があることを読みましたが、id3v2 フレームにアクセスする方法がわかりません
mp3が使用しているバージョン(id3v1またはid3v2)を特定する必要があると思いますが、プログラムでそれを行う方法もわかりません。