安防视频云服务EasyCVR集成海康SDK时语音对出现杂音问题,如何解决?
时间:2022-07-27
本文章向大家介绍安防视频云服务EasyCVR集成海康SDK时语音对出现杂音问题,如何解决?,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
安防视频云服务EasyCVR能够支持多种不同的协议,包括RTSP、GB28181、海康SDK、EHome等私有协议,目前更多的协议也正在拓展中(EasyCVR如何接入海康SDK及Ehome等私有协议)。
我们测试EasyCVR集成海康SDK语音对讲功能时,发现实时对讲时会有很大杂音。
查看文档,我们了解到海康sdk 语音对讲时每次发送有字节限制,前端每次发送字节的数量是1024字节pcm 数据,发送频率为每80ms一次,后端通过websocket 接收音频数据后,转码为g711a数据(512字节)。解决每次发送字节限制的问题,后端接收到数据后丢弃一部分数据导致杂音。
在此我们的处理方法是添加接收缓存模块,新建发送线程,以下为发送代码示例:
f:=func(){
for ; ; {
if cacheExitFlag{
break
}
if cacheFd != nil{
tmpArr:=make([]byte,160)
cacheFdLock.Lock()
iLen,err:=cacheFd.ReadAt(tmpArr,cacheFdPos)
cacheFdLock.Unlock()
if err == nil && iLen == 160{
cacheFdPos += 160
source.EasySdkInstances.SdkSendAudio(voiceTalkHandle,tmpArr[0:160],uintptr(unsafe.Pointer(encoderHandle)))
}
}
time.Sleep(20*time.Millisecond)
}
}
go f()
TSINGSEE青犀视频旗下的产品EasyCVR视频解决方案分为设备端、服务端、客户端三个部分,设备端位于局域网,服务端及客户端位于互联网,支持传统网络摄像机、NVR、编码器、SDK等设备,最大程度的提高了硬件设备的兼容性。
关于安防视频云服务EasyCVR相关内容,大家可以参考EasyCVR如何配置接入设备、EasyCVR如何接入海康硬盘录像机等。如有需要,欢迎联系。
- 剑指offer——年龄排序问题
- Mysql Group Replication介绍
- 剑指offer——快速排序
- 架构高性能网站秘笈(四)——反向代理缓存
- 架构高性能网站秘笈(一)——了解衡量网站性能的指标
- MYSQL5.6&5.7编译安装
- 架构高性能网站秘笈(三)——浏览器缓存
- 剑指 offer代码解析——面试题39判断平衡二叉树(高效方法)
- 跟着柴毛毛学Spring(4)——面向切面编程![这里写图片描述](http://img.blog.csdn.net/20171031111402095)
- MYSQL数据闪回方式
- 剑指 offer代码解析——面试题39判断平衡二叉树
- 跟着柴毛毛学Spring(3)——简化Bean的配置
- 剑指 offer代码解析——面试题39二叉树的深度
- 跟着柴毛毛学Spring(2)——Bean的配置
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 如何使用OpenCV RTMP直播推流
- Scrapy框架新手入门教程
- STM32 F4串口接收中断
- RTOS函数命名规则
- 通过思维导图,让女朋友搭建一个hadoop完全分布式
- FreeRTOS内核应用开发手记
- 移植FreeRTOS后运行,卡在uxDeletedTasksWaitingCleanUp
- 99%的人都不知道内网、外网、宽带、带宽、流量、网速之间的区别与联系
- 什么是前缀树--打开了我的新思路
- 一个案例搞懂原码、反码、补码,不懂得请看过来
- 人人都在用,但你却不知道它背后发生了什么——浏览器的工作原理:浏览器幕后揭秘
- 这有一把钥匙,打开MySQL死锁问题!
- 普通人如何全面了解大数据的特点,意义和发展前景
- 面试官问我Linux下常见网络命令
- 最全常用User-Agent