Задать вопрос
@Deefs

Запись начинается не так как надо?

Добрый день , при нажатии на кнопку onclick='audioRecorder.open(this) спрашивает разрешение на микрофон и при нажатии на разрешить запись сразу стартует , при этом когда нажимаешь виднеется мельком кнопка (в виде rec) как сделать чтобы при нажатии спрашивало разрешение и после нажатия на другую кнопку допустим (rec) запись уже стартовала

<div class='audioRecorder' status=''>
					<i style="font-size: 20px;
    margin-left: 5px;
    color: #9d9d9d;"class="material-icons" onclick='audioRecorder.open(this);' >mic</i>
					<audio></audio>
					<div class='controlPanelWrapper'>
						<table cellpadding='0' cellspacing='0' class='controlPanel'>
							<tr>
								<td class='mainbtnContainer'><div class='mainbtn' onclick='audioRecorder.start(this);'></div></td>
								<td class='progressContainer'>
									<div class='progressBlock'><div class='progressWrapper' onclick='audioRecorder.time(this,event);'><div class='progressBar'></div></div></div>
								</td>
                <td class='durationContainer'><div class='duration'>0:00</div></td>
                <td class='resetContainer' onclick='audioRecorder.reset(this);'><div class='reset'></div></td>              
                <td class='sendContainer' onclick='audioRecorder.send(this);' post-id="<?php echo $wo['story']['id']; ?>" user-id="<?php echo $wo['story']['publisher']['user_id']; ?>" page-id="<?php echo (!empty($wo['story']['publisher']['page_id'])) ? $wo['story']['publisher']['page_id'] : '0'; ?>"><div class='send'></div></td>
              </tr>
            </table>
          </div>

JS
audioRecorder.start=function(el){
	var audioRecorderElem=$(el).parents('.audioRecorder');
	var status=audioRecorderElem.attr('status');
	if(status=='record'){
		audioRecorder.stop(el);		
	}
	else if(status=='stop'){
		audioRecorder.play(el);	
	}
	else if(status=='pause'){
		audioRecorder.play(el);
	}
	else if(status=='play'){	
		audioRecorder.pause(el);
	}
	else{
		audioRecorder.record(el);
	}
};
audioRecorder.record=function(el){
	var audioRecorderElem=$(el).parents('.audioRecorder');
	try{
		window.AudioContext = window.AudioContext || window.webkitAudioContext;
		navigator.getUserMedia=navigator.getUserMedia||navigator.webkitGetUserMedia||navigator.mozGetUserMedia||navigator.msGetUserMedia;
		window.URL=window.URL||window.webkitURL;
		audioRecorder.context=new AudioContext;
	}catch(e){
		alert('Ваш браузер не поддерживает веб аудио!');
		return false;
	}
	navigator.getUserMedia({audio:1},function(stream){
		audioRecorder.localStream=stream;
		var input=audioRecorder.context.createMediaStreamSource(stream);
		audioRecorder.recorder=new Recorder(input);
		audioRecorder.recorder.record();
		audioRecorder.startRecordTime(el);
		audioRecorderElem.attr({'status':'record'});
	},function(err){});	
};
audioRecorder.stop=function(el){
	var audioRecorderElem=$(el).parents('.audioRecorder');
	audioRecorderElem.attr({'status':'stop'});
	audioRecorder.recorder.stop();
	audioRecorder.stopRecordTime(el);
	audioRecorder.recorder.exportWAV(function(blob) {
		audioRecorder.blob=blob;
		var url=URL.createObjectURL(blob);
		audioRecorder.player=audioRecorderElem.find('audio')[0];
			audioRecorder.player.addEventListener('timeupdate',function(){
			var duration=audioRecorder.player.duration;
			var current=audioRecorder.player.currentTime;
			var r=(current*100)/duration;
			$('.audioRecorder .progressBar').css({'width':r+'%'});
			time=audioRecorder.secondsToTime(current);
			$('.audioRecorder .duration').text(time);
			if(duration==current){
				$('.audioRecorder').attr({'status':'stop'});
			}
		});				
		audioRecorder.player.src=url;
		audioRecorder.recorder.clear();
		audioRecorder.removeMicrophone();
	});	
};
audioRecorder.play=function(el){
	var audioRecorderElem=$(el).parents('.audioRecorder');
	audioRecorder.player.play();
	audioRecorderElem.attr({'status':'play'});	
};
audioRecorder.pause=function(el){
	var audioRecorderElem=$(el).parents('.audioRecorder');
	audioRecorder.player.pause();
	audioRecorderElem.attr({'status':'pause'});		
};
audioRecorder.startRecordTime=function(el){
	var audioRecorderElem=$(el).parents('.audioRecorder');
	var durElem=audioRecorderElem.find('.duration');
	var ft=new Date().getTime();
	audioRecorder.idInt=setInterval(function(){
		var current=Math.floor((new Date().getTime()-ft)/1000);
		if(current>=15){audioRecorder.stop(el);audioRecorder.stopRecordTime();}
		var time=audioRecorder.secondsToTime(current);
		durElem.text(time);
	},500);

};
audioRecorder.stopRecordTime=function(el){
	clearInterval(audioRecorder.idInt);
};
audioRecorder.removeMicrophone=function(){
	try{
		audioRecorder.localStream.getTracks()[0].stop();
	}catch(e){}
};
audioRecorder.reset=function(el){
	var audioRecorderElem=$(el).parents('.audioRecorder');
	audioRecorder.removeMicrophone();
	audioRecorder.stopRecordTime();
	audioRecorderElem.removeAttr('status');
	if(audioRecorder.player){
		audioRecorder.player.currentTime=0;
		audioRecorder.player.src='';
	}
	audioRecorderElem.find('.progressBar').css({'width':'0%'});
	audioRecorder.hide(el);
	try{audioRecorder.recorder.clear();}catch(e){}
};
audioRecorder.open=function(el){
 var audioRecorderElem=$(el).parents('.audioRecorder');
 audioRecorderElem.find('.controlPanelWrapper').show(400,function(){
  audioRecorder.record(el);
 });
};
audioRecorder.hide=function(el){
	var audioRecorderElem=$(el).parents('.audioRecorder');
	audioRecorderElem.find('.controlPanelWrapper').hide(400,function(){
		
	});
};
  • Вопрос задан
  • 186 просмотров
Подписаться 1 Оценить Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы