[Compartir tecnología de código abierto] Biblioteca Java para leer y escribir MP3: MP3AGIC, use MP3AGIC para obtener el valor ID3v1 y obtener la portada del álbum ID3v2 y modificar la imagen de portada ID3v2 y otra información mp3

introducir

mp3agic es una biblioteca Java pura. Se utiliza para leer archivos mp3 y leer/manipular etiquetas ID3 (ID3v1 y ID3v2.2 a ID3v2.4), puede cambiar el nombre de archivos mp3, volver a etiquetar archivos mp3, agregar imágenes a archivos mp3 usando los detalles en las etiquetas ID3 y extraer imágenes de archivos mp3 y muchas más tareas.

Además, JavaCV también puede admitir la lectura de portadas de mp3: "Guía de desarrollo de audio y video de JavaCV: cómo usar JavaCV para leer archivos mp3, mostrar imágenes de portadas de álbumes ID3V2 y guardarlas como imágenes jpg y png manteniendo la transparencia png"

Introducción a las etiquetas finales de archivos mp3

Hay tres tipos de etiquetas de cola en archivos de música mp3, a saber: ID3v1, ID3v2 y APEv2.

  1. ID3v1 se encuentra al final del archivo, no admite portadas, no admite algunos caracteres especiales, es corto, pero es compatible con dispositivos antiguos.

  2. ID3v2 es el sucesor de ID3v1. Se encuentra en el encabezado del archivo, admite portadas y caracteres especiales y tiene cualquier longitud.

  3. APEv2 se encuentra al final del archivo (antes de ID3v1 cuando está presente al mismo tiempo que ID3v1). También admite portadas y caracteres especiales, pero no se recomienda para mp3.

dependencias mp3agic

<dependency>
  <groupId>com.mpatric</groupId>
  <artifactId>mp3agic</artifactId>
  <version>0.9.1</version>
</dependency>

Dirección oficial de mantenimiento.

https://github.com/mpatric/mp3agic

Ejemplo de uso

abrir archivo mp3

Opening an mp3 file
Mp3File mp3file = new Mp3File("eguid.mp3");
System.out.println("Length of this mp3 is: " + mp3file.getLengthInSeconds() + " seconds");
System.out.println("Bitrate: " + mp3file.getBitrate() + " kbps " + (mp3file.isVbr() ? "(VBR)" : "(CBR)"));
System.out.println("Sample rate: " + mp3file.getSampleRate() + " Hz");
System.out.println("Has ID3v1 tag?: " + (mp3file.hasId3v1Tag() ? "YES" : "NO"));
System.out.println("Has ID3v2 tag?: " + (mp3file.hasId3v2Tag() ? "YES" : "NO"));
System.out.println("Has custom tag?: " + (mp3file.hasCustomTag() ? "YES" : "NO"));

Guardar archivos MP3

mp3file.save("MyMp3File.mp3");

Eliminar ID3 y etiquetas personalizadas

Mp3File mp3file = new Mp3File("eguid.mp3");
if (mp3file.hasId3v1Tag()) {
    
    
  mp3file.removeId3v1Tag();
}
if (mp3file.hasId3v2Tag()) {
    
    
  mp3file.removeId3v2Tag();
}
if (mp3file.hasCustomTag()) {
    
    
  mp3file.removeCustomTag();
}
mp3file.save("eguidMp3FileWithoutTags.mp3");

Obtener el valor de ID3v1

Mp3File mp3file = new Mp3File("eguid.mp3");
if (mp3file.hasId3v1Tag()) {
    
    
  ID3v1 id3v1Tag = mp3file.getId3v1Tag();
  System.out.println("Track: " + id3v1Tag.getTrack());
  System.out.println("Artist: " + id3v1Tag.getArtist());
  System.out.println("Title: " + id3v1Tag.getTitle());
  System.out.println("Album: " + id3v1Tag.getAlbum());
  System.out.println("Year: " + id3v1Tag.getYear());
  System.out.println("Genre: " + id3v1Tag.getGenre() + " (" + id3v1Tag.getGenreDescription() + ")");
  System.out.println("Comment: " + id3v1Tag.getComment());
}

Establecer el valor de ID3v1

