Подтвердить что ты не робот

Можно ли получить разрешение видео на Android?

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

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

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

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

4b9b3361

Ответ 1

Вы можете использовать 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);

Ответ 2

Trick для API 10 +:

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

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

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

Ответ 3

Если у вас есть 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 с физического пути видео