是否可以将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.....";
Run Code Online (Sandbox Code Playgroud)
我可以将wavString转换为html5音频对象,如果我播放声音,我可以听到wav声音:
var wave = new Audio('data:audio/wav;base64,' + btoa(wavString));
wave.controls = true;
document.body.appendChild(wave);
Run Code Online (Sandbox Code Playgroud)
但是我不能从它创建一个wav blob,这是我没有运气的尝试:(我尝试了所有类型和blob变量的组合):
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});
Run Code Online (Sandbox Code Playgroud)
这些都不起作用:它们创建blob,但我无法将它们保存到服务器并将它们作为wav文件来监听.我想要做的是创建一个blob,我可以将其作为wav文件导出到服务器.实际上我可以将有效的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"});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2655 次 |
| 最近记录: |