0

オーディオおよびビデオ ファイルの詳細なメタデータを抽出するカスタム メタデータ エクストラクタを開発しました。エクストラクタは AbstractMappingMetadataExtracter を拡張し、抽出されたフィールドをカスタム タイプにマップする必要があります。抽出クラスは AudioMetadataExtractor という名前で、対応するプロパティ ファイルにはマッピングが含まれています。以下はクラスのコードです

public class AudioMetadataExtractor extends AbstractBaseMetadataExtractor {

public static ArrayList<String> SUPPORTED_MIMETYPES = addMimeTypes(new String[] { MimeTypes.MIMETYPE_MP3, MimeTypes.MIMETYPE_WMA });

public AudioMetadataExtractor() {
    this(SUPPORTED_MIMETYPES);
}

public AudioMetadataExtractor(ArrayList<String> supportedMimeTypes) {
    super(supportedMimeTypes);
}


@Override
protected Map<String, Serializable> extractRaw(ContentReader reader) throws Throwable {

    Map<String, Serializable> rawProperties = newRawMap();

    File file = TempFileProvider.createTempFile("DCM", "MINFO");
    reader.getContent(file);

    MediaInfoJNA mediaInfoLib = new MediaInfoJNA();
    mediaInfoLib.Open(file.getAbsolutePath());

    String album = mediaInfoLib.Get(StreamKind.General, 0, "Album", MediaInfoJNA.InfoKind.Text, MediaInfoJNA.InfoKind.Name);
    System.out.println("Album1 " + album);
    String title = mediaInfoLib.Get(StreamKind.General, 0, "Title", MediaInfoJNA.InfoKind.Text, MediaInfoJNA.InfoKind.Name);
    System.out.println("Title " + title);
    String duration = mediaInfoLib.Get(StreamKind.General, 0, "Duration", MediaInfoJNA.InfoKind.Text, MediaInfoJNA.InfoKind.Name);
    System.out.println("Duration " + duration);

    putRawValue("album", album, rawProperties);

    mediaInfoLib.Close();

    return rawProperties;
}
}

抽出器の構成は次のとおりです。

<bean id="metadata.extractor.AudioAsset" class="com.diipl.moviebeam.dcm.alfresco.metadata.AudioMetadataExtractor" parent="baseMetadataExtracter">
    <property name="inheritDefaultMapping">
        <value>true</value>
    </property>
</bean>

問題: 新しいファイルをアップロードするときにエクストラクターが呼び出され、すべての sysout が正しい値で表示されます。ただし、プロパティには値が入力されていません。しかし、ファイルに対して「共通メタデータの抽出」アクションを実行すると、エクストラクターが呼び出され、フィールドが正しい値を取得します。

4

0 に答える 0