有没有办法使用 mp3agic 获得通用的 mp3 标签?
Is there a way to get a generic mp3 tag using mp3agic?
我正在使用 java 开发 MP3 播放器,使用 mp3agic 编辑 .mp3 文件元数据。问题是:我不知道文件的具体标签来编辑想要的数据。
例如,这是我获取 mp3 曲目的代码:
public static int get_rep(Music msc)
{
try
{
Mp3File file = new Mp3File(msc.get_path());
if (file.hasId3v1Tag())
{
ID3v1 tag = file.getId3v1Tag();
return Integer.parseInt(tag.getTrack());
}
else if (file.hasId3v2Tag())
{
ID3v2 tag = file.getId3v2Tag();
return Integer.parseInt(tag.getTrack());
}
}
catch (UnsupportedTagException e)
{
e.printStackTrace();
}
catch (InvalidDataException e)
{
e.printStackTrace();
}
catch (IOException e)
{
e.printStackTrace();
}
return -1;
}
有没有办法让标签值跳过 file.hasId3v1Tag()
和 file.hasId3v2Tag()
验证?
我试过了:
private static Object get_tag(Music msc)
{
try
{
Mp3File file = new Mp3File(msc.get_path());
if (file.hasId3v1Tag())
{
return file.getId3v1Tag();
}
else if (file.hasId3v2Tag())
{
return file.getId3v2Tag();
}
/*
else if(file.hasCustomTag())
{
file.removeCustomTag();
return file.getCustomTag();
}
*/
}
catch (UnsupportedTagException e)
{
e.printStackTrace();
}
catch (InvalidDataException e)
{
e.printStackTrace();
}
catch (IOException e)
{
e.printStackTrace();
}
return Boolean.FALSE;
}
但我仍然需要检查标签,然后将 Object
值转换为标签值,这意味着无论如何我都必须知道它。我接受任何建议,甚至交换 mp3agic。
ID3v2
扩展了 ID3v1
,因此您应该能够使用 ID3v1 tag = file.getId3v2Tag();
并能够从中提取 ID3v1 数据。
你可以试试这个:
private static ID3v1 get_tag(Music msc) {
try {
Mp3File file = new Mp3File(msc.get_path());
if (file.hasId3v1Tag()) {
return file.getId3v1Tag();
} else if (file.hasId3v2Tag()) {
return file.getId3v2Tag();
}
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
我正在使用 java 开发 MP3 播放器,使用 mp3agic 编辑 .mp3 文件元数据。问题是:我不知道文件的具体标签来编辑想要的数据。
例如,这是我获取 mp3 曲目的代码:
public static int get_rep(Music msc)
{
try
{
Mp3File file = new Mp3File(msc.get_path());
if (file.hasId3v1Tag())
{
ID3v1 tag = file.getId3v1Tag();
return Integer.parseInt(tag.getTrack());
}
else if (file.hasId3v2Tag())
{
ID3v2 tag = file.getId3v2Tag();
return Integer.parseInt(tag.getTrack());
}
}
catch (UnsupportedTagException e)
{
e.printStackTrace();
}
catch (InvalidDataException e)
{
e.printStackTrace();
}
catch (IOException e)
{
e.printStackTrace();
}
return -1;
}
有没有办法让标签值跳过 file.hasId3v1Tag()
和 file.hasId3v2Tag()
验证?
我试过了:
private static Object get_tag(Music msc)
{
try
{
Mp3File file = new Mp3File(msc.get_path());
if (file.hasId3v1Tag())
{
return file.getId3v1Tag();
}
else if (file.hasId3v2Tag())
{
return file.getId3v2Tag();
}
/*
else if(file.hasCustomTag())
{
file.removeCustomTag();
return file.getCustomTag();
}
*/
}
catch (UnsupportedTagException e)
{
e.printStackTrace();
}
catch (InvalidDataException e)
{
e.printStackTrace();
}
catch (IOException e)
{
e.printStackTrace();
}
return Boolean.FALSE;
}
但我仍然需要检查标签,然后将 Object
值转换为标签值,这意味着无论如何我都必须知道它。我接受任何建议,甚至交换 mp3agic。
ID3v2
扩展了 ID3v1
,因此您应该能够使用 ID3v1 tag = file.getId3v2Tag();
并能够从中提取 ID3v1 数据。
你可以试试这个:
private static ID3v1 get_tag(Music msc) {
try {
Mp3File file = new Mp3File(msc.get_path());
if (file.hasId3v1Tag()) {
return file.getId3v1Tag();
} else if (file.hasId3v2Tag()) {
return file.getId3v2Tag();
}
} catch (Exception e) {
e.printStackTrace();
}
return null;
}