UNPKG

stalk-js-webrtc

Version:

S-Talk web-rtc javascript client implementation.

50 lines (49 loc) 1.95 kB
import AudioCtx from './audioCtx'; // implement from mediastream-gain lib var AudioController = /** @class */ (function () { function AudioController(stream) { // webrtcsupport lib this.support = (!!(AudioContext && AudioContext.prototype.createMediaStreamSource) && !!(MediaStream && MediaStream.prototype.removeTrack)); this.volume = 1; if (this.support) { // var context = this.context = AudioCtx.getInstance(); var context = AudioCtx.getInstance(); this.microphone = context.createMediaStreamSource(stream); this.gainFilter = context.createGain(); var destination = context.createMediaStreamDestination(); var outputStream = destination.stream; this.microphone.connect(this.gainFilter); this.gainFilter.connect(destination); stream.addTrack(outputStream.getAudioTracks()[0]); this.audioSource = stream.getAudioTracks()[0]; stream.removeTrack(this.audioSource); } else { console.log("Browser doesn't support adjust local microphone volume"); } } AudioController.prototype.setVolume = function (volume) { if (!this.support) return; this.gainFilter.gain.value = volume; this.volume = volume; }; AudioController.prototype.getVolume = function () { return this.volume; }; AudioController.prototype.mute = function () { this.setVolume(0); }; AudioController.prototype.unMute = function () { this.setVolume(1); }; AudioController.prototype.removeAudioStream = function () { !!this.audioSource && this.audioSource.stop(); !!this.microphone && this.microphone.disconnect(); !!this.gainFilter && this.gainFilter.disconnect(); }; return AudioController; }()); export { AudioController };