如何在不破坏它的情况下将音频 base64 字符串下载为 mp3 文件?
How to download audio base64 string as an mp3 file without corrupting it?
我有一个编码为 base64 字符串的 10 秒音频流。当附加到音频标签时,它会在 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 file" 只是原始 MPEG 流。您不能将 Opus 放入原始 MPEG 流中。
浏览器可能对您很好,并将您实际拥有的任何数据解释为实际应该是的数据。其他玩家,可能没那么多。
我有一个编码为 base64 字符串的 10 秒音频流。当附加到音频标签时,它会在 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 file" 只是原始 MPEG 流。您不能将 Opus 放入原始 MPEG 流中。
浏览器可能对您很好,并将您实际拥有的任何数据解释为实际应该是的数据。其他玩家,可能没那么多。