android 生成pcm,android – AudioRecord – 编写PCM文件

在Android应用中使用AudioRecord类进行录音时遇到问题,录音文件始终为3528字节,时长约20毫秒,尽管期望设置为44100Hz、16位、单声道。文件被ToolsoftAudioTools识别为44100Hz、16位、立体声。代码中创建了一个录音线程,录音开始后,文件应持续记录直到停止按钮被按下,但目前录音似乎并未按预期工作。
摘要由CSDN通过智能技术生成

我正在尝试使用AudioRecord类录制一些语音,然后将其写入输出.pcm文件.我希望我的程序继续录制,直到按下停止按钮.不幸的是,无论我录制多长时间,输出文件大小总是3528字节,它持续约20毫秒.另外根据Toolsoft Audio Tools,该文件的特性是:44100Hz,16位,立体声,即使我使用具有完全不同采样频率的单声道.

Thread recordingThread;

boolean isRecording = false;

int audioSource = AudioSource.MIC;

int sampleRateInHz = 44100;

int channelConfig = AudioFormat.CHANNEL_IN_MONO;

int audioFormat = AudioFormat.ENCODING_PCM_16BIT;

int bufferSizeInBytes = AudioRecord.getMinBufferSize(sampleRateInHz, channelConfig, audioFormat);

byte Data[] = new byte[bufferSizeInBytes];

AudioRecord audioRecorder = new AudioRecord(audioSource,

sampleRateInHz,

channelConfig,

audioFormat,

bufferSizeInBytes);

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

}

@Override

public boolean onCreateOptionsMenu(Menu menu) {

getMenuInflater().inflate(R.menu.activity_main, menu);

return true;

}

public void startRecording(View arg0) {

audioRecorder.startRecording();

isRecording = true;

recordingThread = new Thread(new Runnable() {

public void run() {

String filepath = Environment.getExternalStorageDirectory().getPath();

FileOutputStream os = null;

try {

os = new FileOutputStream(filepath+"/record.pcm");

} catch (FileNotFoundException e) {

e.printStackTrace();

}

while(isRecording) {

audioRecorder.read(Data, 0, Data.length);

try {

os.write(Data, 0, bufferSizeInBytes);

} catch (IOException e) {

e.printStackTrace();

}

try {

os.close();

} catch (IOException e) {

e.printStackTrace();

}

}

}

});

recordingThread.start();

}

public void stopRecording(View arg0) {

if (null != audioRecorder) {

isRecording = false;

audioRecorder.stop();

audioRecorder.release();

audioRecorder = null;

recordingThread = null;

}

}

我可以请你告诉我有什么问题吗?我希望答案不会是’一切’:)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值