HarmonyOS 录音后的文件无法使用,是坏掉的

根据“使用AudioCapturer开发音频录制功能”这篇文档进行的录音,录音成功后的文件不能用,这是部分代码。

filePath: string = getContext().cacheDir + '/StarWars10s-2C-48000-4SW.wav';
file:fs.File = fs.openSync(this.filePath, fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE)

  //文件写入
(this.audioCapturer as audio.AudioCapturer).on('readData', (buffer: ArrayBuffer) => {
  let options: Options = {
    offset: this.bufferSize,
    length: buffer.byteLength
  }
  fs.writeSync(this.file.fd, buffer, options);
  this.bufferSize += buffer.byteLength;
});

//录音停止
(this.audioCapturer as audio.AudioCapturer).stop((err: BusinessError) => {
  if (err) {
    console.error('Capturer stop failed.');
  } else {
    fs.close(this.file).then(()=>{
      let file = fs.openSync(this.filePath)
      this.initAudioAvPlayer('fd://'+file.fd)
    }).catch(()=>{console.log("文件关闭失败")})
    console.info('Capturer stop success.');
  }
});

这边是在录音stop后,file.close的回调中对文件进行音频的播放或者上传,都显示文件时损坏的,这是什么问题?

HarmonyOS
1天前
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
Excelsior_abit

audioCapture生成的音频文件是PCM格式原始数据,需要音频输出后添加数据处理才能播放。

验证阶段可以把录音文件导出来,用三方软件比如Audacity转为可以播放的格式。

此demo录制出来的pcm码流可以使用音频编码为MP3文件,参考官网链接:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/audio-encoding-V5

分享
微博
QQ
微信
回复
1天前
相关问题
HarmonyOS 录音上传文件
104浏览 • 1回复 待解决
HarmonyOS 录音,希望能有录音Demo
226浏览 • 1回复 待解决