Android的 - 我能做到这一点与MediaRecord / MediaPlayer的,而不是AudioRecord /曲目?
-
19-09-2019 - |
题
我目前使用AudioRecord记录在从Android设备的麦克风和然后通过管道音频该直到播放出来Android装置的听筒的AudioTrack。
我不知道我可以做同样的,但用的MediaPlayer和MediaRecorder类,而不是因为我需要使用AMR-NB编码上可用的介质类,而不是音频类。
我与MediaRecorder和MediaPlayer的问题是,它好像我要记录到文件,然后播放该文件?
这是不是我想要做的,反正是有流从麦克风音频声音与媒体类耳机?
使用音频类的我的代码是下面,是有可能做什么用的MediaPlayer和MediaRecorder一样吗?
public class Record extends Thread
{
static final int bufferSize = 200000;
final short[] buffer = new short[bufferSize];
short[] readBuffer = new short[bufferSize];
public void run() {
isRecording = true;
android.os.Process.setThreadPriority
(android.os.Process.THREAD_PRIORITY_URGENT_AUDIO);
int buffersize = AudioRecord.getMinBufferSize(11025,
AudioFormat.CHANNEL_CONFIGURATION_MONO,
AudioFormat.ENCODING_PCM_16BIT);
arec = new AudioRecord(MediaRecorder.AudioSource.MIC,
11025,
AudioFormat.CHANNEL_CONFIGURATION_MONO,
MediaRecorder.AudioEncoder.AMR_NB,
buffersize);
atrack = new AudioTrack(AudioManager.STREAM_VOICE_CALL,
11025,
AudioFormat.CHANNEL_CONFIGURATION_MONO,
MediaRecorder.AudioEncoder.AMR_NB,
buffersize,
AudioTrack.MODE_STREAM);
Log.d("AUDIO", "sample rate = : " + arec.getSampleRate());
atrack.setPlaybackRate(11025);
byte[] buffer = new byte[buffersize];
arec.startRecording();
atrack.play();
while(isRecording) {
arec.read(buffer, 0, buffersize);
atrack.write(buffer, 0, buffer.length);
}
}
}
解决方案
没有,此时不;它是字节流输入不支持MediaPlayer
的公知的限制。你还需要一个文件或URI输入源。
不隶属于 StackOverflow