UNPKG

@techteamer/janus-api

Version:
169 lines (135 loc) 4.26 kB
class JanusConfig { constructor (config) { const { url, keepAliveIntervalMs, options } = config this.url = url this.keepAliveIntervalMs = keepAliveIntervalMs this.options = options } } class JanusAdminConfig extends JanusConfig { constructor (config) { super(config) const { secret, sessionListIntervalMs } = config this.secret = secret this.sessionListIntervalMs = sessionListIntervalMs } } class JanusRoomConfig { constructor (config) { const { id, codec, record, videoOrientExt, bitrate, bitrateCap, firSeconds, publishers, recordDirectory, isPrivate, secret, pin, requirePvtid, audioCodec, vp9Profile, h264Profile, opusFec, videoSvc, audiolevelExt, audiolevelEvent, audioActivePackets, audioLevelAverage, playoutDelayExt, transportWideCcExt, lockRecord, notifyJoining, requireE2ee } = config this.id = id this.codec = codec this.record = record this.videoOrientExt = videoOrientExt this.bitrate = bitrate this.bitrateCap = bitrateCap this.firSeconds = firSeconds this.publishers = publishers this.recordDirectory = recordDirectory this.isPrivate = isPrivate this.secret = secret this.pin = pin this.requirePvtid = requirePvtid this.audioCodec = audioCodec this.vp9Profile = vp9Profile this.h264Profile = h264Profile this.opusFec = opusFec this.videoSvc = videoSvc this.audiolevelExt = audiolevelExt this.audiolevelEvent = audiolevelEvent this.audioActivePackets = audioActivePackets this.audioLevelAverage = audioLevelAverage this.playoutDelayExt = playoutDelayExt this.transportWideCcExt = transportWideCcExt this.lockRecord = lockRecord this.notifyJoining = notifyJoining this.requireE2ee = requireE2ee } toJanusConfig () { const body = { description: '' + this.id } if (this.isPrivate) { // default: false body.is_private = this.isPrivate } if (this.secret) { body.secret = this.secret } if (this.pin) { body.pin = this.pin } if (this.requirePvtid) { // default: false body.require_pvtid = this.requirePvtid } if (this.publishers) { body.publishers = this.publishers } if (this.bitrate) { body.bitrate = this.bitrate } if (this.bitrateCap) { // default: false body.bitrate_cap = this.bitrateCap } if (this.firSeconds) { body.fir_freq = this.firSeconds } if (this.audioCodec) { body.audiocodec = this.audioCodec } if (this.codec) { body.videocodec = this.codec } if (this.vp9Profile) { body.vp9_profile = this.vp9Profile } if (this.h264Profile) { body.h264_profile = this.h264Profile } if (this.opusFec) { // default: false body.opus_fec = this.opusFec } if (this.videoSvc) { // default: false body.video_svc = this.videoSvc } if (this.audiolevelExt !== undefined) { // default: true body.audiolevel_ext = this.audiolevelExt } if (this.audiolevelEvent) { // default: false body.audiolevel_event = this.audiolevelEvent } if (this.audioActivePackets) { body.audio_active_packets = this.audioActivePackets } if (this.audioLevelAverage) { body.audio_level_average = this.audioLevelAverage } if (this.videoOrientExt !== undefined) { // default: true body.videoorient_ext = this.videoOrientExt } if (this.playoutDelayExt !== undefined) { // default: true body.playoutdelay_ext = this.playoutDelayExt } if (this.transportWideCcExt !== undefined) { // default: true body.transport_wide_cc_ext = this.transportWideCcExt } if (this.record) { // default: false body.record = this.record } if (this.recordDirectory) { body.rec_dir = this.recordDirectory } if (this.lockRecord) { // default: false body.lock_record = this.lockRecord } if (this.notifyJoining) { // default: false body.notify_joining = this.notifyJoining } if (this.requireE2ee) { // default: false body.require_e2ee = this.requireE2ee } return body } } export { JanusConfig } export { JanusAdminConfig } export { JanusRoomConfig }