6

Android で、メディア レコーダーの開始前にプレビュー サーフェスを表示する方法。私のアプリにはビデオ録画機能があり、ビデオ録画フラグメントに移動すると黒い画面が表示され、開始ボタンを使用して録画を開始すると、カメラのプレビューが表示され、録画が開始されます。

録画前にプレビューを開始する方法。フラグメントの onCreateView() で使用したコードを追加しました-

surfaceHolder = mySurfaceView.getHolder();
camera = Camera.open();
if(camera!=null){
    camera.setDisplayOrientation(90);
    Camera.Parameters param;
    param = camera.getParameters();
    param.setPreviewFrameRate(20);
    param.setPreviewSize(176, 144);
    camera.setParameters(param);
    camera.setPreviewDisplay(surfaceHolder);
}

mediaRecorder = new MediaRecorder();
camera.unlock();
mediaRecorder.setCamera(camera);
mediaRecorder.setAudioSource(MediaRecorder.AudioSource.DEFAULT);
mediaRecorder.setVideoSource(MediaRecorder.VideoSource.DEFAULT);
CamcorderProfile camcorderProfile_HQ = CamcorderProfile
            .get(CamcorderProfile.QUALITY_HIGH);
mediaRecorder.setProfile(camcorderProfile_HQ);
String filePath = getOutputMediaFile(MEDIA_TYPE_VIDEO).getPath();
fileUri = getOutputMediaFileUri(MEDIA_TYPE_VIDEO);
mediaRecorder.setOutputFile(filePath);

そして、スタートボタンのクリックで使用したコード-

mediaRecorder.setPreviewDisplay(surfaceHolder.getSurface());
mediaRecorder.prepare();
mediaRecorder.start();

上記のコードを使用してビデオを再コード化することはできますが、記録開始前にプレビューを表示することはできません。ビデオを再コーディングする前に黒い画面が表示されるため、私が行方不明になっている場所を教えてください。

前もって感謝します。

4

2 に答える 2

4
public void surfaceCreated(SurfaceHolder holder) {
        if (mCamera != null) {
            Parameters params = mCamera.getParameters();
            mCamera.setParameters(params);
            try {
                //mCamera.setDisplayOrientation(90);
                mCamera.setPreviewDisplay(holder);
            } catch (IOException e) {
                e.printStackTrace();
            }
            mCamera.startPreview();
        }
    }

SurfaceHolder.Callback を実装する場合は、このように surfaceCreated メソッドをオーバーライドします。これは私にとってはうまくいきました。

于 2015-05-20T13:31:37.540 に答える