2010-11-22 30 views
2

En essayant de créer une application qui essaie de faire la mise au point automatique de la caméra avant de commencer l'enregistrement vidéo. Directement en utilisant MediaRecorder ne fait pas la mise au point automatique de l'appareil photo. Pour cela, j'utilise Camera et en utilisant le rappel, je peux l'autofocus. Mais fournir cette instance au MediaRecorder me pose beaucoup de problèmes. Voici le code im en utilisant pour l'enregistrementProblème avec l'enregistrement vidéo après mise au point automatique dans Android

public boolean startRecording() 
{ 
    try 
    { 
     mCamera.unlock(); 

     mediaRecorder = new MediaRecorder(); 
     mediaRecorder.setCamera(mCamera); 

     mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC); 
     mediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA); 

     CamcorderProfile profile = CamcorderProfile 
       .get(CamcorderProfile.QUALITY_LOW); 
     mediaRecorder.setProfile(profile); 

     mediaRecorder.setMaxDuration(maxDurationInMs); 

     File file = new File(outputFile); 
     if (file.exists()) 
      file.delete(); 
     file = new File(outputFile); 

     try 
     { 
      file.createNewFile(); 
     } 
     catch (IOException e1) 
     { 
      // TODO Auto-generated catch block 
      e1.printStackTrace(); 
      Log.e("Deepak", "*** first catch ***"); 
     } 


     mediaRecorder.setOutputFile(outputFile); 
     mediaRecorder.setPreviewDisplay(mHolder.getSurface()); 

     mediaRecorder.setMaxFileSize(maxFileSizeInBytes); 

     mediaRecorder.prepare(); 
     mediaRecorder.start(); 

     return true; 
    } 
    catch (IllegalStateException e) 
    { 
     Log.e(TAG, e.getMessage()); 
     e.printStackTrace(); 
     return false; 
    } 
    catch (IOException e) 
    { 
     Log.e(TAG, e.getMessage()); 
     e.printStackTrace(); 
     return false; 
    } 
} 

Les attributs de l'appareil photo sont les suivantes:

Camera.Parameters parameters = mCamera.getParameters(); 
    List<Size> sizeList = parameters.getSupportedPreviewSizes(); 
    parameters.setPreviewFormat(ImageFormat.JPEG); 
    parameters 
      .setPreviewSize(sizeList.get(0).width, sizeList.get(0).height); 
    mCamera.setParameters(parameters); 
    mCamera.startPreview(); 

Tout cela me donne le message d'erreur suivant:

