LiveGBS GB28181監控平臺中語音對講 瀏覽器採集音訊傳送給攝像頭的前端實現
阿新 • • 發佈:2020-11-03
背景分析
近年來,國內視訊監控應用發展迅猛,系統接入規模不斷擴大,湧現了大量平臺提供商,平臺提供商的接入協議各不相同,終端製造商需要給每款終端維護提供各種不同平臺的軟體版本,造成了極大的資源浪費。各地視訊大規模建設後,省級、國家級集中調閱,對重特大事件通過視訊掌握現場並進行指揮排程的需求逐步湧現,然而不同平臺間缺乏統一的互通協議。在這樣的產業背景下,基於終端標準化、平臺互聯互通的需求,GB/T28181應運而生。
如下瀏覽器採集音訊原始碼摘自LiveGBS GB28181流媒體平臺的前端web原始碼:
https://github.com/livegbs/GB28181-Server
前端頁面語音採集示例
function talkStart(e) { if(this.recorder) { return; } var $target = $(e.currentTarget); LiveRecorder.get((rec, err) => { if(err) { alert(err); return } this.muted_bak = this.muted; this.$refs["player"].setMuted(true); $target.addClass("active"); this.recorder = rec; this.recorder.start(); }, { sampleBits: 16, sampleRate: 8000, pcmCallback: pcm => { if(this.bAudioSendError) return; var reader = new window.FileReader(); reader.onloadend = () => { var base64 = reader.result; var base64 = base64.split(',')[1]; this.bAudioSending = true; $.get("/api/v1/control/talk", { serial: this.serial, code: this.code, audio: base64, }).error(() => { if(!this.bAudioSendError) { this.bAudioSendError = true; setTimeout(() => { this.bAudioSendError = false; }, 10000); } }).always(() => { this.bAudioSending = false; }) } reader.readAsDataURL(pcm); } }) } function talkStop() { if(this.recorder) { this.recorder.stop(); this.recorder = null; $(this.$el).find(".fa-microphone.active, .ptz-talk.active").removeClass("active"); this.$refs["player"].setMuted(this.muted_bak); return; } },