我正在制作一个简单的web应用程序,它需要播放一些音频文件,使用howler.js。豪勒.js接受base64uri作为输入,所以我想尝试一下。为了测试它,我获取了一个示例音频文件,并使用一个联机的audio-to-base64 encoder来获取base64 URI。我添加了数据描述(“数据:音频/wav;base64,“)base64字符串的前面,并复制并粘贴到下面的JS函数中…:
function playSound() {
var data = "";
var sound = new Howl({
src: [data],
loop: false
});
sound.play();
}
…而且效果很好。因为我要处理大量的音频文件,所以我想用一个简短的python脚本将它们全部转换为base64。为了测试,我使用以下python代码将同一音频转换为base64字符串:
^{pr2}$我注意到base64的字符串和我之前从网站上得到的不同。我把它粘贴到前面显示的JS函数中,但是当我尝试播放声音时,我得到以下错误:
Uncaught DOMException: Failed to execute 'atob' on 'Window': The string to be decoded is not correctly encoded.
python编码到base64的方式似乎有些不同。这是什么原因?在
过了一段时间,问题就显而易见了。这只是我在OP(第二个块)中提到的用于将base64编码写入文件的代码块的问题。在
base64.b64encode(f1.read())
返回一个位字符串,在Python中,用以下符号表示(即,当您打印/编写它时,您会看到它是这样的):b'string goes here'
。所以问题是b' '
被包装在我实际的base64字符串中,我正在使用它。我所要做的就是去掉b' '
,这是我通过将位字符串转换成ASCII来完成的:str(encoded_f1,'ascii', 'ignore')
。在真是愚蠢的错误,但希望能帮到别人。在
相关问题 更多 >
编程相关推荐