2017-09-05 3 views
2

Ich verwendete this Antwort, um die Dauer zu erhalten, aber es funktioniert nicht für mich.Kann mir jemand sagen, was ist das Problem?Wie erhält man die Dauer eines Videos aus MediaStore?

Jede Hilfe wird geschätzt.

Uri uri = MediaStore.Video.Media.EXTERNAL_CONTENT_URI; 
      String[] columns = {MediaStore.Video.VideoColumns.DURATION}; 
      String selection = MediaStore.Video.VideoColumns.DATA + "=?"; 
      String selectionArgs[] = {"/data/data/com.test.test/files/video1.mp4"}; 
      Cursor cursor = context.getContentResolver().query(uri, columns, selection, selectionArgs, null); 
      if (cursor != null) { 
       if (cursor.moveToFirst()) { 
        String duration = cursor.getString(cursor.getColumnIndex(MediaStore.Video.VideoColumns.DURATION)); 
       } 
       cursor.close(); 
      } 
+1

Entweder das Video ist nicht in der Datenbank oder aus irgendeinem Grunde nicht mit der DATA-Spalte nicht genau Ihren Weg entspricht. Um herauszufinden, was vor sich geht, schlage ich vor, dass Sie versuchen, alle Einträge im 'MediaStore.Video.Media.EXTERNAL_CONTENT_URI' zu erhalten, indem Sie Ihre Auswahl und AuswahlArgs entfernen. Sie könnten Ihre Spalten so ändern, dass sie die DATA-Spalte und möglicherweise die ID enthalten, und DatabaseUtils.dumpCursor verwenden, um den Inhalt in logcat zu schreiben. – cwbowron

+0

@cwbowron thx für Hilfe. –

Antwort

1

Die Mediastore ist ein Medienanbieter, der für alle verfügbaren Medien auf interne und externe Speicherung von Metadaten enthält devices.I bin nicht sicher, aber der Weg, den Sie vielleicht verwenden nicht sichtbar für MediaStore.If Sie Mediaplayer verwenden tut so ...

MediaPlayer mp = MediaPlayer.create(this, Uri.parse(uriOfYourFile)); 
int duration = mp.getDuration(); 
0

Wenn Sie bereits die Uri oder den Dateipfad zu dem Video bekommen, könnte es einfacher sein, die MediaMetadataRetriever Klasse zu verwenden. Es würde wie folgt aussehen:

MediaMetadataRetriever r = new MediaMetadataRetriever(); 
r.setDataSource(filePath); 
String durString = r.extractMetadata(MediaMetadataRetriever.METADATA_KEY_DURATION); 
int duration = Integer.parseInt(durString); 
+0

Thx für die Antwort, aber ich muss es wirklich so bekommen. –

Verwandte Themen