Варианты метаданных прилагаются к документам разных форматов файлов. Файлы MP3 обычно содержат теги метаданных ID3. В этой статье обсуждается, как читать различные теги MP3 в Java. Один за другим мы увидим, как извлекать теги метаданных ID3 (IDEv1, ID3v2), Lyrics и APEv2 из файлов mp3 с помощью Java Metadata API.

Ниже рассматриваются следующие темы:

API Java для тегов метаданных MP3

GroupDocs.Metadata оснащен API для автоматизации управления метаданными различных форматов файлов внутри приложений. Его Java API позволяет читать, обновлять, добавлять, очищать и удалять метаданные для многих форматов файлов в приложении Java. Мы будем использовать его для работы с тегами метаданных MP3.

Загрузите и настройте

Получите библиотеку метаданных из раздела загрузки. Для вашего Java-приложения на основе Maven просто добавьте следующую конфигурацию pom.xml. После этого вы можете попробовать примеры из этой статьи, а также многие другие примеры, доступные на GitHub. Для получения подробной информации вы можете посетить Справочник по API.

<repository>
	<id>GroupDocsJavaAPI</id>
	<name>GroupDocs Java API</name>
	<url>http://repository.groupdocs.com/repo/</url>
</repository>
<dependency>
        <groupId>com.groupdocs</groupId>
        <artifactId>groupdocs-metadata</artifactId>
        <version>22.2</version> 
</dependency>

Чтение тегов MP3 ID3 в Java - ID3v1 и ID3v2

Следующие шаги показывают, как читать теги MP3 ID3v1 с помощью Java.

  • Загрузите файл MP3, используя класс Metadata.
  • Получите MP3RootPackage, используя метод getRootPackageGeneric().
  • Из корневого пакета извлеките каждое из свойств ID3v1.

Следующий исходный код Java считывает некоторые теги MP3 ID3v1 файла MP3.

// Чтение тегов ID3V1 файла MP3
try (Metadata metadata = new Metadata("path/audio-ID3V1.mp3")) {
	MP3RootPackage root = metadata.getRootPackageGeneric();
	if (root.getID3V1() != null) {

		System.out.println(root.getID3V1().getAlbum());
		System.out.println(root.getID3V1().getArtist());
		System.out.println(root.getID3V1().getTitle());
		System.out.println(root.getID3V1().getVersion());
		System.out.println(root.getID3V1().getComment());
		// ...
	}
}

Аналогичным образом можно извлечь теги ID3v2. Следующие шаги показывают, как получить теги MP3 ID3v2 в Java.

В следующем примере исходного кода Java считываются некоторые теги MP3 ID3v2 и сведения о прикрепленных изображениях файла MP3.

// Чтение тегов ID3V2 файла MP3
try (Metadata metadata = new Metadata("path/audio-ID3V2.mp3")) {
    MP3RootPackage root = metadata.getRootPackageGeneric();
 
    if (root.getID3V2() != null) {
        System.out.println(root.getID3V2().getAlbum());
        System.out.println(root.getID3V2().getArtist());
        System.out.println(root.getID3V2().getBand());
        System.out.println(root.getID3V2().getTitle());
        System.out.println(root.getID3V2().getComposers());
        System.out.println(root.getID3V2().getCopyright());
        System.out.println(root.getID3V2().getPublisher());
        System.out.println(root.getID3V2().getOriginalAlbum());
        System.out.println(root.getID3V2().getMusicalKey());
 
        if (root.getID3V2().getAttachedPictures() != null) {
            for (ID3V2AttachedPictureFrame attachedPicture : root.getID3V2().getAttachedPictures()) {
                System.out.println(attachedPicture.getAttachedPictureType());
                System.out.println(attachedPicture.getMimeType());
                System.out.println(attachedPicture.getDescription()); 
            }
        }
    }
}

Чтение тегов текстов песен MP3 на Java

Следующие шаги помогут вам прочитать теги MP3 Lyrics в Java.

  • Загрузите файл MP3, используя класс Metadata.
  • Получите корневой пакет.
  • Из корня вы можете получить теги текстов песен и их свойства, такие как тексты песен, исполнитель, трек и т. д.

Следующий фрагмент кода Java извлекает теги текстов песен MP3 и некоторые свойства из файла MP3.

// Читать MP3 файл Lyrics tags
try (Metadata metadata = new Metadata("path/audio-Lyrics.mp3")) {
	MP3RootPackage root = metadata.getRootPackageGeneric();
	if (root.getLyrics3V2() != null) {
		System.out.println(root.getLyrics3V2().getLyrics());
		System.out.println(root.getLyrics3V2().getAlbum());
		System.out.println(root.getLyrics3V2().getArtist());
		System.out.println(root.getLyrics3V2().getTrack());
		// ...

    // Точно так же вы можете перемещаться по полям тега
		for (LyricsField field : root.getLyrics3V2().toList()) {
			System.out.println(String.format("%s = %s", field.getID(), field.getData()));
		}
	}
}

Чтение тегов MP3 APEv2 в Java

Следующие шаги показывают, как мы можем извлечь теги MP3 APEv2 в приложении Java.

  • Загрузите файл MP3, используя класс Metadata.
  • Получите корневой пакет, используя метод getRootPackageGeneric().
  • Из корня вы можете получить теги APEv2, такие как «Альбом», «Жанр», «Авторские права», «Язык» и т. д.

В следующих примерах кода Java читаются некоторые свойства тегов MP3 APE файла MP3.

// Чтение тегов APE файла MP3
try (Metadata metadata = new Metadata("path/audio-APE.mp3")) {
	MP3RootPackage root = metadata.getRootPackageGeneric();

	if (root.getApeV2() != null) {
		System.out.println(root.getApeV2().getAlbum());
		System.out.println(root.getApeV2().getTitle());
		System.out.println(root.getApeV2().getArtist());
		System.out.println(root.getApeV2().getComposer());
		System.out.println(root.getApeV2().getCopyright());
		System.out.println(root.getApeV2().getGenre());
		System.out.println(root.getApeV2().getLanguage());
		// ...
	}

Получите бесплатную лицензию API

Вы можете получить бесплатную временную лицензию, чтобы использовать API без ограничений пробной версии.

Вывод

Подводя итог, мы научились извлекать теги метаданных из файлов MP3 в Java. Один за другим мы читаем теги ID3v1, ID3v2, Lyrics и APE и их свойства из файлов MP3. Подумайте о создании собственного онлайн-редактора тегов MP3 и средства просмотра метаданных, как Онлайн-приложение метаданных.

Узнайте больше об API из документации и свяжитесь с нами по вопросам через форум.

Смотрите также