Возможно ли получить разрешение видео в Android? - PullRequest
16 голосов
/ 03 ноября 2011

Я ищу способ получить разрешение любого видео в Android. Он не должен работать с другими форматами, кроме поддерживаемых в Android, но было бы замечательно, если бы он работал. Если вы не уверены в поддерживаемых форматах в Android, обратитесь к этой странице:

http://developer.android.com/guide/appendix/media-formats.html

Я думаю, что можно делать то, что я хочу, используя класс MediaPlayer, но это кажется невероятно глупым и неэффективным. Кроме того, я бы хотел, чтобы это было относительно быстро.

Я нацеливаюсь на Android 3.0+, если это что-то меняет. Honeycomb также поддерживает файлы .mkv, хотя официально не поддерживается до Android 4.0.

Ответы [ 3 ]

46 голосов
/ 03 ноября 2011

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

MediaMetadataRetriever metaRetriever = new MediaMetadataRetriever();
metaRetriever.setDataSource(/* file descriptor or file path goes here */);
String height = metaRetriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_VIDEO_HEIGHT);
String width = metaRetriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_VIDEO_WIDTH);
3 голосов
/ 12 декабря 2014

Трюк для API 10 +:

MediaMetadataRetriever mRetriever = new MediaMetadataRetriever();
mRetriever.setDataSource("video_file_path");
Bitmap frame = mRetriever.getFrameAtTime();

int width = frame.getWidth();
int height = frame.getHeight();

Мы просто берем случайный кадр из нашего видео и определяем его ширину и высоту.

1 голос
/ 26 августа 2017

Если у вас есть URI видеоконтента, вы также можете использовать запрос поставщика контента

Как

    Cursor mediaCursor = getContentResolver().query(
                        videoContentURI,
                        {MediaStore.Video.Media.RESOLUTION}, null, null, null);
        if (mediaCursor != null) {
                    if (mediaCursor.moveToFirst()) {
        //The resolution of the video file, formatted as "XxY"
        String resolution=mediaCursor.getString(mediaCursor
                                  .getColumnIndex(MediaStore.Video.Media.RESOLUTION));
    }
}

Вы можете проверить следующий пост, чтобы получить ContentURI из видео Physical Path

...