Angel Fernando Quiroz Campos 5 years ago committed by NicoDucou
parent 18f535c936
commit 58ae78daf1
  1. 59
      main/inc/lib/javascript/record_audio/record_audio.js
  2. 298
      main/inc/lib/javascript/rtc/RecordRTC.js
  3. 68
      main/template/default/learnpath/record_voice.tpl
  4. 68
      plugin/whispeakauth/assets/js/RecordAudio.js

@ -1,5 +1,47 @@
/* For licensing terms, see /license.txt */
window.RecordAudio = (function () {
var isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);
function startTimer() {
$("#timer").show();
var timerData = {
hour: parseInt($("#hour").text()),
minute: parseInt($("#minute").text()),
second: parseInt($("#second").text())
};
clearInterval(window.timerInterval);
window.timerInterval = setInterval(function(){
// Seconds
timerData.second++;
if (timerData.second >= 60) {
timerData.second = 0;
timerData.minute++;
}
// Minutes
if (timerData.minute >= 60) {
timerData.minute = 0;
timerData.hour++;
}
$("#hour").text(timerData.hour < 10 ? '0' + timerData.hour : timerData.hour);
$("#minute").text(timerData.minute < 10 ? '0' + timerData.minute : timerData.minute);
$("#second").text(timerData.second < 10 ? '0' + timerData.second : timerData.second);
}, 1000);
}
function stopTimer() {
$("#hour").text('00');
$("#minute").text('00');
$("#second").text('00');
$("#timer").hide();
}
function pauseTimer() {
clearInterval(window.timerInterval);
}
function useRecordRTC(rtcInfo, fileName) {
$(rtcInfo.blockId).show();
@ -74,11 +116,9 @@ window.RecordAudio = (function () {
}
}
navigator.getUserMedia = navigator.getUserMedia || navigator.mozGetUserMedia || navigator.webkitGetUserMedia;
function successCallback(stream) {
recordRTC = RecordRTC(stream, {
numberOfAudioChannels: 1,
recorderType: isSafari ? RecordRTC.StereoAudioRecorder : RecordRTC.MediaStreamRecorder,
type: 'audio'
});
recordRTC.startRecording();
@ -94,16 +134,19 @@ window.RecordAudio = (function () {
}
function errorCallback(error) {
alert(error.message);
stopTimer();
alert(error);
}
if (navigator.getUserMedia) {
if(!!(navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia)) {
navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia;
navigator.getUserMedia(mediaConstraints, successCallback, errorCallback);
} else if (navigator.mediaDevices.getUserMedia) {
return;
}
navigator.mediaDevices.getUserMedia(mediaConstraints)
.then(successCallback)
.error(errorCallback);
}
.catch(errorCallback);
});
btnPause.on('click', function () {

File diff suppressed because one or more lines are too long

@ -15,6 +15,48 @@
<script>
$(function() {
var isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);
function startTimer() {
$("#timer").show();
var timerData = {
hour: parseInt($("#hour").text()),
minute: parseInt($("#minute").text()),
second: parseInt($("#second").text())
};
clearInterval(window.timerInterval);
window.timerInterval = setInterval(function(){
// Seconds
timerData.second++;
if (timerData.second >= 60) {
timerData.second = 0;
timerData.minute++;
}
// Minutes
if (timerData.minute >= 60) {
timerData.minute = 0;
timerData.hour++;
}
$("#hour").text(timerData.hour < 10 ? '0' + timerData.hour : timerData.hour);
$("#minute").text(timerData.minute < 10 ? '0' + timerData.minute : timerData.minute);
$("#second").text(timerData.second < 10 ? '0' + timerData.second : timerData.second);
}, 1000);
}
function stopTimer() {
$("#hour").text('00');
$("#minute").text('00');
$("#second").text('00');
$("#timer").hide();
}
function pauseTimer() {
clearInterval(window.timerInterval);
}
function useRecordRTC(){
$('#record-audio-recordrtc').show();
@ -24,20 +66,15 @@
btnStop = $('#btn-stop-record');
btnStart.on('click', function () {
navigator.getUserMedia = navigator.getUserMedia ||
navigator.mozGetUserMedia ||
navigator.webkitGetUserMedia;
if ('' === audioTitle.val()) {
alert('{{ 'TitleIsRequired'|get_lang | escape }} ');
if (navigator.getUserMedia) {
navigator.getUserMedia(mediaConstraints, successCallback, errorCallback);
} else if (navigator.mediaDevices.getUserMedia) {
navigator.mediaDevices.getUserMedia(mediaConstraints)
.then(successCallback).error(errorCallback);
return false;
}
function successCallback(stream) {
recordRTC = RecordRTC(stream, {
numberOfAudioChannels: 1,
recorderType: isSafari ? RecordRTC.StereoAudioRecorder : RecordRTC.MediaStreamRecorder,
type: 'audio'
});
recordRTC.startRecording();
@ -47,8 +84,19 @@
}
function errorCallback(error) {
alert(error.message);
stopTimer();
alert(error);
}
if(!!(navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia)) {
navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia;
navigator.getUserMedia(mediaConstraints, successCallback, errorCallback);
return;
}
navigator.mediaDevices.getUserMedia(mediaConstraints)
.then(successCallback)
.catch(errorCallback);
});
btnStop.on('click', function () {

@ -1,6 +1,53 @@
/* For licensing terms, see /license.txt */
window.RecordAudio = (function () {
var timerInterval = 0,
$txtTimer = null,
isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);
function startTimer() {
stopTimer();
$txtTimer = $('#txt-timer');
$txtTimer.text('00:00').css('visibility', 'visible');
var timerData = {
hour: 0,
minute: 0,
second: 0
};
timerInterval = setInterval(function(){
timerData.second++;
if (timerData.second >= 60) {
timerData.second = 0;
timerData.minute++;
}
$txtTimer.text(
function () {
var txtSeconds = timerData.minute < 10 ? '0' + timerData.minute : timerData.minute,
txtMinutes = timerData.second < 10 ? '0' + timerData.second : timerData.second;
return txtSeconds + ':' + txtMinutes;
}
);
}, 1000);
}
function stopTimer() {
if (timerInterval) {
clearInterval(timerInterval);
}
if ($txtTimer) {
$txtTimer.css('visibility', 'hidden');
}
}
function useRecordRTC(rtcInfo) {
$(rtcInfo.blockId).show();
@ -60,8 +107,7 @@ window.RecordAudio = (function () {
localStream = stream;
recordRTC = RecordRTC(stream, {
recorderType: StereoAudioRecorder,
numberOfAudioChannels: 1,
recorderType: isSafari ? RecordRTC.StereoAudioRecorder : RecordRTC.MediaStreamRecorder,
type: 'audio'
});
recordRTC.startRecording();
@ -73,22 +119,18 @@ window.RecordAudio = (function () {
}
function errorCallback(error) {
alert(error.message);
alert(error);
}
if (navigator.mediaDevices.getUserMedia) {
navigator.mediaDevices.getUserMedia(mediaConstraints)
.then(successCallback)
.catch(errorCallback);
if(!!(navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia)) {
navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia;
navigator.getUserMedia(mediaConstraints, successCallback, errorCallback);
return;
}
navigator.getUserMedia = navigator.getUserMedia || navigator.mozGetUserMedia || navigator.webkitGetUserMedia;
if (navigator.getUserMedia) {
navigator.getUserMedia(mediaConstraints, successCallback, errorCallback);
}
navigator.mediaDevices.getUserMedia(mediaConstraints)
.then(successCallback)
.catch(errorCallback);
});
btnStop.on('click', function () {

Loading…
Cancel
Save