html5-audio之wav 字符串到 Html5 blob

java哥 阅读:67 2024-08-20 17:24:36 评论:0

是否可以将 wav 字符串转换为 html5 blob?

(我不是在寻找跨浏览器兼容的解决方案,我只需要它在 Chrome 中工作)。

wavString = "RIFF  WAVEfmt D¬Xdata ¦®µ¼ÃÊÐÖÜáæêïòõøúüýþþþþüûøöóïëçâÜ×ÑËĽ¶¯§ xph`YQJC<5/~)~#~~~~~~  ~~~~~~~~~~~~~~~~~~!~'~,~3~9~@~GNV^emu}¥¬´»ÂÈÏÕÛàåéîñõøúüýþþþþýûùöóðìèãÞØÒÌÅ¿¸°©¡zrjb~Z~S~K~D~=~6~0~*~$}}}}} 
}.....a lot of ugly chars....."; 

我可以将 wavString 转换为 html5 音频对象,如果我播放声音,我可以听到 wav 声音:

var wave = new Audio('data:audio/wav;base64,' + btoa(wavString)); 
wave.controls = true; 
document.body.appendChild(wave); 

但我无法从中创建一个 wav blob,这是我尝试但没有运气的方法: (我尝试了 type 和 blob vars 的所有组合):

var type = "audio/x-wav"; 
var type = "application/octet-stream"; 
 
 
var blob = new Blob([btoa(wavString)], {type: type}); 
var blob = new Blob(['data:audio/wav;base64,' + btoa(wavString)], {type: type}); 
var blob = new Blob([wavString], {type: type}); 

这些都不起作用:它们创建 blob,但我无法将它们保存到服务器并将它们作为 wav 文件收听。 我想要做的是创建一个可以作为 wav 文件导出到服务器的 blob。 实际上我可以将一个有效的 wav blob 导出到服务器,问题在于将这个 wavString 转换为一个有效的 wav blob。

请您参考如下方法:

创建 ArrayBuffer 可能会起作用。

var wavString = "RIFF  WAVEfmt.....a lot of ugly chars....."; 
var len = wavString.length; 
var buf = new ArrayBuffer(len); 
var view = new Uint8Array(buf); 
for (var i = 0; i < len; i++) { 
  view[i] = wavString.charCodeAt(i) & 0xff; 
} 
var blob = new Blob([view], {type: "audio/x-wav"}); 


标签:HTML5
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

关注我们

一个IT知识分享的公众号