我正在开发用户可以播放音频文件的 Angular 应用程序。为此,我们需要从 api 将文件作为 blob 获取,然后创建 blobURL 并将其分配给 HTML Audio 的 src 属性,但在 chrome 上,有时(真的很奇怪)它会给出以下错误 -
MediaError
code: 3
message: "AUDIO_RENDERER_ERROR: audio render error"
如果我再试几次它会播放,然后所有文件都会播放而没有任何错误。另外,如果我在某个时间后尝试,它会开始播放而不会出现任何错误。虽然在 Firefox 上运行良好。
这是从 api 获取音频的代码 -
res.subscribe((audioData) => {
this.unsafeBlobUrl = URL.createObjectURL(audioData);
this.audio.nativeElement.addEventListener('error', onError);
this.audio.nativeElement.addEventListener('ended', onEnded);
this.audio.nativeElement.addEventListener('paused', onPaused);
this.audio.nativeElement.addEventListener('canplay', canPlay);
}, onError)
这是播放音频的代码 -
const canPlay = () => {
this.audio.nativeElement.play()
.then(() => {
this.isPlaying = true;
this.isLoading = false;
this.isError = false;
})
.catch(onError);
};