Как воспроизводить аудиоданные base64 в firefox с помощью HTML5?
Я пытаюсь кодировать mp3-файл в формате base64. Тогда сыграй через броузер. Он отлично работает на safari и chrome, но не на Firefox.
У меня вопрос " есть ли способ заставить firefox воспроизводить аудиофайл в формате base64/ binary string?"
ps: Я знаю, что firefox не может воспроизводить mp3, поэтому я пробовал другие аудиофайлы, такие как wav, ogg... Ни один из них не работает на Firefox после того, как я закодировал их в base64. Пожалуйста помогите!--4-->
<body>
<div>
<form>
Select a file: <input type="file" name="img" id="myaudio"/>
</form>
</div>
<div id="click">
<span>click</span>
</div>
<div id="body">
<audio controls="controls" autobuffer="autobuffer" autoplay="autoplay">
</audio>
</div>
<script type="text/javascript">
$(document).ready(function(){
$("#click").click(function(){
var audio = $("input[type='file']").get(0).files[0];
readFile(audio, function(e) {
var result = e.target.result; *// here I get a binary string of my original audio file*
encodedData = btoa(result); *// encode it to base64*
$("audio").html("<source src="data:audio/mp3;base64,"+encodedData+""/>"); *//add the source to audio*
});
});
});
function readFile(file, onLoadCallback){
var reader = new FileReader();
reader.onload = onLoadCallback;
reader.readAsBinaryString(file);
}
</script>
</body>
1 ответов
вместо readAsBinaryString
затем кодирования base64.
использовать readAsDataURL
что дает вам полный URI данных.
<script type="text/javascript">
$(document).ready(function(){
$("#click").click(function(){
var audio = $("input[type='file']").get(0).files[0];
readFile(audio, function(e) {
var result = e.target.result; *// here I get a binary string of my original audio file*
//encodedData = btoa(result); *// encode it to base64*
$("audio").html("<source src=\""+result+"\"/>"); *//add the source to audio*
});
});
});
function readFile(file, onLoadCallback){
var reader = new FileReader();
reader.onload = onLoadCallback;
reader.readAsDataURL(file);
}
</script>