Проверьте, является ли файл 3gp аудио / видео в Android?

#android #file #kotlin #video #mime-types

#Android #файл #kotlin #Видео #mime-типы

Вопрос:

Я пытаюсь получить mimetype видеофайлов, используя приведенный ниже код.

Проблема: у меня есть файл, сохраненный как аудио, но его тип mimetype — video / 3gpp, и он также воспроизводится как аудио.. Как определить такой файл, который является аудио, но mimetype — это video / 3gpp в деталях, чтобы я мог исключить его из списка.

 fun getFileMimeType(url: String): String {

        var type: String = ""

        try {
            if (url.lastIndexOf(".") != -1) {
                val ext: String = url.substring(url.lastIndexOf(".")   1)
                val mime = MimeTypeMap.getSingleton()
                type = mime.getMimeTypeFromExtension(ext)!!
            }

        } catch (e: Exception) {
        }

        return type

    }
  

Ответ №1:

Предполагая, что это локальный файл, вы можете использовать MediaMetadataRetriever для получения информации метаданных о медиафайле.

В частности, вы можете проверить, установлено ли значение METADATA_KEY_HAS_VIDEO в true.

Пример в Kotlin:

         val metadataRetriever = MediaMetadataRetriever()
        metadataRetriever.setDataSource(context, Uri.fromFile(your3GPPFile))

        val hasVideoKey = metadataRetriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_HAS_VIDEO)
        if (hasVideoKey == "yes") {
          //Include in your list or do whatever work 
          //you need here
        }
        
  

Вы также можете использовать ExoPlayer и загрузить файл, а затем получить список дорожек с помощью

player.getCurrentTrackGroups()

Это вернет массив дорожек, которые вы можете перебирать и анализировать формат, чтобы проверить, содержат ли они видеодорожку.

Комментарии:

1. Большое вам спасибо. Решена проблема с помощью MediaMetadataRetriever

2. Это идеально. Мне это было нужно как запасной вариант для форматов контейнеров, таких как 3gpp, которые всегда возвращают video / 3gpp, даже если файл содержит только звуковую дорожку.