JavaScript制作音频Blob

14
我正在测试 HTML 音频标签,并想要创建音频 Blob URL,就像 YouTube 或 Vimeo 一样,然后将其添加到 "src" 中以播放音频。
我一直在使用 new Blob() 和 URL.createObjectURL() 进行测试,但我不知道如何使用它们。
我希望能这样做: <audio controls src"blob:null/8142a612-29ad-4220-af08-9a31c55ed078"></audio> 非常感谢您的帮助。
1个回答

39
假设您有一个类似于这样的音频的base64编码版本。
data="data:audio/ogg;base64,T2dnUwACAAAAAAAAAADSeWyXAU9nZ1MAAAAAAAAAAAAA0nl";

1. 首先,删除base64头部(前言),并将其解码为纯二进制形式,即与iPad上的形式相同。您可以使用borismus在github上提供的优秀片段convertDataURIToBinary来完成此操作。

var binary= convertDataURIToBinary(data);

2.现在从二进制数据创建 Blob;指定音频类型。

var blob=new Blob([binary], {type : 'audio/ogg'});

3.现在将此 Blob 创建为 blob URL

var blobUrl = URL.createObjectURL(blob);

现在,只需将<source>src属性替换为此Blob URL即可。如果您已经拥有纯解码二进制文件,则只需执行第3步。

https://jsfiddle.net/sanddune/uubnnr0w/


在2022年夏季,我使用Vue3.0和Laravel Inertia完美地工作了。非常感谢! - James Stewart

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接