Как определить, является ли файл .3gp аудио или видео в Android - PullRequest
3 голосов
/ 27 октября 2011

У меня есть приложение, которое позволяет пользователю импортировать медиа (видео, фото, аудио), которые затем будут управляться приложением (в качестве доказательства). Я обнаружил, что некоторые приложения для записи звука будут сохранять аудио в формате .3gp (в частности, мессенджер Whats App). Если я получаю MIME-тип, используя следующий код:

MimeTypeMap.getSingleton().getMimeTypeFromExtension(fileExtension);

он вернется как video / 3gp, что означает, что мое приложение означает, что оно относится к типу "video" и пытается создавать миниатюры, а что нет (я использую первую часть mime-типа, чтобы определить, к какому типу относится мое приложение это так же как). Однако это аудио, поэтому некоторые вещи, которые я ожидаю работать, не будут работать (например, создание эскиза для видео). Есть ли какие-либо библиотеки или что-нибудь доступное для Android, что позволило бы мне определить, является ли файл только видео аудио? Я полагаю, что я могу попытаться сделать миниатюру, и если это не удастся, предположим, что файл является аудио, но это немного растянуто, учитывая, что при создании миниатюры может возникнуть ряд проблем. Есть идеи?

Ответы [ 4 ]

3 голосов
/ 27 октября 2011

METADATA_KEY_HAS_VIDEO

Если этот ключ существует, носитель содержит видео.

2 голосов
/ 28 октября 2011

Я нашел способ сделать это:

public static boolean is3gpFileVideo(File mediaFile) { 
        int height = 0;
        try {
            MediaPlayer mp = new MediaPlayer();
            FileInputStream fs;
            FileDescriptor fd;
            fs = new FileInputStream(mediaFile);
            fd = fs.getFD();
            mp.setDataSource(fd);
            mp.prepare(); 
            height = mp.getVideoHeight();
            mp.release();
        } catch (Exception e) {
            Log.e(TAG, "Exception trying to determine if 3gp file is video.", e);
        }
        return height > 0;
    }

Итак, чтобы выяснить, есть ли в медиафайле видео, вы можете использовать это .. Вероятно, не самый эффективный способ сделать это, но для чего-то сделанногоредко в вашем приложении это кажется разумным решением.

1 голос
/ 10 декабря 2013

Я не тестировал это решение, но вы можете попробовать получить миниатюру для видео.

Bitmap thumbnail = ThumbnailUtils.createVideoThumbnail(videoPath,
            MediaStore.Images.Thumbnails.MINI_KIND);

Если thumbnail равно null, то это аудио, в противном случае это видео.

0 голосов
/ 24 апреля 2014

Я протестировал решение Алессандро Роаро, и оно работает для меня.В настоящее время я использую его в своем приложении.

Я цитирую:

Я не тестировал это решение, но вы можете попытаться получить эскиз для видео.Если миниатюра пуста, то это аудио, в противном случае это видео.

Bitmap thumbnail = ThumbnailUtils.createVideoThumbnail(videoPath,
MediaStore.Images.Thumbnails.MINI_KIND);
...