javascript - javascript音频对象-.ogg blob中存在的音频播放器

标签 javascript html audio async-await

我正在尝试从远程服务器获取ogg音频文件,并将播放器呈现给用户。我正在使用下面的代码。

这导致没有输出。但是检查代码可以发现音频标签在容器中:

<audio preload="auto" src="blob:null/eaed3b36-8c17-4522-8a24-6265a180bf5a"></audio>

但是,它在Firefox的检查器中显示为灰色。 DOM音频对象的error属性为null。据我所知,应该显示音频播放器。

如何将音频播放器和.ogg格式的音频对象呈现给用户?

最后一点,我注意到,当我直接go to链接时,Wikimedia使用了视频标签-是否可以将音频对象转换为视频标签?

let url1 = "https://upload.wikimedia.org/wikipedia/commons/3/33/Dial_up_modem_noises.ogg"

async function getAudFromUrl(url) {
  let response = await fetch(url);
  data = await response.blob();
  let audio = new Audio();
  audio.src = URL.createObjectURL(data);
  return audio;
}

document.addEventListener("DOMContentLoaded", async function() {
  let au = await getAudFromUrl(url1);
  let el = document.getElementById("audio1")
  el.appendChild(au)
})
  .container {
          height: 100%;
          width: 100%;
          }
  <div class = 'container'>
    <div id = 'audio1'></div>
  </div>

最佳答案

可以使用视频标签来做到这一点('audio1' autoplay="" controls=""标签很重要。

let url1 = "https://upload.wikimedia.org/wikipedia/commons/3/33/Dial_up_modem_noises.ogg"

async function getAudFromUrl(url) {
  let response = await fetch(url);
  data = await response.blob();
  let audio = new Audio();
  audio.src = URL.createObjectURL(data);
  return audio;
}

document.addEventListener("DOMContentLoaded", async function() {
  let au = await getAudFromUrl(url1);
  let el = document.getElementById("audio1")
  el.src = au.src
})
  <div class = 'container'>
    <video id = 'audio1' autoplay="" controls="" ></video>
  </div>

关于javascript - javascript音频对象-.ogg blob中存在的音频播放器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59212377/

相关文章:

html - Internet Explorer 11 中流体 flexbox 容器内的元素出现 "overflow: auto"问题

php - 如何使用html和php上传音频文件?

ios - 如何在轨道中间启动 AUAudioFilePlayer 但循环到开头?

html - 如何使 Bootstrap 5 卡与 owl-carousel 的卡列中的高度相同?

javascript - 在 CommonJS 模块中引入 jQuery 的更好方法?

JavaScript : Alert box only once when the user lands

javascript - 更新状态时无法在现有状态转换期间更新?

javascript - jQuery Accordion 的基本问题

Matlab去除人声

javascript - Dygraph 库是否有设置在点之间的差异大于 x 分钟时打破线?