blob, 可以参考下这个 StackOverflow:
https://stackoverflow.com/questions/36738026/play-a-binary-string-with-the-html-audio-tag关键点是 xhr 的 responseType 要设为 blob
其实你想一下,文件无非是一堆 0 和 1,后端返给你一般也都是 raw data,也就是一堆 0 和 1 。把 responseType 设为 blob 其实就是告诉 JS 这是一堆原生数据,现在我想要以编程的方式处理它,也就是我想要它成为对象,在 JS 中这个对象由浏览器提供给我们叫做 blob 。至于如何由 二进制 变成 blob 你不用担心,浏览器都帮你处理好了。之后,只需要调用浏览器提供的 URL.createObjectURL, 参数是刚刚获取的 blob 对象,就能生成一个类似 URL 一样的字符串,把这个字符串丢给 audio 标签,它就能自己去播放。
最简单的例子是: <audio src="
http://example.com/test.mp3" />
这个代码再简单不过了,其实 audio 标签背后帮我们做了很多东西,包括发出一个 http 请求从服务器获取数据,转化为可以使用的 blob 对象,然后开始播放
由于 audio 的 src 属性只能是 字符串,所以当我们自己要完成这些步骤时,需要额外多一步:调用 URL.createObjectURL 方法,生成一个莫须有的 URL, 并把这个 URL 和 其中的媒体资源(blob)对应起来