java/web项目集成大华摄像头实现语音对讲功能遇到的问题

最近项目需求,需要把大华摄像头数据接入到自己的web平台,通过前端页面查看监控视频并且实现一语音对讲功能。

摄像头视频接入这里不在赘述,着重分享一下关于语音对讲功能时遇到的一些问题,

首先查看大华官方语音对讲功能流程

1.调用 CLIENT_Init 完成 SDK 初始化流程。
2.初始化成功后,调用 CLIENT_LoginWithHighLevelSecurity 登录设备。
3.调用 CLIENT_SetDeviceMode 设置语音对讲编码信息,参数 emType 设置为
DH_TALK_ENCODE_TYPE
4.调用 CLIENT_StartTalkEx 设置回调函数并开始语音对讲。在回调函数中,调用
CLIENT_AudioDec ,解码设备发送过来的音频数据;调用 CLIENT_TalkSendData ,发送
PC 端的音频数据到设备。
5.调用 CLIENT_StopTalkEx 停止语音对讲。
6.调用 CLIENT_Logout 登出设备。
7.SDK 功能使用完后,调用 CLIENT_Cleanup 释放 SDK 资源。
把大华摄像头直连电脑,运行官方demo
通过官方demo调用语音对讲功能成功
然后把对应接口集成到自己项目,和前端兄弟进行本地测试,通过前端网页调用后台语音对讲功能成功。本以为对接过程如此顺利,就把项目部署到linuxlinux服务器上进行测试,结果现实果然没这么顺利。
linux服务器环境下,调用语音对讲功能时报错

根据日志信息查看大华sdk源码:

	/**
	 * \if ENGLISH_LANG
	 * Start Talk
	 * \else
	 * 开始通话
	 * \endif
	 */
	public static boolean startTalk(int transferType, int chn) {
	
		// 设置语音对讲编码格式
		NetSDKLib.NETDEV_TALKDECODE_INFO talkEncode = new NetSDKLib.NETDEV_TALKDECODE_INFO();
		talkEncode.encodeType = NetSDKLib.NET_TALK_CODING_TYPE.NET_TALK_PCM;
		talkEncode.dwSampleRate = 16000;
		talkEncode.nAudioBit = 16;
		talkEncode.nPacketPeriod = 25;
		talkEncode.write();
		if(LoginModule.netsdk.CLIENT_SetDeviceMode(LoginModule.m_hLoginHandle, NetSDKLib.EM_USEDEV_MODE.NET_TALK_ENCODE_TYPE, talkEncode.getPointer())) {
			System.out.println("Set Talk Encode Type Succeed!");
		} else {
			System.err.p
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值