Don*_*rty 5 audio android audio-recording audio-streaming media-player
我目前使用AudioRecord从Android设备的麦克风录制音频,然后将其直接传送到播放Android设备耳机的AudioTrack.
我想知道我可以做同样的事情,但使用MediaPlayer和MediaRecorder类,因为我需要使用Media类上可用的AMR-NB编码,而不是Audio类.
我的MediaRecorder和MediaPlayer的问题是,我似乎必须录制到一个文件,然后播放该文件?
这不是我想要做的,无论如何将音频声音从Mic转换为带有Media类的Earpiece?
我使用Audio类的代码如下,是否可以使用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);
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3372 次 |
| 最近记录: |