Mp3File mp3file = new Mp3File("SomeMp3File.mp3");
ID3v1 id3v1Tag;
if (mp3file.hasId3v1Tag()) {
    
    
  id3v1Tag =  mp3file.getId3v1Tag();
} else {
    
    
  // mp3 does not have an ID3v1 tag, let's create one..
  id3v1Tag = new ID3v1Tag();
  mp3file.setId3v1Tag(id3v1Tag);
}
id3v1Tag.setTrack("5");
id3v1Tag.setArtist("An Artist");
id3v1Tag.setTitle("The Title");
id3v1Tag.setAlbum("The Album");
id3v1Tag.setYear("2001");
id3v1Tag.setGenre(12);
id3v1Tag.setComment("Some comment");
    mp3file.save("MyMp3File.mp3");

Obtener la portada del álbum ID3v2

Mp3File mp3file = new Mp3File("eguid.mp3");
if (mp3file.hasId3v2Tag()) {
    
    
  ID3v2 id3v2Tag = mp3file.getId3v2Tag();
  byte[] imageData = id3v2Tag.getAlbumImage();//获取封面图像
  if (imageData != null) {
    
    
    String mimeType = id3v2Tag.getAlbumImageMimeType();//获取封面图像mine-type扩展名
    // 写出图像到文件 - 可以从 MIME 类型确定适当的文件扩展名
    RandomAccessFile file = new RandomAccessFile("album-artwork", "rw");
    file.write(imageData);
    file.close();
  }
}

Establecer el valor del campo ID3v2

Mp3File mp3file = new Mp3File("eguid.mp3");
ID3v2 id3v2Tag;
if (mp3file.hasId3v2Tag()) {
    
    
  id3v2Tag = mp3file.getId3v2Tag();
} else {
    
    
  // mp3 does not have an ID3v2 tag, let's create one..
  id3v2Tag = new ID3v24Tag();
  mp3file.setId3v2Tag(id3v2Tag);
}
id3v2Tag.setTrack("5");
id3v2Tag.setArtist("An Artist");
id3v2Tag.setTitle("The Title");
id3v2Tag.setAlbum("The Album");
id3v2Tag.setYear("2001");
id3v2Tag.setGenre(12);
id3v2Tag.setComment("Some comment");
id3v2Tag.setLyrics("Some lyrics");
id3v2Tag.setComposer("The Composer");
id3v2Tag.setPublisher("A Publisher");
id3v2Tag.setOriginalArtist("Another Artist");
id3v2Tag.setAlbumArtist("An Artist");
id3v2Tag.setCopyright("Copyright");
id3v2Tag.setUrl("http://foobar");
id3v2Tag.setEncoder("The Encoder");
mp3file.save("eguid-mp3.mp3");

Obtener el valor del campo ID3v2

Mp3File mp3file = new Mp3File("eguid.mp3");
if (mp3file.hasId3v2Tag()) {
    
    
  ID3v2 id3v2Tag = mp3file.getId3v2Tag();
  System.out.println("Track: " + id3v2Tag.getTrack());
  System.out.println("Artist: " + id3v2Tag.getArtist());
  System.out.println("Title: " + id3v2Tag.getTitle());
  System.out.println("Album: " + id3v2Tag.getAlbum());
  System.out.println("Year: " + id3v2Tag.getYear());
  System.out.println("Genre: " + id3v2Tag.getGenre() + " (" + id3v2Tag.getGenreDescription() + ")");
  System.out.println("Comment: " + id3v2Tag.getComment());
  System.out.println("Lyrics: " + id3v2Tag.getLyrics());
  System.out.println("Composer: " + id3v2Tag.getComposer());
  System.out.println("Publisher: " + id3v2Tag.getPublisher());
  System.out.println("Original artist: " + id3v2Tag.getOriginalArtist());
  System.out.println("Album artist: " + id3v2Tag.getAlbumArtist());
  System.out.println("Copyright: " + id3v2Tag.getCopyright());
  System.out.println("URL: " + id3v2Tag.getUrl());
  System.out.println("Encoder: " + id3v2Tag.getEncoder());
  byte[] albumImageData = id3v2Tag.getAlbumImage();
  if (albumImageData != null) {
    
    
    System.out.println("是否有专辑图数据, length: " + albumImageData.length + " bytes");
    System.out.println("专辑图MIME类型的文件扩展名: " + id3v2Tag.getAlbumImageMimeType());
  }
}

Supongo que te gusta

Origin blog.csdn.net/eguid_1/article/details/131697580
Recomendado
Clasificación