配置: const options = {
duration: 60 * 1000,
sampleRate: 16000, // 采样率
numberOfChannels: 1, // 录音通道数
encodeBitRate: 96000, // 编码码率
format: 'mp3', // 音频格式,有效值 aac/mp3
frameSize: 10, // 指定帧大小,单位 KB
};
开发者工具录的mp3, 就ios真机无法播放, 安卓机可以.
如果手机录音, 不管是ios还是安卓真机录音, ios都能正常播放.
- 所以我在想是不是options的问题, 还是什么问题? 音频录制好是上传cos后读取回来的https://xxx.mp3格式的, 如当前开发者工具的录音: [https://material-qa.chinaerdos.com/persist/3e89d264-b317-4241-a9df-4292c90871a7/6666/6642867006/blessing/3/46962c4bfbed461785297fa41fbc4429-1770087659775/blessing-audio-1770087659468.mp3], 这个录音电脑和安卓机都能播放,但是ios的小程序不行
以下是初始化代码
const [isListening, setIsListening] = useState(false);
const audioContextRef = useRef<Taro.InnerAudioContext | null>(null);
const timerRef = useRef<NodeJS.Timeout | null>(null);
// 初始化音频上下文
useEffect(() => {
const audioContext = Taro.createInnerAudioContext();
audioContextRef.current = audioContext;
Taro.setInnerAudioOption({
obeyMuteSwitch: false,
success: function (res: any) {
console.log('开启静音模式下播放音乐的功能', res);
},
fail: function (err: any) {
console.log('静音设置失败', err);
},
});
// 设置事件监听
audioContext.onStop(() => {
console.log('停止播放');
setIsListening(false);
onStop?.();
});
audioContext.onPlay(() => {
console.log('开始播放');
onPlay?.();
});
audioContext.onPause(() => {
console.log('暂停播放');
onPause?.();
});
audioContext.onEnded(() => {
console.log('播放结束');
setIsListening(false);
onEnded?.();
});
audioContext.onError((err) => {
console.log('播放错误', err);
setIsListening(false);
onError?.(err);
});
// 清理函数
return () => {
// 清除定时器
if (timerRef.current) {
clearInterval(timerRef.current);
timerRef.current = null;
}
// 停止播放
if (audioContext) {
audioContext.stop();
audioContext.destroy();
}
};
}, []);

播放代码呢
// 播放音频const play = useCallback((src: string) => {const audioContext = audioContextRef.current;if (!audioContext) {console.warn('音频上下文未初始化');return;}audioContext.src = src;audioContext.play();setIsListening(true);}, []);} else {