Grabar video con un tamaño de 480 * 480 px en android?
He construido un módulo similar a la grabación de video de la aplicación de la vid. Pero no soy capaz de hacer el tamaño del video a 480×480 px. Hay alguna forma de hacer eso. Gracias
- Cómo dibujar en una vista de vídeo en android?
- Cómo implementar el filtro de vídeo en Android como instagram
- Android: Cómo compartir vídeos en la página de Facebook con Facebook SDK
- OpenCV + Eclipse + Android: Error org.opencv.video Video.java
- Conversión de imagen a vídeo con efecto de transición
- Los vídeos de Youtube incrustados en la vista Web de Android no se reproducen en el formato SINGLE_COLUMN
- Android NDK. Cómo reproducir video.
- Decodificación de vídeo de Android Media Codec
- Reacciona el video Web de Android nativo
- Envío de imágenes y videos al servidor en android
- Android VideoView - Detecta el punto del tiempo en el video
- ¿Podemos volver a escribir la API de MediaCodec en C?
- El video de YouTube no se abre en webView
La cámara Android tiene una lista limitada de tamaños disponibles para la cámara. Así que tenemos que seleccionar el mejor tamaño de la cámara y seleccionar la sub imagen (480×480) de la imagen original de la cámara. Por ejemplo en mi HTC uno m8 tengo estos tamaños para la cámara:
- 1920×1088
- 1920×1080
- 1808×1080
- ….
- 720×480
- 640 x 360
- 640×480
- 576×432
- Más
- 384×288
- 352 x 288
- 320 x 240
- 240 x 160
- 176×144
Puede recuperar la lista de tamaño disponible mediante el método getSupportedPreviewSizes () .
public Camera mCamera;//Your camera instance public List<Camera.Size> cameraSizes; private final int CAMERA_IMAGE_WIDTH = 480; private final int CAMERA_IMAGE_HEIGHT = 480; ... cameraSizes = mCamera.getParameters().getSupportedPreviewSizes()
Después de eso, necesita encontrar el tamaño de cámara más adecuado y establecer el tamaño de vista previa para la cámara.
Camera.Size findBestCameraSize(int width, int height){ Camera.Size bestSize = cameraSizes.get(0); int minimalArea = bestSize.height * bestSize.width; for(int i = 1;i < cameraSizes.size();i++){ Camera.Size size = cameraSizes.get(i); int area = size.height * size.width; if(size.width < width || size.height < height){ continue; } if(area < minimalArea){ bestSize = size; minimalArea = area; } } return bestSize; } ... SurfaceHolder.Callback surfaceCallback = new SurfaceHolder.Callback() { public void surfaceCreated(SurfaceHolder holder) { //Do something } public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) { Camera.Parameters params = mCamera.getParameters(); Camera.Size size = findBestCameraSize(CAMERA_IMAGE_WIDTH, CAMERA_IMAGE_HEIGHT); params.setPreviewSize(size.width, size.height); camera.setParameters(params); if(mCamera != null){ mCamera.startPreview(); } } public void surfaceDestroyed(SurfaceHolder holder) { // Do something } };
Después de configurar el tamaño de la cámara, tenemos que obtener la imagen secundaria de bitmap de resultados, desde la cámara. Usted necesita poner este código donde usted recibe una imagen del mapa de bits (generalmente utilizo una biblioteca de OpenCV y las matrices para un mejor funcionamiento).
Bitmap imageFromCamera = //here ve receive image from camera. Camera.Size size = mCamera.getParameters().getPreviewSize(); int x = (size.width - CAMERA_IMAGE_WIDTH)/2; int y = (size.height - CAMERA_IMAGE_HEIGHT)/2; Bitmap resultBitmap = null; if(x < 0 || y < 0){ resultBitmap = imageFromCamera; }else{ resultBitmap = Bitmap.createBitmap(imageFromCamera, x, y, CAMERA_IMAGE_WIDTH, CAMERA_IMAGE_HEIGHT); }
La resolución de captura de vídeo para android se limita a las resoluciones nativas soportadas por la cámara.
Puede probar con una biblioteca de terceros para el procesamiento de vídeo post. Así puede recortar o volver a escalar el video capturado por la cámara.
Estoy usando este
Android-gpuimage-videorecording
Y funciona bastante bien.
- Android Studio: problema de firma tras la actualización
- ¿Cómo enviar un archivo grande o varios archivos a otras aplicaciones, y saber cuándo eliminarlas?