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?
- Subir archivos no funciona con TransferUtility Amazon S3 en Android
- Servicio de Android que controla MediaPlayer
- SurfaceView en blanco al reproducir vídeo usinng mediaplayer
- Phonegap Media API - Grabar y reproducir audio - Android
- Cómo crear ecualizador para android
UPD: Necesito la versión de API 7
- ¿Cómo ejecutar los comandos ffmpeg de línea de comandos en el android?
- Android: muestra el micrófono sin grabación para obtener la amplitud / nivel en vivo?
- Cómo guardar imágenes de la cámara en Android a la carpeta específica?
- ¿Oiga el cambio de volumen?
- Android - Transmisión adaptativa de velocidad de bits. (HLS) Calidad del flujo
- Cómo evitar un retraso de 15 segundos / caché en Android Media Player al reproducir la secuencia
- SetVideoSurfaceTexture ha fallado: -22 en mediaplayer
- Consultas de medios fallan en el navegador de Android
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 crear una carpeta de imágenes de aplicaciones para mostrarla en la galería de Android
- ¿Cuáles son los límites máximos de memoria por aplicación para Android 2.2?