问题描述
在我的应用中,我使用 Expo-AV 录制音频,这在 Android 上运行良好,但在 iPhone 上运行不正常。 尝试录制时出现此错误: Prepare 遇到错误:Error Domain=NSOsstatusErrorDomain Code=561145203 "(null)"
async startRecordingAudio() {
if (!this.state.isRecording) {
const recording = new Audio.Recording();
this.setState({
timerdisplay: "01:30",timerCnt: 90,});
try {
await Audio.setAudioModeAsync({
playsInSilentModeIOS: true,allowsRecordingIOS: true,staysActiveInBackground: false,interruptionModeIOS: Audio.INTERRUPTION_MODE_IOS_DO_NOT_MIX,shouldDuckAndroid: true,interruptionModeAndroid: Audio.INTERRUPTION_MODE_ANDROID_DO_NOT_MIX,playThroughEarpieceAndroid: false,});
await recording.preparetoRecordAsync({
android: {
extension: ".mp3",outputFormat: RECORDING_OPTION_ANDROID_OUTPUT_FORMAT_MPEG_4,audioEncoder: RECORDING_OPTION_ANDROID_AUdio_ENCODER_AAC,sampleRate: 44100,numberOfChannels: 2,bitRate: 128000,},ios: {
extension: ".m4a",outputFormat:
Audio.RECORDING_OPTION_IOS_OUTPUT_FORMAT_APPLELOSSLESS,audioQuality: Audio.RECORDING_OPTION_IOS_AUdio_QUALITY_MIN,linearPCMBitDepth: 16,linearPCMIsBigEndian: false,linearPCMIsFloat: false,});
console.log("prepare record");
let x = await recording.startAsync();
this.setState({
refreshdisabled: true,recorddisabled: false,playdisabled: true,});
let recInt = setInterval(() => {
let counter = this.state.timerCnt - 1;
let mins = parseInt(counter / 60,10);
let secs = parseInt(counter % 60,10);
mins = mins < 10 ? "0" + mins : mins;
secs = secs < 10 ? "0" + secs : secs;
Helpers.printLog(current_page_name,2,mins + ":" + secs);
this.setState({ timerdisplay: mins + ":" + secs,timerCnt: counter });
if (counter <= 0) {
clearInterval(this.state.intTimer);
this.setState({
isRecording: false,timerdisplay: "01:30",refreshdisabled: false,playdisabled: false,});
}
},1000);
this.setState({
recording: recording,isRecording: true,intTimer: recInt,});
// Helpers.printLog(current_page_name,"3" + " recording status - ",x);
} catch (error) {
console.log(error);
// Helpers.printLog(
// current_page_name,// 4,// "Audio recording error - ",// error
// );
console.log(error);
}
} else {
try {
await Audio.setAudioModeAsync({
allowsRecordingIOS: true,playsInSilentModeIOS: true,playsInSilentLockedModeIOS: true,});
let rec = this.state.recording;
let y = await rec.stopAndUnloadAsync();
this.setState({
refreshdisabled: false,recordingURI: rec.getURI(),});
// Helpers.printLog(current_page_name,"5 record stopped object- ",y);
console.log("5 record stopped object- " + y);
clearInterval(this.state.intTimer);
this.setState({
isRecording: false,recordingDuration: y.durationMillis,filePath: rec.getURI(),});
} catch (error) {
// Helpers.printLog(
// current_page_name,// "6 Audio recording stopped error - ",// error
// );
console.log(error);
}
}
}
当我触摸按钮开始录制时会调用此函数。 尝试更改 setAudioModeAsync 和 preparetoRecordAsync 中的编解码器配置,尝试 m4a、caaf、wav、ac3 格式
编解码器配置有什么变化吗?请提出建议。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)