Metadata-Extractor -- 缺少标签列表?
Metadata-Extractor -- Missing List of Tags?
我正在使用 metadata-extractor 从视频文件中检索元数据。我成功地检索了目录。现在我需要查询目录以获取特定信息——持续时间、高度等。
metadata-extractor docs 给出了如何查询特定标记值的示例:
// 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 文档中的 This page 包含标题为 "the various tag values" 的 link,但它转到的页面仅列出静止图像的标签,而不是视频文件的标签。
谷歌搜索 Metadata-Extractor -- Complete List of All Tags
似乎没有显示所有标签的列表。
metadata-extractor 文档是否真的缺少标签列表,或者我是否以某种方式错误地处理了这个问题?
我在以下位置找到了标签列表:
但是,这些常量似乎并不是实际代码中所需要的。这是有效的 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" 的可用常量。
我正在使用 metadata-extractor 从视频文件中检索元数据。我成功地检索了目录。现在我需要查询目录以获取特定信息——持续时间、高度等。
metadata-extractor docs 给出了如何查询特定标记值的示例:
// 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
、持续时间、高度等。
This page 包含标题为 "the various tag values" 的 link,但它转到的页面仅列出静止图像的标签,而不是视频文件的标签。
谷歌搜索 Metadata-Extractor -- Complete List of All Tags
似乎没有显示所有标签的列表。
metadata-extractor 文档是否真的缺少标签列表,或者我是否以某种方式错误地处理了这个问题?
我在以下位置找到了标签列表:
但是,这些常量似乎并不是实际代码中所需要的。这是有效的 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" 的可用常量。