Метаданные-экстрактор - отсутствует список тегов? - PullRequest
0 голосов
/ 22 ноября 2018

Я использую экстрактор метаданных для извлечения метаданных из видеофайлов.У меня это успешно извлекает каталоги.Теперь мне нужно запросить у каталогов конкретную информацию - длительность, высоту и т. Д.

В документах-экстракторах метаданных приведен пример запроса определенного значения тега:

// obtain the Exif directory
ExifSubIFDDirectory directory
    = metadata.getFirstDirectoryOfType(ExifSubIFDDirectory.class);

// query the tag's value
Date date
    = directory.getDate(ExifSubIFDDirectory.TAG_DATETIME_ORIGINAL);

Похоже, мне нужно получить список соответствующих тегов, таких как TAG_DATETIME_ORIGINAL, для продолжительности, высоты и т. Д.

Эта страница вДокументы metadata-extractor содержат ссылку под названием «различные значения тегов», но на странице, на которой она находится, перечислены теги только для неподвижных изображений, а не для видеофайлов.

Похоже, поиск в Google для Metadata-Extractor -- Complete List of All Tags не выдает список всех тегов.

Действительно ли в документах-экстракторах метаданных отсутствует список тегов, или я подхожу к этому неправильнокак-то?

1 Ответ

0 голосов
/ 04 декабря 2018

Я нашел список тегов по адресу:

https://developer.tizen.org/dev-guide/2.3.1/org.tizen.guides/html/native/multimedia/metadata_extractor_n.htm

Однако эти константы, похоже, не являются необходимыми в реальном коде.Вот Java-код, который работает:

import com.drew.imaging.ImageMetadataReader;
import com.drew.metadata.Directory;
import com.drew.metadata.Metadata;
import com.drew.metadata.Tag;
import com.drew.metadata.file.FileTypeDirectory;
import com.drew.metadata.mp4.Mp4Directory;
import com.drew.metadata.mp4.media.Mp4SoundDirectory;
import com.drew.metadata.mp4.media.Mp4VideoDirectory;

[.....]

Metadata theMetadata = null;
try {
    InputStream stream = new URL(theVideoInfo.getLinkToVideo()).openStream();
    theMetadata = ImageMetadataReader.readMetadata(stream);
    }

} catch (java.lang.Exception exception) {
    exception.printStackTrace();
}

Mp4SoundDirectory soundDirectory
        = theMetadata.getFirstDirectoryOfType(Mp4SoundDirectory.class);
Mp4VideoDirectory videoDirectory
        = theMetadata.getFirstDirectoryOfType(Mp4VideoDirectory.class);
Mp4Directory mp4Directory
        = theMetadata.getFirstDirectoryOfType(Mp4Directory.class);
FileTypeDirectory fileTypeDirectory
        = theMetadata.getFirstDirectoryOfType(FileTypeDirectory.class);

String numberOfAudioChannels
        = soundDirectory.getString(Mp4SoundDirectory.TAG_NUMBER_OF_CHANNELS);
String duration = mp4Directory.getString(Mp4Directory.TAG_DURATION);
String frameRate = videoDirectory.getString(Mp4VideoDirectory.TAG_FRAME_RATE);
String height = videoDirectory.getString(Mp4VideoDirectory.TAG_HEIGHT);
String width = videoDirectory.getString(Mp4VideoDirectory.TAG_WIDTH);
String type = fileTypeDirectory.getString(FileTypeDirectory.TAG_DETECTED_FILE_MIME_TYPE);

Я нашел константы (TAG_HEIGHT, TAG_WIDTH и т. Д.), Непосредственно изучив объекты извлечения метаданных в отладчике.Например, я бы набрал:

 Mp4VideoDirectory.WIDTH

... и отладчик (IntelliJ) автоматически завершит доступные константы с текстом «WIDTH».

...