1

こんにちは皆さん、特定の期間ビデオを録画する必要がありますが、これは正常に機能しています。しかし、実際のビデオ録画を開始する前に 30 秒の遅延を追加する必要がありますが、その間にカメラのプレビューを表示する必要があります。どうすれば達成できるのか気になります。カメラ オブジェクトの初期化のコードは次のとおりです。

mCamera = Camera.open();
surfaceHolder = recorderView.getHolder();
surfaceHolder.addCallback(this);
surfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);

My Recorder オブジェクトの初期化は次のとおりです。

File file = new File(path, filename);
mrec = new MediaRecorder();
mCamera.lock();
mCamera.unlock();
mrec.setCamera(mCamera);
mrec.setVideoSource(MediaRecorder.VideoSource.CAMERA);
mrec.setAudioSource(MediaRecorder.AudioSource.MIC);
mrec.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
mrec.setVideoEncoder(MediaRecorder.VideoEncoder.MPEG_4_SP);
mrec.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
mrec.setVideoSize(320, 240);
mrec.setPreviewDisplay(surfaceHolder.getSurface());
mrec.setOutputFile(path + filename);
mrec.prepare();

最初の 30 秒間はカウントダウンタイマーを使用しており、その onfinsh 実装ではmrec.start()、実際の記録を開始するために を呼び出していますが、それまではカメラのプレビューが表示されません。また、レコーダーが起動するまでに約 1 ~ 2 秒の遅延があります。

4

1 に答える 1

1

これらの2行:

mCamera.unlock();
mrec.setCamera(mCamera); 

カメラのプレビューを停止します。30 秒が経過するまで、それら (およびその後のすべてのセットアップ) を延期する必要があります。

私も好きではありませんが、それがどのように機能するかです。

于 2013-03-05T10:25:01.163 に答える