2011-03-23 9 views
6

Intento grabar video usando MediaRecorder Class.Cómo cambiar la velocidad de fotogramas cuando se usa MediaRecorder Class

Sin embargo, descubro que no pude reducir la velocidad de fotogramas de la transmisión de video.

Estoy usando H.264 como mi codificador de video y AAC como mi codificador de audio (sí, es compatible con API NIVEL 10 y superior, AKA Android 2.3.3+) La fuente principal es la siguiente.

recorder = new MediaRecorder(); 
recorder.setPreviewDisplay(surfaceHolder.getSurface()); 
recorder.setVideoSource(MediaRecorder.VideoSource.CAMERA); 
recorder.setAudioSource(MediaRecorder.AudioSource.MIC); 
//set the Output Format 
recorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4); 
//set the Video Size 
recorder.setVideoSize(176,144); 
//set the Frame rate 
recorder.setVideoFrameRate(15); 

//Set the Video Encoder 
recorder.setVideoEncoder(MediaRecorder.VideoEncoder.H264); 
//Set the Audio Encoder 
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);   
recorder.setOutputFile(myRecAudioFile.getAbsolutePath()); 
recorder.prepare(); 
recorder.start(); 

Sin embargo, me dieron la información de depuración que:

03-22 22:39:41.120: WARN/StagefrightRecorder(662): Intended video encoding frame rate (15 fps) is too small and will be set to (27 fps) 

suficiente como para que yo también tengo un mensaje de error que extraño:

03-22 22:39:41.380: ERROR/VENC_ENC(662): Bitrate 192000 

Al final, tengo un archivo MP4 cuya la velocidad de fotogramas es de casi 28 fps.


También probé a usar el CamcorderProfile más bajo que es

recorder = new MediaRecorder(); 
recorder.setPreviewDisplay(surfaceHolder.getSurface()); 
recorder.setVideoSource(MediaRecorder.VideoSource.CAMERA); 
recorder.setAudioSource(MediaRecorder.AudioSource.MIC); 

//replacement 
CamcorderProfile cpLow = CamcorderProfile.get(CamcorderProfile.QUALITY_LOW); 
recorder.setProfile(cpLow); 

recorder.setOutputFile(myRecAudioFile.getAbsolutePath()); 
recorder.prepare(); 
recorder.start(); 

y comentar la configuración detallada de la grabadora.

Como el libro Pro Android Media se dice que obtendría el archivo de video con 15 fps. Sin embargo, una vez más obtuve un archivo de video con aproximadamente 27 fps.


Entonces, ¿cómo bajar la velocidad de fotogramas de un vídeo? Estoy construyendo un sistema en vivo, por lo que la baja tasa de bits llegó a ser bastante importante para mí. ¡Gracias por su tiempo!

Respuesta

6

Acabo de toparme con esto también. De los documentos (en negrita):

En algunos dispositivos que tienen velocidad de fotogramas automática, esto establece la velocidad de fotogramas máxima, no una velocidad de fotogramas constante. La velocidad de fotogramas real variará según las condiciones de iluminación.

Parece que no se puede controlar realmente la velocidad de cuadros. El número que estableces se usa como una pista.

+1

Sí, tienes razón. Tengo esa línea audaz también. La velocidad de fotogramas real depende del dispositivo determinado (hardware) y la versión del sistema operativo. Parecía que HTC Desire tiene un FPS más alto que el HTC Desire z. Además, Android 2.2.1 tiene un mejor método de control de velocidad de fotogramas que Android 2.3.3. –

Cuestiones relacionadas