JSFiddle - React, Tailwind, and code Playground
by karthick6891
HTML
<!--watson test-->
Babel + JSX
async function wait(ms) { await new Promise(resolve => setTimeout(()=>resolve(), ms)); }
function getBrowser(){function getBrowserInner(){var tem,ua=navigator.userAgent,M=ua.match(/(opera|chrome|safari|firefox|msie|trident(?=\/))\/?\s*(\d+)/i)||[]
return/trident/i.test(M[1])?(tem=/\brv[ :]+(\d+)/g.exec(ua)||[],"IE "+(tem[1]||"")):"Chrome"===M[1]&&(tem=ua.match(/\b(OPR|Edge)\/(\d+)/),null!==tem)?tem.slice(1).join(" ").replace("OPR","Opera"):(M=M[2]?[M[1],M[2]]:[navigator.appName,navigator.appVersion,"-?"],null!==(tem=ua.match(/version\/(\d+)/i))&&M.splice(1,1,tem[1]),M.join(" "))}var name_version_str=getBrowserInner(),split=name_version_str.split(" "),version=split.pop(),name=split.join(" ")
return{name:name.toLowerCase(),nameproper:name,version:version}}
let browser = getBrowser().name;
let file_ext = browser === 'firefox' ? 'ogg' : 'webm';
let recorder;
let recorded_data = [];
let stream;
async function doRecord () {
stream = await navigator.mediaDevices.getUserMedia({ audio: true })
recorder = new MediaRecorder(stream, { mimeType: 'audio/' + file_ext + '; codecs=opus' });
recorder.addEventListener('error', function (event) {
console.log('Audio Recording error', event)
})
recorder.addEventListener('dataavailable', function (event) {
if (typeof event.data === 'undefined' || event.data.size === 0) return
recorded_data.push(event.data)
});
recorder.addEventListener('stop', getBluemixResults);
alert('ok will record for 5 seconds after you click ok');
recorder.start(10);
await wait(5000);
recorder.stop();
console.log('ok, recorder stopped');
}
async function getBluemixResults(event) {
var tracks = stream.getTracks()
tracks.forEach(function (track) { track.stop() });
let blob = new Blob(recorded_data, { type:'audio/'+file_ext });
let audio = document.createElement('audio');
let url = window.URL.createObjectURL(blob);
audio.src = url;
audio.controls = true;
...