国标协议GB28181视频平台EasyGBS采集音频摄像头无法播放该如何解决?

   日期:2020-08-20     浏览:101    评论:0    
核心提示:目前在一些项目合作的过程中,我们发现,越来越多的团队开始使用摄像头的语音对讲功能来实现服务端与设备端的音视频语音对讲与喊话。在监控系统中,语音喊话是比较实用的功能,市面上部分摄像头本身就自带拾音器,如果摄像头不带,也可以自己加装拾音器。使用TSINGSEE青犀视频国标协议GB28181视频平台EasyGBS的用户多数都有语音喊话的需求,所以在最新的产品升级更新中,我们增加了语音喊话功能并进行项目测试。我们在测试的时候发现,国标协议GB28181视频平台EasyGBS语音喊话功能会出现采集好的音频发送

目前在一些项目合作的过程中,我们发现,越来越多的团队开始使用摄像头的语音对讲功能来实现服务端与设备端的音视频语音对讲与喊话。在监控系统中,语音喊话是比较实用的功能,市面上部分摄像头本身就自带拾音器,如果摄像头不带,也可以自己加装拾音器。

使用TSINGSEE青犀视频国标协议GB28181视频平台EasyGBS的用户多数都有语音喊话的需求,所以在最新的产品升级更新中,我们增加了语音喊话功能并进行项目测试。我们在测试的时候发现,国标协议GB28181视频平台EasyGBS语音喊话功能会出现采集好的音频发送到摄像头却无法播放的问题。

通过wireshark分析,在wireshark中的流数据展示如下:

从wireshark的音频波形可以看出不是一个正确的波形,经过排查是前端采集的音频的类型是pcm裸数据,但是传给摄像头的时候是把这个数据当做g711a的压缩格式去解析的所以出现错误。

我们将pcm的音频格式改为g711a文件再次传输,波形就会恢复正常。

select {
			case talkdata := <-Server.TalkChan:
				b, err := ioutil.ReadFile("./test.g711-alaw")
				if err != nil {
					fmt.Println("ioutil ReadFile error: ", err)
					return
				}
				ioutil.WriteFile("./output2.g711-alaw", b, 0666)

				//retinfo := rtp.MakeParseRTP([]byte(talkdata))
				//rtparr, err := ps.ConvertEs2Rtp([]byte(talkdata), 1, 0x1c, true, retinfo)
				rtparr, err := ps.ConvertPCM2Rtp(b)
				//rtparr, err := ps.ConvertPCM2Rtp([]byte(talkdata))
				if err != nil {
					fmt.Println("发送rtperr", err)
					return
				}
				//retinfo := rtp.ParseRTP([]byte(talkdata))
				for _, v := range rtparr {
					tempint, err := transportMS.UDPConn.Write(v.Payload)
					if err != nil {
						fmt.Println("发送rtperr", err)
						return
					}
					time.Sleep(10 * time.Millisecond)
					fmt.Println("发送tempint", tempint)
				}

而像本文开头提到的音频不能播放的问题也解决了。

 
打赏
 本文转载自:网络 
所有权利归属于原作者,如文章来源标示错误或侵犯了您的权利请联系微信13520258486
更多>最近资讯中心
更多>最新资讯中心
0相关评论

推荐图文
推荐资讯中心
点击排行
最新信息
新手指南
采购商服务
供应商服务
交易安全
关注我们
手机网站:
新浪微博:
微信关注:

13520258486

周一至周五 9:00-18:00
(其他时间联系在线客服)

24小时在线客服