2017-08-25 5 views
2

Ich möchte die Höhe und Breite des Videos abrufen, dazu verwende ich die MediaMetadataRetriever-Klasse. Es funktioniert in den meisten Fällen korrekt, aber für wenige Fälle sind Höhe und Breite vertauscht.Android MediaMetadataRetriever falsche Videohöhe und -breite

Ich denke, dass dies aufgrund von Orientierungsänderung passieren könnte.

Mein aktueller Code:

MediaMetadataRetriever metaRetriever = new MediaMetadataRetriever(); 
     metaRetriever.setDataSource(videoPath); 
     videoHeight = metaRetriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_VIDEO_HEIGHT); 
     videoWidth = metaRetriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_VIDEO_WIDTH); 

Wie kann ich korrekte Werte erhalten? Danke

+0

Bitte teilen Sie die Mediendatei. Es ist hilfreich, die Metadaten der Datei zu analysieren. – lucky1928

Antwort

0

Ich habe versucht, dies herauszufinden, für den letzten Tag oder so, ich musste es schließlich experimentell lösen.

  File file = new File(path); 
      if (file.exists()) { 
       MediaMetadataRetriever retriever = new MediaMetadataRetriever(); 
       retriever.setDataSource(file.getAbsolutePath()); 
       String metaRotation = retriever.extractMetadata(METADATA_KEY_VIDEO_ROTATION); 
       int rotation = metaRotation == null ? 0 : Integer.parseInt(metaRotation); 
       Log.i("Test", "Rotation = " + rotation); 
      } 

Wenn die Drehung 90 oder 270 ist, werden die Breite und Höhe transponiert.

Verwandte Themen