gpt4 book ai didi

android - MediaRecorder 实现 setOnInfoListener -max duration

转载 作者:太空狗 更新时间:2023-10-29 16:09:12 26 4
gpt4 key购买 nike

我正在使用 mediarecorder 通过 MIC 捕捉音频。我已将最长持续时间设置为 20 秒。录音自动停止,不会在 setOnInfoListener 中的断点处停止。

**UPDATE: Changed my code according to suggestion but still doesnt stop at the breakpoint inside the listener.**

mRecorder.reset();
mRecorder.setOnInfoListener(new OnInfoListener() {
@Override
public void onInfo(MediaRecorder mr, int what, int extra) {
if (what == MediaRecorder.MEDIA_RECORDER_INFO_MAX_DURATION_REACHED) {
mRecorder.stop();

}
}
});
mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
mRecorder.setAudioSamplingRate(8000);
mRecorder.setOutputFormat(MediaRecorder.OutputFormat.RAW_AMR);
mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
mRecorder.setOutputFile(fileName);
mRecorder.setMaxDuration(20000);
try {
mRecorder.prepare();
} catch(IOException exception) {
mRecorder.reset();
mRecorder.release();
mRecorder = null;
return;
}
mRecorder.start();

有人能告诉我为什么代码没有命中我在监听器中的 onInfo 方法而是默默地停止录制。

谢谢

最佳答案

设置输出格式时,请尝试使用 THREE_GPP 而不是 RAW_AMR。

mRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);

根据documentation对于 setOutputFormat():

It is recommended to always use 3GP format when using the
H.263 video encoder and AMR audio encoder. Using an MPEG-4
container format may confuse some desktop players.

关于android - MediaRecorder 实现 setOnInfoListener -max duration,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7183573/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com