MediaRecorder setVideoSize muestra un comportamiento diferente en diferentes dispositivos
Estoy usando un grabador de medios para grabar vídeo en una aplicación para Android.
mMediaRecorder.setCamera(mServiceCamera); mMediaRecorder.setAudioSource(MediaRecorder.AudioSource.DEFAULT); mMediaRecorder.setVideoSource(MediaRecorder.VideoSource.DEFAULT); mMediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.DEFAULT); //mMediaRecorder.setVideoSize(mPreviewSize.width, mPreviewSize.height); mMediaRecorder.setVideoFrameRate(30); mMediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.DEFAULT); mMediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT); String file_name = Environment.getExternalStorageDirectory().getPath() +"/myVideo.mp4"; mMediaRecorder.setOutputFile(file_name); mMediaRecorder.setPreviewDisplay(mSurfaceHolder.getSurface()); mMediaRecorder.prepare(); mMediaRecorder.start();
El problema está en la línea
- Android MediaRecorder produce video corrupto con líneas verdes
- MediaRecorder.start () lanzando IllegalStateException
- MediaRecorder.stop () se cuelga en la cámara Samsung Galaxy
- MediaRecorder.stop () colgando con Android 4.0 (ICS)
- Error de inicio del error mediarecording de Android -19 runTimeException
mMediaRecorder.setVideoSize(mPreviewSize.width, mPreviewSize.height);
En HTC y Xperia, setVideoSize funciona bien (Funcionará sólo si no comentar esta línea). Pero en Nexus y Note, setVideoSize no funcionará (Funcionará sólo si comento esta línea).
¿Qué debo hacer para que la aplicación se ejecute correctamente en todos estos dispositivos?
- Grabe vídeo con un tamaño de vista previa diferente al del archivo de vídeo resultante
- Dividir y combinar / grabar audio grabado
- Android: combina dos archivos MP4
- ¿Cómo activar la vibración en la entrada de sonido?
- ¿Por qué `` OnInfoListener` de MediaRecorder no se llama en código inferior cuando se alcanza el tamaño máximo de archivo
- Cómo imprimir los mensajes de registro con el marco de Android
- Android MediaRecorder stop () no se llama
- Error en MediaRecorder.stop (): -1007
Usted necesita entender que la vista previa y el video capturado real son dos cosas diferentes, asimismo los tamaños de vista previa y los tamaños de vídeo son dos parámetros diferentes. Lo que ves en el visor es esencialmente la vista previa, pero no es lo que realmente se graba.
-
Al iniciar una cámara, establece el tamaño de vista previa en la cámara. Pero debe consultar los tamaños de vista previa compatibles y debe establecer uno entre ellos.
Cámara cámara = cámara.open (); Lista psizes = camera.getParameters () .getSupportedPreviewSizes ();
-
Una vez que haya configurado la vista previa, puede iniciar la grabación utilizando un MediaRecorder, y el tamaño del vídeo se puede configurar en la grabadora de medios, y es el tamaño real del vídeo que se capturará. De nuevo, debe establecer uno de los tamaños de vídeo compatibles.
Tamaño de la lista = camera.getParameters () .getSupportedVideoSizes ();
Y luego, puede configurar uno de estos para el grabador de medios
mediaRecorder.setVideoSize(videoWidth, videoHeight);
Por lo tanto, recuerde comprobar siempre los tamaños admitidos, de lo contrario usted está obligado a obtener una caída de la aplicación.
Los tamaños de vídeo en un dispositivo son iguales a los tamaños de vista previa. Primero debe comprobar si el tamaño del video está disponible o no. Los tamaños de video en diferentes dispositivos pueden ser diffrent.so, compruebe primero los tamaños de vista previa disponibles usando getSupportedPreviewSizes () y luego configure el tamaño del video. Esto devolverá una lista. Sólo tendrá que seleccionar una de ellas.
- La barra de direcciones del navegador Mobile Webkit cambia $ (ventana) .height (); Haciendo el fondo-tamaño: la cubierta rescale cada vez
- Google Analytics v4: los datos no aparecen en el panel de control