11-22 16:51:25.314: DEBUG/Preview(4052): !!!!!!!!!!111Starting recording!!!!!!!!!!!!!! 
11-22 16:51:25.334: ERROR/audio_input(59): unsupported parameter: x-pvmf/media-input-node/cap-config-interface;valtype=key_specific_value 
11-22 16:51:25.334: ERROR/audio_input(59): VerifyAndSetParameter failed 
11-22 16:51:25.334: ERROR/CameraInput(59): Unsupported parameter(x-pvmf/media-input-node/cap-config-interface;valtype=key_specific_value) 
11-22 16:51:25.334: ERROR/CameraInput(59): VerifiyAndSetParameter failed on parameter #0 
11-22 16:51:25.344: DEBUG/AuthorDriver(59): setParamVideoEncodingBitrate() 256000 
11-22 16:51:25.384: INFO/MediaRecorderJNI(4052): prepare: surface=0x222968 (id=1) 
11-22 16:51:25.394: ERROR/PVOMXEncNode(59): PVMFOMXEncNode-Video_M4V::DoPrepare(): Got Component OMX.qcom.video.encoder.mpeg4 handle 
11-22 16:51:25.394: WARN/CameraInput(59): refCount 0 
11-22 16:51:25.394: ERROR/VENC_ENC(59): VENC_ERROR update_param_port_def::1643 Frame rate is for input port (refer to OMX IL spec) 
11-22 16:51:25.394: ERROR/VENC_ENC(59): VENC_ERROR get_parameter::952 unsupported index 0x700000b 
11-22 16:51:25.394: ERROR/VENC_ENC(59): VENC_ERROR set_parameter::2720 unsupported index 0x700000b 
11-22 16:51:25.394: ERROR/VENC_ENC(59): VENC_ERROR translate_profile::1015 unsupported profile 
11-22 16:51:25.394: ERROR/VENC_ENC(59): Bitrate 256000 
11-22 16:51:25.394: ERROR/VENC_ENC(59): VENC_ERROR get_parameter::952 unsupported index 0x6000005 
11-22 16:51:25.394: ERROR/VENC_ENC(59): VENC_ERROR set_parameter::2720 unsupported index 0x6000005 
11-22 16:51:25.394: ERROR/PVOMXEncNode(59): PVMFOMXEncNode-Audio_AMRNB::DoPrepare(): Got Component OMX.PV.amrencnb handle 
11-22 16:51:25.394: DEBUG/CameraInput(59): Intended mFrameWidth=176, mFrameHeight=144 
11-22 16:51:25.404: DEBUG/CameraInput(59): Actual mFrameWidth=176, mFrameHeight=144 
11-22 16:51:25.404: ERROR/VENC_ENC(59): VENC_ERROR ven_translate_config::428 Invalid mp4 configuration 
11-22 16:51:25.424: INFO/AudioHardwareQSD(59): Routing audio to Speakerphone 
11-22 16:51:25.424: DEBUG/AudioHardwareQSD(59): Switching audio device to 
11-22 16:51:25.424: DEBUG/AudioHardwareQSD(59): Speakerphone 
11-22 16:51:25.454: ERROR/CameraInput(59): Recording is not ready (iPeer 0x3bc14 iState 2 iWriteState 1 iClockState 0), frame dropped 
11-22 16:51:25.494: ERROR/CameraInput(59): Recording is not ready (iPeer 0x3bc14 iState 2 iWriteState 1 iClockState 0), frame dropped 
11-22 16:51:25.534: ERROR/CameraInput(59): Recording is not ready (iPeer 0x3bc14 iState 2 iWriteState 1 iClockState 0), frame dropped 
11-22 16:51:25.554: INFO/AudioHardwareQSD(59): AudioHardware PCM record is going to standby. 
11-22 16:51:25.554: INFO/AudioHardwareQSD(59): Routing audio to Speakerphone 
11-22 16:51:25.564: INFO/AudioHardwareQSD(59): do input routing device 800000 
11-22 16:51:25.564: INFO/AudioHardwareQSD(59): Routing audio to Speakerphone with back mic 
11-22 16:51:25.564: ERROR/CameraInput(59): Recording is not ready (iPeer 0x3bc14 iState 2 iWriteState 1 iClockState 0), frame dropped 
11-22 16:51:25.574: WARN/AudioFlinger(59): write blocked for 143 msecs, 52 delayed writes, thread 0xd7a8 
11-22 16:51:25.604: ERROR/CameraInput(59): Recording is not ready (iPeer 0x3bc14 iState 2 iWriteState 1 iClockState 0), frame dropped 
11-22 16:51:25.644: ERROR/CameraInput(59): Recording is not ready (iPeer 0x3bc14 iState 2 iWriteState 1 iClockState 0), frame dropped 
11-22 16:51:25.684: ERROR/CameraInput(59): Recording is not ready (iPeer 0x3bc14 iState 2 iWriteState 1 iClockState 0), frame dropped 
11-22 16:51:25.754: DEBUG/AudioHardwareQSD(59): Switching audio device to 
11-22 16:51:25.754: DEBUG/AudioHardwareQSD(59): Speakerphone 
11-22 16:51:25.764: ERROR/CameraInput(59): Recording is not ready (iPeer 0x3bc14 iState 2 iWriteState 1 iClockState 0), frame dropped 
11-22 16:51:25.814: ERROR/CameraInput(59): Recording is not ready (iPeer 0x3bc14 iState 2 iWriteState 1 iClockState 0), frame dropped 
11-22 16:51:25.844: ERROR/CameraInput(59): Recording is not ready (iPeer 0x3bc14 iState 2 iWriteState 1 iClockState 0), frame dropped 
11-22 16:51:25.884: ERROR/CameraInput(59): Recording is not ready (iPeer 0x3bc14 iState 2 iWriteState 1 iClockState 0), frame dropped 
11-22 16:51:25.924: ERROR/CameraInput(59): Recording is not ready (iPeer 0x3bc14 iState 2 iWriteState 1 iClockState 0), frame dropped 
11-22 16:51:25.964: ERROR/CameraInput(59): Recording is not ready (iPeer 0x3bc14 iState 2 iWriteState 1 iClockState 0), frame dropped 
11-22 16:51:26.004: ERROR/CameraInput(59): Recording is not ready (iPeer 0x3bc14 iState 2 iWriteState 1 iClockState 0), frame dropped 
11-22 16:51:26.044: ERROR/CameraInput(59): Recording is not ready (iPeer 0x3bc14 iState 2 iWriteState 1 iClockState 0), frame dropped 
11-22 16:51:28.824: INFO/AudioHardwareQSD(59): AudioHardware pcm playback is going to standby. 
11-22 16:51:31.324: DEBUG/Preview(4052): !!!!!!!!!!Stoping recording!!!!!!!!!!!!!! 

Cela crée un fichier sur l'emplacement spécifié qui est totalement obscurci, juste un tas de lignes horizontales vertes.

Toutes les autorisations sont placées. En utilisant Android 2.2. Essayé le code exact que this mais se est similaire VENC_ERROR

Répondre

12

Vous devez arrêter l'aperçu avant déverrouiller la caméra

mCamera.stopPreview(); 

mCamera.unlock(); 
+0

Merci! Cela a fonctionné pour moi sur le HTC Desire mais malheureusement pas sur le Samsung S2. – darrenp

+0

Correction d'un problème vidéo vert brouillé sur S4 qui ne se produisait pas sur S3 de Nexus 5. – dzeikei

+0

Merci beaucoup! Correction d'un problème de corruption vidéo sur Motorola Defy. –