var startRecord = function(cb){
var int;
navigator.mediaDevices.getUserMedia({ audio: true , video:false}).then(function(stream){
var options = {
audioBitsPerSecond : 128000,
videoBitsPerSecond : 2500000,
mimeType : 'audio/webm'
}
if(!MediaRecorder.isTypeSupported(options['mimeType'])) options['mimeType'] = "audio/webm";
window.voice = new MediaRecorder(stream, options);
voice.start();
voice.ondataavailable = function(data){
var reader = new FileReader();
var blob = data.data;
console.log(URL.createObjectURL(blob));
reader.readAsDataURL(blob);
reader.onloadend = function () {
var result = reader.result;
cb(result);
}
};
voice.onstop = function(){
console.log('stop audio call');
clearInterval(int);
}
int = setInterval(function() {
if(voice.state!='inactive') voice.requestData();
}, 500);
});
}
function convertDataURIToBinary(dataURI) {
var BASE64_MARKER = ';base64,';
var base64Index = dataURI.indexOf(BASE64_MARKER) + BASE64_MARKER.length;
var base64 = dataURI.substring(base64Index);
var raw = window.atob(base64);
var rawLength = raw.length;
var array = new Uint8Array(new ArrayBuffer(rawLength));
for(i = 0; i < rawLength; i++) {
array[i] = raw.charCodeAt(i);
}
return array;
}
Данный код возвращает в каллбэке base64 аудио, но когда я из этого base64 делаю blob, аудио не воспроизводится.
var binary= convertDataURIToBinary(data);
var blob=new Blob([binary], {type : 'audio/webm'});
var blobUrl = URL.createObjectURL(blob);
console.log('URL : ' + blobUrl);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости