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

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:

  1. 1920×1088
  2. 1920×1080
  3. 1808×1080
  4. ….
  5. 720×480
  6. 640 x 360
  7. 640×480
  8. 576×432
  9. Más
  10. 384×288
  11. 352 x 288
  12. 320 x 240
  13. 240 x 160
  14. 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.

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.