【问题标题】:Metadata-Extractor -- Missing List of Tags?元数据提取器——缺少标签列表?
【发布时间】:2018-11-22 00:19:22
【问题描述】:

我正在使用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 包含一个标题为“各种标签值”的链接,但它转到的页面仅列出了静态图像的标签,而不是视频文件的标签。

搜索Metadata-Extractor -- Complete List of All Tags 似乎没有显示所有标签的列表。

元数据提取器文档真的缺少标签列表,还是我以某种错误的方式处理这个问题?

【问题讨论】:

    标签: metadata metadata-extractor


    【解决方案1】:

    我在以下位置找到了标签列表:

    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”的可用常量。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-12
      相关资源
      最近更新 更多