javascript - 如何将音频 base64 字符串下载为 mp3 文件而不损坏它?

标签 javascript audio download base64 mp3

我有一个 10 秒的音频流,它被编码为 Base64 字符串。当附加到音频标签时,它可以在 HTML 元素内正常播放。尝试下载时,它会下载为(已损坏?)文件,持续时间为 0:00。

var audio = document.getElementById('audio-element');
var linkTag = document.getElementById('link-element');

linkTag.href = audio.src;
linkTag.download = 'audio-file';
linkTag.click();
<!DOCTYPE html>
<html>
  <head>
      
  </head>
  <body>
    <audio src="data:audio/mp3; codecs=opus;base64,GkXfo59ChoEBQveBAULy.............IiT5Q==" controls id="audio-element">
      Your browser does not support the audio element
    </audio>
    
    <a href="" id="link-element">Download audio</a>
  </body>
</html>

上面代码片段中的 base64 字符串无效,因为问题中不允许超过 30,000 个字符的限制。因此,我不得不 trim 它。原始字符串是有效的并且可以正常播放,但由于字符限制无法在此发布。

我想要的是从“audio/mp3”类型的 Base64 编码字符串下载准确的 mp3 文件。

如何使用纯 JavaScript/ES6 执行此操作?见解将不胜感激。

最佳答案

audio/mp3; codecs=opus;

没有这样的事情。 Opus 是一种音频编解码器。 MP3 是一种音频编解码器。 “MP3 文件”只是原始 MPEG 流。您不能将 Opus 放入原始 MPEG 流中。

浏览器可能对你很友善,并将你实际拥有的任何数据解释为它实际上应该是什么。其他玩家可能没有那么多。

关于javascript - 如何将音频 base64 字符串下载为 mp3 文件而不损坏它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46982089/

相关文章:

javascript - 使用 jQuery UI Accordion 显示 couchDB 数据库搜索结果的问题

javascript - 具有包装和响应能力的 Angular cdk-virtual-scroll

javascript - 如何从azure数据库的表中删除行?

javascript - 如何在 javascript 或 php 中将 WAV 音频文件转换为 FLAC 格式

actionscript-3 - 如何在 ActionScript 3中重播声音

php - 从 MySQL DB PHP 下载空 BLOB 文件

c# - 检查动态创建的文本框是否被 Javascript 弄脏

Java声音只能播放一次?

java - 需要一个 servlet 从/home/Bureau 等路径下载文件

Java从重定向的 'friendly' url获取下载的文件名