2013-12-19 3 views
3

Glass에 MediaRecorder를 사용하여 비디오를 성공적으로 녹화 한 사람이 있습니까?MediaRecorder 시작 실패 : -19

이것은 레코더를 준비하기 위해 사용하는 코드입니다. -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

답변

2

Glass에서 비디오 캡처를 시작하려면 비디오 미리보기를 완전히 중단해야합니다. 당신이 미리 카메라를 사용하는 경우 MediaRecorder와 아무것도의 이전, 단지 실행 : 여기

try { 
    mCamera.setPreviewDisplay(null); 
} catch (java.io.IOException ioe) { 
    Log.d(TAG, "IOException nullifying preview display: " + ioe.getMessage()); 
} 
mCamera.stopPreview(); 
mCamera.unlock(); 

상세 정보 : https://code.google.com/p/google-glass-api/issues/detail?id=360#c6

0

이 때 레코더를 준비합니까, 당신이 당신의 응용 프로그램을 실행할 때 발생하는 뭔가? 그렇다면 음성 트리거로 시작 하시겠습니까?

두 가지 모두 해당되는 경우 the bug described here의 인스턴스 일 수 있습니다. 해당 스레드 (지수 백 오프)에서 해결 방법을 시도하고 작동하는지 확인할 수 있습니까?

+0

불행하게도,이 경우되지 않습니다. 성공적으로 앱을 실행할 수 있습니다 (라이브 카드가 아닌 활동입니다). 서페이스에서 카메라의 미리보기를 볼 수 있습니다. MediaRecorder를 사용하여 비디오를 녹화하자 마자 문제가 발생합니다. 답장을 보내 주셔서 감사합니다. – Mike

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; 
    } 
+0

고마워요 올리버! 버전 2로 교체를 위해 유리를 보냈는데, 내가 다시 돌려받는대로 시험해 볼 것입니다. – Mike

+0

불행히도 Olivier는 저를 위해 작동하지 않았습니다. 어쨌든 고맙습니다. – Mike