我在内存中有一个JSON对象,其中的音频数据存储为Uint8Array:

音频内容:{类型:"缓冲区",数据:(361728)[…]}

基本上-我不确定如何将其转换回音频流并在浏览器中播放.

我试过的方法是:

<audio id="audio_player" src = ...>


<script>
  let audioElement = document.getElementById("audio_player");

  const blob = new Blob(trackData.audioContent.data);
  const url = window.URL.createObjectURL(blob);
  audioElement.src = url;

</script>

事实是,除了将数组转换为编码流之外,我还不知道需要什么才能使它工作

我正在寻找可以用来理解如何做到这一点的代码示例.

EDIT 感谢大家分享他们的代码和建议. 浏览firefox对编码不满意的建议. 我回到square 1 -将源音频编码为Base64,并在JS函数中播放它,trackData是Base64数据.

  var audio = new Audio("data:audio/mp3;base64," + trackData);
  audio.play();

推荐答案

给定表示音频数据的无符号8位整数的json数组,用该数组初始化Blob [mdn].

<audio id="audio_player"></audio>
<script>
  let audioElement = document.getElementById("audio_player");
  const blob = new Blob(trackData.audioContent.data, { type: "audio/mpeg" });
  const url = window.URL.createObjectURL(blob);
  audioElement.src = url;
</script>

Javascript相关问答推荐

从连接字符串创建客户端时,NodeJS连接到CosmosDB失败

如何将拖放功能添加到我已自定义为图像的文件输入HTML标签中?

RxJS setTimeout操作符等效

有什么(最佳)方法可以从模块中获取脚本模块的多姆元素吗?

如何在Javascript中的控制台上以一行形式打印循环的结果

jQuery s data()[storage object]在vanilla JavaScript中?'

更改JSON中使用AJAX返回的图像的路径

如何在输入元素中附加一个属性为checkbox?

JQuery Click事件不适用于动态创建的按钮

如何使用TypeScrip设置唯一属性?

try 使用PM2在AWS ubuntu服务器上运行 node 进程时出错

与svg相反;S getPointAtLength(D)-我想要getLengthAtPoint(x,y)

如何在一个对象Java脚本中获取不同键的重复值?

重新呈现-react -筛选数据过多

未找到用于 Select 器的元素:in( puppeteer 师错误)

如何设置时间选取器的起始值,仅当它获得焦点时?

相对于具有选定类的不同SVG组放置自定义工具提示

使用jQuery每隔几秒钟突出显示列表中的不同单词

当一条路由在Reaction路由中命中时,如何有条件地渲染两个组件或更改两个插座?

递归地将JSON对象的内容上移一级