Update RecortRTC + use StereoAudioRecorder for Safari

pull/3711/head
Angel Fernando Quiroz Campos 5 years ago
parent 545cb6b15a
commit c52b41287e
  1. 20
      main/inc/lib/javascript/record_audio/record_audio.js
  2. 298
      main/inc/lib/javascript/rtc/RecordRTC.js
  3. 27
      main/template/default/learnpath/record_voice.tpl
  4. 25
      plugin/whispeakauth/assets/js/RecordAudio.js

@ -1,6 +1,8 @@
/* For licensing terms, see /license.txt */ /* For licensing terms, see /license.txt */
window.RecordAudio = (function () { window.RecordAudio = (function () {
var isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);
function startTimer() { function startTimer() {
$("#timer").show(); $("#timer").show();
var timerData = { var timerData = {
@ -120,13 +122,11 @@ window.RecordAudio = (function () {
} }
} }
navigator.getUserMedia = navigator.getUserMedia || navigator.mozGetUserMedia || navigator.webkitGetUserMedia;
function successCallback(stream) { function successCallback(stream) {
stopTimer(); stopTimer();
startTimer(); startTimer();
recordRTC = RecordRTC(stream, { recordRTC = RecordRTC(stream, {
numberOfAudioChannels: 1, recorderType: isSafari ? RecordRTC.StereoAudioRecorder : RecordRTC.MediaStreamRecorder,
type: 'audio' type: 'audio'
}); });
recordRTC.startRecording(); recordRTC.startRecording();
@ -143,16 +143,18 @@ window.RecordAudio = (function () {
function errorCallback(error) { function errorCallback(error) {
stopTimer(); stopTimer();
alert(error.message); 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); navigator.getUserMedia(mediaConstraints, successCallback, errorCallback);
} else if (navigator.mediaDevices.getUserMedia) { return;
navigator.mediaDevices.getUserMedia(mediaConstraints)
.then(successCallback)
.error(errorCallback);
} }
navigator.mediaDevices.getUserMedia(mediaConstraints)
.then(successCallback)
.catch(errorCallback);
}); });
btnPause.on('click', function () { btnPause.on('click', function () {

File diff suppressed because one or more lines are too long

@ -31,6 +31,8 @@
<script> <script>
$(function() { $(function() {
var isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);
function startTimer() { function startTimer() {
$("#timer").show(); $("#timer").show();
var timerData = { var timerData = {
@ -87,22 +89,11 @@
return false; return false;
} }
navigator.getUserMedia = navigator.getUserMedia ||
navigator.mozGetUserMedia ||
navigator.webkitGetUserMedia;
if (navigator.getUserMedia) {
navigator.getUserMedia(mediaConstraints, successCallback, errorCallback);
} else if (navigator.mediaDevices.getUserMedia) {
navigator.mediaDevices.getUserMedia(mediaConstraints)
.then(successCallback).error(errorCallback);
}
function successCallback(stream) { function successCallback(stream) {
stopTimer(); stopTimer();
startTimer(); startTimer();
recordRTC = RecordRTC(stream, { recordRTC = RecordRTC(stream, {
numberOfAudioChannels: 1, recorderType: isSafari ? RecordRTC.StereoAudioRecorder : RecordRTC.MediaStreamRecorder,
type: 'audio' type: 'audio'
}); });
recordRTC.startRecording(); recordRTC.startRecording();
@ -113,8 +104,18 @@
function errorCallback(error) { function errorCallback(error) {
stopTimer(); stopTimer();
alert(error.message); 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 () { btnStop.on('click', function () {

@ -2,7 +2,8 @@
window.RecordAudio = (function () { window.RecordAudio = (function () {
var timerInterval = 0, var timerInterval = 0,
$txtTimer = null; $txtTimer = null,
isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);
function startTimer() { function startTimer() {
stopTimer(); stopTimer();
@ -47,7 +48,6 @@ window.RecordAudio = (function () {
} }
} }
function useRecordRTC(rtcInfo) { function useRecordRTC(rtcInfo) {
$(rtcInfo.blockId).show(); $(rtcInfo.blockId).show();
@ -123,8 +123,7 @@ window.RecordAudio = (function () {
localStream = stream; localStream = stream;
recordRTC = RecordRTC(stream, { recordRTC = RecordRTC(stream, {
recorderType: StereoAudioRecorder, recorderType: isSafari ? RecordRTC.StereoAudioRecorder : RecordRTC.MediaStreamRecorder,
numberOfAudioChannels: 1,
type: 'audio' type: 'audio'
}); });
recordRTC.startRecording(); recordRTC.startRecording();
@ -139,22 +138,18 @@ window.RecordAudio = (function () {
} }
function errorCallback(error) { function errorCallback(error) {
alert(error.message); alert(error);
} }
if (navigator.mediaDevices.getUserMedia) { if(!!(navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia)) {
navigator.mediaDevices.getUserMedia(mediaConstraints) navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia;
.then(successCallback) navigator.getUserMedia(mediaConstraints, successCallback, errorCallback);
.catch(errorCallback);
return; return;
} }
navigator.getUserMedia = navigator.getUserMedia || navigator.mozGetUserMedia || navigator.webkitGetUserMedia; navigator.mediaDevices.getUserMedia(mediaConstraints)
.then(successCallback)
if (navigator.getUserMedia) { .catch(errorCallback);
navigator.getUserMedia(mediaConstraints, successCallback, errorCallback);
}
}); });
btnStop.on('click', function () { btnStop.on('click', function () {

Loading…
Cancel
Save