2013-12-19 46 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錯誤。我已經報道過,並且已經被接受。如果你有同樣的問題,只是明星的bug報告,以便隨時:

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

回答

2

要開始對玻璃的視頻捕捉,似乎你必須完全停止視頻預覽。如果您使用的是預覽相機,事先做了什麼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

不幸的是,這種情況並非如此。我可以成功啓動應用程序(它是一個活動,而不是活卡),並可以在Surface上看到相機的預覽。只要我嘗試使用MediaRecorder錄製視頻,就會出現問題。 謝謝您的回覆! – Mike

1

經過很多挫折和迭代之後,我很高興地報告說可以在Glass XE12上使用MediaRecorder。下面的代碼對我的作品在我的玻璃1版運行XE12:

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

不幸的奧利維爾它不適合我。不管怎樣,謝謝你。 – Mike