Audio音频资源播放

打印 上一主题 下一主题

主题 504|帖子 504|积分 1512

1、<audio>标签播放音频和利用AudioContext播放音频的区别?

以下是具体的比较:

  • 界说与用途

    • <audio>标签:是HTML5提供的一个元素,用于在网页上嵌入音频内容,如音乐或音频流。它主要用于简单的音频播放和控制,通过添加属性(如controls、autoplay等)来实现根本的音频操作。
    • AudioContext:是Web Audio API中的一个接口,它提供了一个更强大的音频处理环境。AudioContext答应你举行更复杂的音频操作,如音频合成、音频效果添加、音频分析等。

  • 音频格式支持

    • <audio>标签:支持多种音频格式,包罗MP3、WAV、Ogg等。你可以直接在src属性中指定音频文件的路径,浏览器将根据其支持的格式来播放音频。
    • AudioContext:对音频格式的支持主要依赖于解码器,但它提供了更灵活的音频数据处理方式,不局限于特定的文件格式。

  • 播放与控制

    • <audio>标签:通过HTML和浏览器提供的内置控件(如播放/暂停按钮)举行播放和控制。你也可以通过JavaScript来访问和操作<audio>元素,以实现更复杂的控制逻辑。
    • AudioContext:利用JavaScript和Web Audio API举行编程控制。你可以创建音频源、毗连音频节点、应用音频效果等,以实现对音频的精确控制和处理。

  • 音频处理与效果

    • <audio>标签:提供根本的音频播放和控制功能,但通常不提供复杂的音频处理或效果。
    • AudioContext:提供了丰富的音频处理效果和工具,如混响、合唱、平衡器、压缩器等。你可以利用这些效果和工具来创建复杂的音频效果,满意各种音频应用的需求。

  • 应用场景

    • <audio>标签:实用于简单的音频播放和控制场景,如配景音乐、音效等。
    • AudioContext:实用于需要复杂音频处理和分析的场景,如音乐制作、音频可视化、游戏音效等。

  • 浏览器兼容性

    • <audio>标签:在主流浏览器中都有较好的兼容性。
    • AudioContext:虽然大多数今世浏览器都支持Web Audio API和AudioContext,但在一些较旧的浏览器或特定版本的浏览器中可能存在兼容性问题。

综上所述,<audio>标签和AudioContext在界说、用途、音频格式支持、播放与控制、音频处理与效果以及应用场景等方面都存在显着的区别。选择利用哪种方式播放音频取决于你的具体需求和目标。
2、利用 audioContext 解码,播放 arraybuffer 资源:

下载一个音频链接,得到 arraybuffer,利用 audioContext 解码后举行播放;
  1. downloadAudio() {
  2.       axios({
  3.         method: 'get',
  4.         url: this.audioUrl,
  5.         responseType: 'arraybuffer'
  6.       }).then(res => {
  7.         if (!res) {
  8.           return;
  9.         }
  10.         console.log("decodeAudioData")
  11.         this.playAudio(res.data)
  12.       }).catch(error => {
  13.         console.error('下载音频时出错:', error);
  14.       });;
  15.     },
  16.     playAudio(audioData) {
  17.       const audioContext = new AudioContext();
  18.       audioContext.decodeAudioData(audioData, function (decodedData) {
  19.         const source = audioContext.createBufferSource();
  20.         source.buffer = decodedData;
  21.         source.connect(audioContext.destination);
  22.         source.start();
  23.       }, function (error) {
  24.         console.error('解码音频数据时出错:', error);
  25.       });
  26.     },
复制代码
3、利用播放 arraybuffer 资源:

  1. <audio ref="audioPlayer" controls></audio>
复制代码
  1. downloadAudio() {
  2.       axios({
  3.         method: 'get',
  4.         url: this.audioUrl,
  5.         responseType: 'arraybuffer'
  6.       }).then(res => {
  7.         if (!res) {
  8.           return;
  9.         }
  10.         console.log("decodeAudioData")
  11.         this.playAudio(res.data)
  12.       }).catch(error => {
  13.         console.error('下载音频时出错:', error);
  14.       });;
  15.     },
  16.     playAudio(audioData) {
  17.       // 将 ArrayBuffer 转换为 Uint8Array
  18.       const uint8Array = new Uint8Array(audioData);
  19.       // 创建 Blob 对象
  20.       const blob = new Blob([uint8Array], { type: 'audio/mp3' });
  21.       // 创建音频 URL
  22.       const audioURL = URL.createObjectURL(blob);
  23.       // 获取 <audio> 元素
  24.       const audioElement = this.$refs.audioPlayer;
  25.       // 设置 <audio> 元素的 src
  26.       audioElement.src = audioURL;
  27.       // 播放音频
  28.       audioElement.play();
  29.      }
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

渣渣兔

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表