我正在製作一個簡單的網絡應用程序,需要播放一些音頻文件,使用howler.js。 howler.js接受base64 URI作爲輸入,所以我想嘗試一下。爲了測試它,我拿了一個示例音頻文件,並使用在線audio-to-base64 encoder獲取base64 URI。我添加的數據描述(「數據:音頻/ WAV; BASE64」)以base64字符串的前面,複製並粘貼到下面的JS函數...:爲什麼使用python和在線webapp將wav文件編碼爲base64會給出不同的結果?
function playSound() {
var data = "";
var sound = new Howl({
src: [data],
loop: false
});
sound.play();
}
...它完美地工作。由於我會處理相當數量的音頻文件,我想我會使用一個簡短的python腳本將它們全部轉換爲base64。爲了測試,我轉換相同的音頻到Base64字符串以下Python代碼:
import base64
with open("0.wav", "rb") as f1,open("b64.txt", "w") as f2:
encoded_f1 = base64.b64encode(f1.read())
f2.write("data:audio/wav;base64,")
f2.write(str(encoded_f1))
我注意到的base64字符串是不同的前一個我從網站早點起牀。我粘貼到這一點前面所示的JS功能,但是當我試圖播放的聲音,我得到以下錯誤:
Uncaught DOMException: Failed to execute 'atob' on 'Window': The string to be decoded is not correctly encoded.
似乎有某種的方式蟒蛇不同的是編碼爲base64。這可能是什麼原因?
atob()'叫什麼? – guest271314
它被稱爲howler.js代碼本身。看看這裏:https://github.com/goldfire/howler.js/blob/master/dist/howler.core.min.js(代碼是在一行,但CTRL + F會告訴你在哪裏'atob()'被調用)。 –
你可以創建一個jsfiddle https://jsfiddle.net或者plnkr https://plnkr.co,包括在'python'創建的'data URI'嗎? – guest271314