fix: Support audio in safari browser (#5943)

This commit is contained in:
Muhsin Keloth 2022-12-05 12:30:56 +05:30 committed by GitHub
parent 613fb0b064
commit c9cae01cb4
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 40 additions and 8 deletions

View file

@ -23,6 +23,7 @@ import 'videojs-wavesurfer/dist/videojs.wavesurfer.js';
import 'videojs-record/dist/videojs.record.js';
import 'videojs-record/dist/plugins/videojs.record.opus-recorder.js';
import { format, addSeconds } from 'date-fns';
import { AUDIO_FORMATS } from 'shared/constants/messages';
WaveSurfer.microphone = MicrophonePlugin;
@ -70,6 +71,18 @@ export default {
record: {
audio: true,
video: false,
...(this.audioRecordFormat === AUDIO_FORMATS.WEBM && {
monitorGain: 0,
recordingGain: 1,
numberOfChannels: 1,
encoderSampleRate: 16000,
originalSampleRateOverride: 16000,
streamPages: true,
maxFramesPerPage: 1,
encoderFrameSize: 1,
encoderPath: 'opus-recorder/dist/waveWorker.min.js',
}),
...(this.audioRecordFormat === AUDIO_FORMATS.OGG && {
displayMilliseconds: false,
maxLength: 300,
audioEngine: 'opus-recorder',
@ -77,6 +90,7 @@ export default {
audioChannels: 1,
audioSampleRate: 48000,
audioBitRate: 128,
}),
},
},
},
@ -86,6 +100,12 @@ export default {
isRecording() {
return this.player && this.player.record().isRecording();
},
audioRecordFormat() {
if (this.isAWebWidgetInbox) {
return AUDIO_FORMATS.WEBM;
}
return AUDIO_FORMATS.OGG;
},
},
mounted() {
window.Recorder = Recorder;

View file

@ -232,11 +232,18 @@ export default {
return this.showFileUpload || this.isNote;
},
showAudioRecorderButton() {
// Disable audio recorder for safari browser as recording is not supported
const isSafari = /^((?!chrome|android|crios|fxios).)*safari/i.test(
navigator.userAgent
);
return (
this.isFeatureEnabledonAccount(
this.accountId,
FEATURE_FLAGS.VOICE_RECORDER
) && this.showAudioRecorder
) &&
this.showAudioRecorder &&
!isSafari
);
},
showAudioPlayStopButton() {

View file

@ -72,3 +72,8 @@ export const CSAT_RATINGS = [
color: '#44CE4B',
},
];
export const AUDIO_FORMATS = {
WEBM: 'audio/webm',
OGG: 'audio/ogg',
};