3

Glass で MediaRecorder を使用してビデオを正常に録画できた人はいますか?

これは、レコーダーを準備するために使用しているコードです。エラー -19 が発生し続けます。

    recorder = new MediaRecorder();

    recorder.setOutputFile(videoFile);

    recorder.setVideoSource(MediaRecorder.VideoSource.DEFAULT);
    recorder.setAudioSource(MediaRecorder.AudioSource.DEFAULT);

    recorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);

    recorder.setVideoFrameRate(15);
    recorder.setVideoEncoder(MediaRecorder.VideoEncoder.DEFAULT);

    recorder.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT); 

ありがとうございました。

更新: GDK のバグのようです。報告したところ、承認されました。同じ問題が発生している場合は、バグ レポートにスターを付けて最新情報を入手してください。

https://code.google.com/p/google-glass-api/issues/detail?id=360

4

3 に答える 3

1

多くのフラストレーションと反復の末、Glass XE12 で MediaRecorder を使用できることを報告できることをうれしく思います。以下のコードは、XE12 を実行している Glass バージョン 1 で機能します。

    mMediaRecorder = new MediaRecorder();
    mMediaRecorder.setCamera(mCamera);
    mMediaRecorder.setPreviewDisplay(preview.getHolder().getSurface());
    mCamera.unlock();
    // Step 2: Set sources

    mMediaRecorder.setOnErrorListener(new android.media.MediaRecorder.OnErrorListener() {
        public void onError(MediaRecorder mediarecorder1, int k, int i1)
        {
            Log.e(TAG,String.format("Media Recorder error: k=%d, i1=%d", k, i1));
        }

    });
    mMediaRecorder.setVideoSource(0);
    mMediaRecorder.setAudioSource(0);
    mMediaRecorder.setOutputFormat(2);
    mMediaRecorder.setVideoEncoder(2);
    mMediaRecorder.setVideoEncodingBitRate(0x4c4b40);
    mMediaRecorder.setVideoFrameRate(30);
    mMediaRecorder.setVideoSize(1280, 720);
    mMediaRecorder.setAudioChannels(2);
    mMediaRecorder.setAudioEncoder(3);
    mMediaRecorder.setAudioEncodingBitRate(0x17700);
    mMediaRecorder.setAudioSamplingRate(44100);
    mMediaRecorder.setMaxDuration(0);
    mMediaRecorder.setOutputFile(getOutputMediaFile(MEDIA_TYPE_VIDEO).toString());
    mMediaRecorder.setMaxDuration(-1);

    // Step 5: Set the preview output
    // Step 6: Prepare configured MediaRecorder
    try {
        mMediaRecorder.prepare();
        mMediaRecorder.start();
    } catch (IllegalStateException e) {
        Log.d(TAG, "IllegalStateException preparing MediaRecorder: " + e.getMessage());
        releaseMediaRecorder();
        return false;
    } catch (IOException e) {
        Log.d(TAG, "IOException preparing MediaRecorder: " + e.getMessage());
        releaseMediaRecorder();
        return false;
    } catch (Exception e) {
        Log.d(TAG, "Unknown exception preparing MediaRecorder: " + e.getMessage());
        releaseMediaRecorder();
        return false;
    }
于 2014-01-15T05:49:17.417 に答える
0

いつレコーダを準備するのですか、それはアプリケーションを起動したときですか? もしそうなら、ボイストリガーで起動していますか?

これらの両方が当てはまる場合、これはここで説明されているバグのインスタンスである可能性があります。そのスレッドで回避策 (指数バックオフ) を試して、それが機能するかどうかを確認できますか?

于 2013-12-20T02:22:47.467 に答える