uniapp 录音后播放没有声音是什么原因?

在uniapp中录音完成后播放没有声音,可能是什么原因导致的?录音文件已经生成,但播放时完全无声,检查了播放器代码和音量设置都没有问题。请问还需要排查哪些方面?

2 回复

可能原因:

  1. 权限未开启,检查麦克风和扬声器权限。
  2. 录音文件格式或路径错误。
  3. 播放器未正确初始化或路径错误。
  4. 录音时音量太小或设备问题。
  5. 真机调试时需注意平台差异。

在 UniApp 中录音后播放没有声音,通常由以下原因导致。请逐步排查:

1. 录音格式不兼容

  • 问题:某些平台(如 iOS)可能不支持 aac 以外的录音格式。
  • 解决:设置录音格式为 aac
    const recorderManager = uni.getRecorderManager();
    recorderManager.start({
      format: 'aac', // 使用 AAC 格式
      sampleRate: 44100,
      numberOfChannels: 1
    });
    

2. 录音文件路径问题

  • 问题:录音成功后,文件路径不正确或无法访问。
  • 解决:确保使用 tempFilePath 播放。
    recorderManager.onStop((res) => {
      const tempFilePath = res.tempFilePath;
      // 使用 innerAudioContext 播放
      const innerAudioContext = uni.createInnerAudioContext();
      innerAudioContext.src = tempFilePath;
      innerAudioContext.play();
    });
    

3. 播放器未正确初始化或调用

  • 问题:未使用 uni.createInnerAudioContext() 或未调用 play() 方法。
  • 解决:正确初始化和播放。
    const innerAudioContext = uni.createInnerAudioContext();
    innerAudioContext.src = '音频路径';
    innerAudioContext.play();
    

4. 平台差异

  • Android:检查文件权限,确保应用有存储和录音权限。
  • iOS:确认格式为 aac,并检查是否在真机上测试(模拟器可能不支持录音)。

5. 音量设置或静音

  • 检查设备音量是否调至最低或处于静音模式。

6. 代码逻辑错误

  • 确保录音和播放的代码在正确的事件中触发(如 onStop)。

完整示例代码

// 录音
const recorderManager = uni.getRecorderManager();
recorderManager.start({
  format: 'aac',
  sampleRate: 44100,
  numberOfChannels: 1
});

// 停止录音并播放
recorderManager.onStop((res) => {
  const tempFilePath = res.tempFilePath;
  const innerAudioContext = uni.createInnerAudioContext();
  innerAudioContext.src = tempFilePath;
  innerAudioContext.play();
});

// 错误处理
innerAudioContext.onError((res) => {
  console.log('播放失败:', res.errMsg);
});

如果以上步骤仍无法解决,请检查 UniApp 版本更新或尝试在真机调试。

回到顶部