私はそれを自分で解決し、私はちょうどカメラのAPIスローモーションとタイムラプスを使用して、自分の作業コード部分を共有していますが、スタート前に
を実装しているあなたはsetCaptureRate(double fps)
設定ビデオフレームキャプチャレートの定義を知っている必要があります。 これは、記録されたビデオの再生レートの とは異なるビデオフレームキャプチャレートを設定するために使用できます。また、この方法では、録画の設定を時間の経過に合わせて設定します( )。時間経過ビデオ録画では、ビデオのみが と記録されます。オーディオ関連のパラメータは、アプリケーションがそれらを設定した場合、時間の経過が レコーディングセッションが開始されると無視されます。
タイムラプス
時間経過のためにあなたがビデオフレームの幅と高さによると、以下のカメラプロファイルを使用する必要があります。 以下のプロフィールのいずれかを選択するか、必要に応じてその他を選択することができます。
profile = CamcorderProfile.get(CamcorderProfile.QUALITY_TIME_LAPSE_1080P);
profile = CamcorderProfile.get(CamcorderProfile.QUALITY_TIME_LAPSE_720P);
profile = CamcorderProfile.get(CamcorderProfile.QUALITY_TIME_LAPSE_480P);
そして今、あなたはあなたのビデオsetCaptureRate
とsetVideoEncodingBitRate
video_recorder.setCaptureRate(profile.videoFrameRate/6.0f);
video_recorder.setVideoEncodingBitRate(profile.videoBitRate);
を設定する必要があり、最後に、あなたのMediaRecorderに設定済みのプロファイルを設定する必要があります。
video_recorder.setProfile(profile);
スローモーションのためにスローモーション
あなたはまた、私はプロファイルに流れる設定を使用していますCamcorderProfileを設定する必要があります。スローモーションのために
profile = CamcorderProfile.get(CamcorderProfile.QUALITY_HIGH_SPEED_HIGH);
video_recorder.setCaptureRate(profile.videoFrameRate/0.25f);
video_recorder.setVideoEncodingBitRate(profile.videoBitRate);
video_recorder.setProfile(profile);
あなたはそれ以外の場合は動作しませんCameraAPI2を使用する必要があります。
2つの課題は非常に異なります。 SlowMotionは高FPSネイティブカメラサポートに依存しますが、TimeLapseはMediaCodecで実行できます。 http://stackoverflow.com/questions/30972081/how-to-drop-frames-while-recording-with-mediacodec-and-inputsurfaceとhttps://github.com/saki4510t/TimeLapseRecordingSample –
他のオープンソースプロジェクトを参照してください。 https://github.com/mercyorangi/sky-カメラ –
@AlexCohn試していただきありがとうございますが、スローモーションの場合は、上記のコードは私のためには機能しません。 – IshRoid