¿Dónde está la resolución de vídeo almacenada en android?

Estoy automatizando una de las aplicaciones de vídeo en android. Para hacerlo, necesito ajustar la resolución de vídeo a la más alta.

Sé que en cámara normal, puedo establecer los valores en

/data/data/com.android.gallery3d/shared_prefs/com.android.gallery3d_preferences_0.xml 

Pero los valores que establezco allí sólo se establecen para la cámara no para el vídeo. ¿Alguna idea de dónde se almacenan los valores de resolución de vídeo?

Si hay cualquier comando ADb para almacenar la resolución de codificación de vídeo, entonces sería aún mejor.

A continuación se muestra el comando adb que usé pero no parece funcionar:

  adb shell am start -a android.media.action.VIDEO_CAPTURE --ei android.intent.extras.CAMERA_FACING 1 --ei android.intent.extras.EXTRA_VIDEO_QUALITY 1 -n com.android.gallery3d/com.android.camera.CameraActivity 

También he encontrado recientemente que

  /data/data/com.android.gallery3d/shared_prefs/com.android.gallery3d_preferences_0.xml 

File contiene el valor de la resolución más alta y el nombre de la clave es: "pref_video_quality_key", pero de alguna manera, sólo restablece el valor de la cámara y no hace el valor de la cámara frontal

Usted no tiene que buscar eso, pero pide el sistema.

Cada dispositivo tiene una especie de resoluciones compatibles. Puede seleccionar el mejor tamaño disponible para sus necesidades:

¿Qué hacer?

Paso 1.

Usted tiene que comprobar para los tamaños apoyados. Puedes hacerlo con

 Camera.Parameters p = myCamera.getParameters(); List<Size> previewsizes = p.getSupportedPreviewSizes(); List<Size> videosizes = p.getSupportedVideoSizes(); 

Y luego, puede elegir uno. Si desea automatizar esto, puede ir más lejos y seguir las

Paso 2

Escriba una función para seleccionar el mejor tamaño disponible, que recibirá los tamaños admitidos y el tamaño deseado. Yo puede obtener el tamaño cuya relación es más cercana a la deseada, y si ninguno es lo suficientemente bueno, se obtiene el que la altura se cierra a la deseada, o puede obtener sólo el mayor algo como:

 public static final int BEST_RATIO=0; public static final int IMPORTANT_HEIGHT=2; public static final int IMPORTANT_WIDTH=1; public static final int BIGGEST=3; private Size getOptimalPreviewSize(List<Size> sizes, int w, int h, int mode) { final double ASPECT_TOLERANCE = 0.2; double targetRatio = (double) w / h; if (sizes == null) return null; Size optimalSize = null; double minDiff = Double.MAX_VALUE; int targetHeight = h; if (mode==BEST_RATIO) { for (Size size : sizes) { Log.d("Camera", "Checking size " + size.width + "w " + size.height + "h"); double ratio = (double) size.width / size.height; if (Math.abs(ratio - targetRatio) > ASPECT_TOLERANCE) continue; if (Math.abs(size.height - targetHeight) < minDiff) { optimalSize = size; minDiff = Math.abs(size.height - targetHeight); } } } if (mode= IMPORTANT_HEIGHT) { //you can do other for width minDiff = Double.MAX_VALUE; for (Size size : sizes) { if (Math.abs(size.height - targetHeight) < minDiff) { optimalSize = size; minDiff = Math.abs(size.height - targetHeight); } } } if (mode=IMPORTANT_WIDTH) { //you can do other for width minDiff = Double.MAX_VALUE; for (Size size : sizes) { if (Math.abs(size.Width - targetWidth) < minDiff) { optimalSize = size; minDiff = Math.abs(size.Width - targetWidth); } } } else { minDiff = 0; for (Size size : sizes) { if ( size.height * size.width > minDiff ) { optimalSize = size; minDiff = size.height * size.width ; } } } return optimalSize; } 

Y el último paso, establecer los parámetros

Paso 3

 private int desiredwidth=640, desiredheight=360; Size optimalPreviewSize = getOptimalPreviewSize(previewsizes, desiredwidth, desiredheight,BIGGEST); Size optimalVideoSize = getOptimalPreviewSize(videosizes, desiredwidth, desiredheight,BIGGEST); p.setPreviewSize(optimalPreviewSSize.width, optimalPreviewSSize.height); CamcorderProfile profile = CamcorderProfile.get(cameraid, CamcorderProfile.QUALITY_LOW); profile.videoFrameHeight= optimalVideoSize.height; profile.videoFrameWidth=optimalVideoSize.with; mCamera.unlock(); mMediaRecorder.setCamera(mCamera); mMediaRecorder = new MediaRecorder(); mMediaRecorder.setVideoSize(optimalVideoSize.width, optimalVideoSize.height); myCamera.setParameters(p); 
  • Android La función takePicture de la cámara no llama a la función de devolución de llamada
  • ¿Cómo comprobar si el dispositivo tiene cámaras frontales y traseras?
  • Android Cámara de grabación de vídeo, pero juega al revés
  • ¿Cómo acceder a la cámara mediante Bluetooth?
  • Emulador de la cámara incorporada en la aplicación buggy en Froyo / 2.2?
  • Android Fatal señal 11 (SIGSEGV) en 0x00000040 (código = 1) Error
  • Conversión de YUV a RGB por fragment shader
  • SetParameters () falla a pesar de configurar el tamaño de vista previa
  • ¿Hay alguna forma de almacenar la imagen a tamaño completo devuelta de la actividad de la cámara en la memoria interna?
  • Cámara Android centrada sólo una vez
  • ¿Cómo mostrar la vista previa de 2 cámaras una al lado de la otra?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.