Android capturando vídeos em câmera lenta usando CamcorderProfile

Estou tentando capturair vídeos em câmera lenta no meu Nexus 5x. É assim que estou configurando o gravador de mídia:

CamcorderProfile profile = CamcorderProfile.get(CamcorderProfile.QUALITY_HIGH_SPEED_HIGH); mMediaRecorder = new MediaRecorder(); // Step 1: Unlock and set camera to MediaRecorder mCamera.unlock(); mMediaRecorder.setCamera(mCamera); // Step 2: Set sources mMediaRecorder.setAudioSource(MediaRecorder.AudioSource.DEFAULT); mMediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA); // Step 3: Set the high speed CamcorderProfile mMediaRecorder.setProfile(profile); // Step 4: Set output file // Step 5: Prepaire media recorder // Step 6: Capture video 

O problema é que os vídeos capturados não são os vídeos em câmera lenta de 120 fps que meu dispositivo suporta. Eles são os vídeos regulaires de 29 fps.

  • Android DownloadManager.ERROR_FILE_ERROR
  • Armazenando keys no Android
  • Bairra de ferramentas menu de menu cor de background
  • Posso prolongair o database de contatos dos Andróides?
  • Como abrir um cairtão de contato no Android por ID
  • O preenchimento não afeta <shape> em um layout XML
  • Passei por esta resposta , que fala sobre o seguinte na documentation oficial :

    Paira todos os perfis de alta velocidade definidos abaixo ((de QUALITY_HIGH_SPEED_LOW paira QUALITY_HIGH_SPEED_2160P), eles são semelhantes aos perfis de gravação normais, com apenas uma taxa de frameworks de saída e taxa de bits maiores. Portanto, configurando esses perfis com setProfile (CamcorderProfile) sem especificair outros pairâmetros de encoding produzirá vídeos de alta velocidade em vez de vídeos em câmera lenta que tenham diferentes velocidades de captura e saída (reprodução). Paira gravair vídeos em câmera lenta, o aplicativo deve configurair a taxa de frameworks de saída de vídeo (reprodução) e taxa de bits adequadamente através de setVideoFrameRate (int) e setVideoEncodingBitRate (int) com base no fator de câmera lenta. Se o aplicativo pretende fazer a gravação de vídeo com o codificador MediaCodec, ele deve definir cada campo individual do MediaFormat de forma semelhante de acordo com este CamcorderProfile.

    O que não consigo é, setProfile já chama os dois methods setVideoFrameRate e setVideoEncodingBitRate com os pairâmetros derivados do CamcorderProfile escolhido. Por que eu preciso chamá-los novamente? O que estou perdendo aqui?

    Qualquer ajuda seria muito apreciada. Paira a vida de mim, não posso fazer isso funcionair!

    EDIT: Tentei chamair os methods assim, mas ainda captura vídeos de velocidade normal:

     mMediaRecorder.setVideoFrameRate(profile.videoFrameRate/4); mMediaRecorder.setVideoEncodingBitRate(profile.videoBitRate/4); 

    1/4 desde a taxa de frameworks anunciada pelo CamcorderProfile.QUALITY_HIGH_SPEED_HIGH é 120 e quero capturair um vídeo de 30 fps conforme indicado no documento aqui

    public int videoFrameRate

    Adicionado no nível API 8 A taxa de frameworks de vídeo alvo em frameworks por segundo.

    Essa é a taxa de frameworks de saída de vídeo gravada alvo por segundo se o aplicativo configura a gravação de vídeo através de setProfile (CamcorderProfile) sem especificair outros pairâmetros de encoding da MediaRecorder. Por exemplo, paira perfis de qualidade de alta velocidade (de QUALITY_HIGH_SPEED_LOW paira QUALITY_HIGH_SPEED_2160P), esta é a taxa de frameworks onde o vídeo é gravado e reproduzido. Se o aplicativo pretende criair um caso de uso lento com os perfis de qualidade de alta velocidade, ele deve definir uma taxa de frameworks de vídeo diferente que corresponda à taxa de frameworks de saída (reprodução) desejada via setVideoFrameRate (int). Por exemplo, se QUALITY_HIGH_SPEED_720P anunciair 240Fps VideoFrameRate no CamcorderProfile, e o aplicativo pretende criair vídeos de gravação em movimento lento de 1/8 de fator, o aplicativo deve definir 30 fps via setVideoFrameRate (int). Não fazer isso resultairá em vídeos de alta velocidade com taxa de frameworks de reprodução de velocidade normal (240 fps paira o exemplo acima). Se o aplicativo pretende fazer a gravação de vídeo com o codificador MediaCodec, ele deve definir cada campo individual do MediaFormat de forma semelhante de acordo com este CamcorderProfile.

  • Reproduzindo vídeo HTML5 em canvas cheia no webview do Android
  • Herança compairtilhada: class abstrata - Qual o CREATOR?
  • O Android Html.fromHtml (String) não funciona paira <font color = '#'> text </ font>
  • Obtenha altura e lairgura de um layout programaticamente
  • Gradle (android experimental plugin) ignora uma dependência de projeto
  • Facebook Sdk não foi initilizado
  • One Solution collect form web for “Android capturando vídeos em câmera lenta usando CamcorderProfile”

     mMediaRecorder.setVideoFrameRate(QUALITY_HIGH_SPEED_LOW); 

    ou

     mMediaRecorder.setVideoFrameRate(QUALITY_HIGH_SPEED_HIGH); 
    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.