drewnoakes / metadata-extractor

Extracts Exif, IPTC, XMP, ICC and other metadata from image, video and audio files
Apache License 2.0
2.56k stars 480 forks source link

AWT class not found on Android when reading mp4 #417

Closed deckerst closed 3 years ago

deckerst commented 5 years ago

With metadata-extractor 2.12.0, on Android 9, the app crashes when reading mp4 video metadata. It used to work with metadata-extractor 2.11.0.

Stacktrace (in a Flutter app, but I got the same in a pure Android one):

E/flutter (25512): [ERROR:flutter/shell/platform/android/platform_view_android_jni.cc(40)] java.lang.NoClassDefFoundError: Failed resolution of: Ljava/awt/Point;
E/flutter (25512):  at com.drew.metadata.mp4.boxes.TrackHeaderBox.addMetadata(TrackHeaderBox.java:77)
E/flutter (25512):  at com.drew.metadata.mp4.Mp4BoxHandler.processTrackHeader(Mp4BoxHandler.java:116)
E/flutter (25512):  at com.drew.metadata.mp4.Mp4BoxHandler.processBox(Mp4BoxHandler.java:86)
E/flutter (25512):  at com.drew.imaging.mp4.Mp4Reader.processBoxes(Mp4Reader.java:58)
E/flutter (25512):  at com.drew.imaging.mp4.Mp4Reader.processBoxes(Mp4Reader.java:56)
E/flutter (25512):  at com.drew.imaging.mp4.Mp4Reader.processBoxes(Mp4Reader.java:56)
E/flutter (25512):  at com.drew.imaging.mp4.Mp4Reader.extract(Mp4Reader.java:42)
E/flutter (25512):  at com.drew.imaging.mp4.Mp4MetadataReader.readMetadata(Mp4MetadataReader.java:57)
E/flutter (25512):  at com.drew.imaging.ImageMetadataReader.readMetadata(ImageMetadataReader.java:178)
E/flutter (25512):  at com.drew.imaging.ImageMetadataReader.readMetadata(ImageMetadataReader.java:125)
E/flutter (25512):  at com.drew.imaging.ImageMetadataReader.readMetadata(ImageMetadataReader.java:104)
drewnoakes commented 5 years ago

This was fixed in #409.

drewnoakes commented 5 years ago

I'll get an updated package out ASAP.

richjhart commented 5 years ago

Any idea when this will be released? Or is it possible to get a snapshot build?

jiaohaibin commented 3 years ago

Same issue in TrackHeaderAtom, release 2.14.0, on Android 9

import java.awt.*;

public void addMetadata(QuickTimeDirectory directory) { if (width != 0 && height != 0 && directory.getDoubleObject(Mp4Directory.TAG_ROTATION) == null) { Point p = new Point(matrix[1] + matrix[4], matrix[0] + matrix[3]); double theta = Math.atan2(p.y, p.x); double degree = Math.toDegrees(theta); degree -= 45; directory.setDouble(QuickTimeDirectory.TAG_ROTATION, Math.abs(degree)); } }

drewnoakes commented 3 years ago

@jiaohaibin this was reported in #484 and fixed in master. I'll get a new release out asap.

drewnoakes commented 3 years ago

Released in 2.15.0.