2

我使用 Expo AV 并在我的应用程序中开发了一个屏幕来播放从我的服务器获取的音频文件。它在 Android 上运行良好,但在 iPhone 上无法播放任何内容。

当我播放一个按钮来播放加载和播放文件的音频时

soundObject.loadAsync({ uri: this.state.file });
soundObject.playAsync();

它返回一个错误:

不支持此媒体格式。- AVPlayerItem 实例失败,错误代码 -11828 和域“AVFoundationErrorDomain”。

这是我加载和播放音频的代码:

async loadAudio() {
soundObject = new Audio.Sound();
try {
await soundObject.loadAsync({ uri: this.state.file });
console.log("File loaded: " + this.state.file);
} catch (error) {
console.log(error);
}
}


async playAudio() {
if (!this.state.isPlayingAudio) {
try {
  
  await soundObject.playAsync();
} catch (error) {
  console.log(error);
}

  else {
soundObject.pauseAsync();
  }
  }

我在录制和获取文件时尝试将音频格式更改为 m4a、wav、caf,但这并没有帮助我在 iPhone 7 plus、iOS 14.2 上运行该应用程序,请问有什么建议/修复吗?提前致谢

4

3 回答 3

0

我将 uri 对象和第二个参数 {shouldPlay: true} 传递给 loadAsync 方法。这从亚马逊服务器 s3 播放我的 mp3 文件

await Audio.Sound.loadAsync( { uri: this.state.file }, { shouldPlay: true } )

于 2021-09-13T16:27:36.227 回答
0

您调用 loadAsync 不正确。

调用应如下所示:

await Audio.Sound.createAsync(
  { uri: this.state.file },
  { shouldPlay: true }
);
于 2021-09-13T17:15:54.997 回答
0

我参加了 44 世博会,降级到 43 世博会成功了。运行expo upgrade 43

于 2022-01-20T02:14:28.400 回答