Как определить ширину и высоту видео на Android - PullRequest
16 голосов
/ 31 января 2012

У меня есть видеофайл, и я хочу получить ширину и высоту видео. Я не хочу играть в нее, просто чтобы получить размер. Я пытался использовать MediaPlayer:

MediaPlayer mp = new MediaPlayer();
mp.setDataSource(uriString);
mp.prepare();
int width = mp.getVideoWidth();
int height = mp.getVideoHeight();

, но возвращает 0 для ширины и высоты, потому что VideoSizeChangedEvent еще не сработало. Как узнать ширину и высоту видео?

UPD: мне нужна версия API 7

Ответы [ 6 ]

24 голосов
/ 29 июля 2015

Работает на уровне API 10 и выше:

MediaMetadataRetriever retriever = new MediaMetadataRetriever();
retriever.setDataSource("/path/to/video.mp4");
int width = Integer.valueOf(retriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_VIDEO_WIDTH));
int height = Integer.valueOf(retriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_VIDEO_HEIGHT));
retriever.release();
18 голосов
/ 31 января 2012

попробуйте с этим кодом и дайте мне знать, если какие-либо проблемы ..

MediaMetadataRetriever retriever = new  MediaMetadataRetriever();
Bitmap bmp = null;      

try 
{
    retriever.setDataSource("...location of your video file");
    bmp = retriever.getFrameAtTime();
    videoHeight=bmp.getHeight();
    videoWidth=bmp.getWidth();
}
10 голосов
/ 19 декабря 2015

Это сработало для меня

videoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
            @Override
            public void onPrepared(final MediaPlayer mp) {
                int width = mp.getVideoWidth();
                int height = mp.getVideoHeight();
            }
        });
7 голосов
/ 18 октября 2012

Решение уровня API 7:

// get video dimensions
MediaPlayer mp = new MediaPlayer();
        try {
            mp.setDataSource(filename);
            mp.prepare();
            mp.setOnVideoSizeChangedListener(new OnVideoSizeChangedListener() {
                @Override
                public void onVideoSizeChanged(MediaPlayer mp, int width, int height) {

                    int orient = -1;

                    if(width < height)
                        orient = 1;
                    else
                        orient = 0;

                }
            });
        } catch (IllegalArgumentException e) {
            e.printStackTrace();
        } catch (SecurityException e) {
            e.printStackTrace();
        } catch (IllegalStateException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
0 голосов
/ 01 марта 2018

Это набор утилит для работы с абстракцией размера в Android.

Содержит класс SizeFromVideoFile.java Вы можете использовать это так:

ISize size = new SizeFromVideoFile(videoFilePath);
size.width();
size.hight();
0 голосов
/ 31 января 2012
private static final Uri MOVIE_URI = MediaStore.Video.Media.EXTERNAL_CONTENT_URI;
private static final String[] MOVIE_PJT = new String[] {
        MediaStore.Video.Media._ID, MediaStore.Video.Media.DATA,
        MediaStore.Video.Media.TITLE, MediaStore.Video.Media.DATE_TAKEN,
        MediaStore.Video.Media.MIME_TYPE, MediaStore.Video.Media.DURATION,
        MediaStore.Video.Media.SIZE, MediaStore.Video.Media.RESOLUTION };

попробуйте выполнить запрос к системному поставщику контента. Он вернет некоторую полезную информацию о видео (локальные файлы)

...