2017-06-09 83 views
1

在一些特定的手機,如聯想K6電源(K33A42)mediarecorder不記錄,我試圖改變所有AudioSource,在VOICE_CALL它沒有記錄。在它記錄的MIC上,但輸出文件是無聲的。MediaRecorder沒有錄製在某些電話

private void startRecording() { 
      mRecorder = new MediaRecorder(); 
      mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC); 
      mRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP); 
      mRecorder.setOutputFile(mFileName); 
      mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); 
+0

究竟是什麼問題? – lelloman

+0

它沒有記錄在幾個特定的​​手機。 – Ace

+0

所以,你嘗試使用不同的輸出格式? – lelloman

回答

0

這裏是我曾經用過什麼:

mMediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC); 
mMediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4); 
mMediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC); 
mMediaRecorder.setAudioChannels(1); //you can set it to 2 if you want stereo 
mMediaRecorder.setOutputFile(getFilePath(starttime)); 

我還沒有與此設置的任何問題至今。或者,您可以嘗試合併AudioRecordMediaCodecThis示例可能會給你一些線索。我沒有嘗試過這個特殊的例子,但是我在公司的項目中做了類似的事情。

+0

你會介意這個答案如何解決這個問題嗎? – lelloman

+0

據我所知,媒體編碼是Android的一個神祕領域。很難告訴爲什麼它不能在一臺設備上工作,爲什麼它在另一臺設備上工作。我嘗試了Ace的代碼(這基本上是Android文檔提供的),但我遇到了很多客戶投訴。經過漫長的試驗和錯誤期後,我遇到了這種設置,它已經奏效。這是我最好的科學方法。這是一個更復雜的實現方式:https://github.com/OnlyInAmerica/HWEncoderExperiments/blob/audioonly/HWEncoderExperiments/src/main/java/net/openwatch/hwencoderexperiments/AudioEncoder.java –

+0

如果你的設置工作,它是一個好東西,如果一個人也可以理解_why_它的作品,它會好很多 – lelloman