Cómo determinar el ancho y la altura del video en Android

Tengo un archivo de video y quiero obtener el ancho y la altura del video. No quiero jugar, sólo para obtener el tamaño. He intentado usar MediaPlayer:

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

Pero devuelve 0 para el ancho y la altura, porque VideoSizeChangedEvent no se disparó todavía. ¿Cómo puedo obtener el ancho y la altura del video?

UPD: Necesito la versión de API 7

Intenta con este código y déjame saber si hay algún problema ..

 MediaMetadataRetriever retriever = new MediaMetadataRetriever(); Bitmap bmp = null; try { retriever.setDataSource("...location of your video file"); bmp = retriever.getFrameAtTime(); videoHeight=bmp.getHeight(); videoWidth=bmp.getWidth(); } 

Esto funciona en API de nivel 10 y superior:

 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(); 

Solución API de nivel 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(); } 

Esto funcionó para mí

 videoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { @Override public void onPrepared(final MediaPlayer mp) { int width = mp.getVideoWidth(); int height = mp.getVideoHeight(); } }); 
 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 }; 

Pruebe a consultar desde el proveedor de contenido del sistema. Retornará información útil de los Videos (archivos locales)

  • Cómo simular los botones de control de medios de hardware en un emulador de Android
  • Cómo rotar video * .mp4 en SurfaceView?
  • Android Media Grabación utilizando hilos
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.