UNPKG

@vikasietum_tecknology/record-rtc

Version:

record-rtc is a library based on recordrtc library. In this forked version of the original library we have optimized the memory management. The video recording is stored in IndexDB in chunks.

91 lines (82 loc) 3.17 kB
// __________________________ // RecordRTC-Configuration.js /** * {@link RecordRTCConfiguration} is an inner/private helper for {@link RecordRTC}. * @summary It configures the 2nd parameter passed over {@link RecordRTC} and returns a valid "config" object. * @license {@link https://github.com/muaz-khan/RecordRTC/blob/master/LICENSE|MIT} * @author {@link https://MuazKhan.com|Muaz Khan} * @typedef RecordRTCConfiguration * @class * @example * var options = RecordRTCConfiguration(mediaStream, options); * @see {@link https://github.com/muaz-khan/RecordRTC|RecordRTC Source Code} * @param {MediaStream} mediaStream - MediaStream object fetched using getUserMedia API or generated using captureStreamUntilEnded or WebAudio API. * @param {object} config - {type:"video", disableLogs: true, numberOfAudioChannels: 1, bufferSize: 0, sampleRate: 0, video: HTMLVideoElement, getNativeBlob:true, etc.} */ function RecordRTCConfiguration(mediaStream, config) { if (!config.recorderType && !config.type) { if (!!config.audio && !!config.video) { config.type = "video"; } else if (!!config.audio && !config.video) { config.type = "audio"; } } if (config.recorderType && !config.type) { if ( config.recorderType === WhammyRecorder || config.recorderType === CanvasRecorder || (typeof WebAssemblyRecorder !== "undefined" && config.recorderType === WebAssemblyRecorder) ) { config.type = "video"; } else if (config.recorderType === GifRecorder) { config.type = "gif"; } else if (config.recorderType === StereoAudioRecorder) { config.type = "audio"; } else if (config.recorderType === MediaStreamRecorder) { if ( getTracks(mediaStream, "audio").length && getTracks(mediaStream, "video").length ) { config.type = "video"; } else if ( !getTracks(mediaStream, "audio").length && getTracks(mediaStream, "video").length ) { config.type = "video"; } else if ( getTracks(mediaStream, "audio").length && !getTracks(mediaStream, "video").length ) { config.type = "audio"; } else { // config.type = 'UnKnown'; } } } if ( typeof MediaStreamRecorder !== "undefined" && typeof MediaRecorder !== "undefined" && "requestData" in MediaRecorder.prototype ) { if (!config.mimeType) { config.mimeType = "video/webm"; } if (!config.type) { config.type = config.mimeType.split("/")[0]; } if (!config.bitsPerSecond) { // config.bitsPerSecond = 128000; } } // consider default type=audio if (!config.type) { if (config.mimeType) { config.type = config.mimeType.split("/")[0]; } if (!config.type) { config.type = "audio"; } } return config; }