MediaRecorder实时采集传输音频问题
用MediaRecorder来做客户端的音频采集,下面是一些基础设置,
MediaRecorder audioRecorder = new MediaRecorder();
audioRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
audioRecorder.setOutputFormat(MediaRecorder.OutputFormat.RAW_AMR);
final int mono = 1;
audioRecorder.setAudioChannels(mono);
audioRecorder.setAudioSamplingRate(8000);
audioRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
// 重点
audioRecorder.setOutputFile(sender.getFileDescriptor());
audioRecorder.prepare();
audioRecorder.start();
用localsocket来实时传输音频
LocalServerSocket lss = new LocalServerSocket(serverName);
LocalSocket receiver = new LocalSocket();
receiver.connect(new LocalSocketAddress(serverName));
receiver.setReceiveBufferSize(bufSize);
receiver.setSendBufferSize(bufSize);
LocalSocket sender = lss.accept();
sender.setReceiveBufferSize(bufSize);
sender.setSendBufferSize(bufSize);
但是在一些机器上如小米、魅族在audioRecorder.start(); 是会报错 start failed -38
如果将audioRecorder.setOutputFile(sender.getFileDescriptor()); 改成向文件写入:
File soundFile = new File(Environment.getExternalStorageDirectory().getCanonicalFile()+"/sound.amr");
audioRecorder.setOutputFile(soundFile.getAbsolutePath());
就可以正常录音
有哪位知道原因或者解决办法呢? 谢谢