- 海康语音转发,主要使用是为了通过移动端或者web端生成文件,发送到后台经过处理,再发送到摄像头端,将声音播放出来。海康语音转发,主要用了g711或者g722解码,转码。前端用到的文件主要是pcm,当然用其他格式的也可以。我开发时,主要用uniapp生成了mp3格式文件,但是通过文件工具类转的pcm。利用pcm文件流转的g711a。现在我就简单介绍一下我开发的过程吧。里面有些小坑,在这里先感谢一下海康客服及技术人员,他们都是很给力的。
- 第一步也是直接通过uniapp生成了pcm格式,去后端处理的。先给大家看一眼摄像头配置
这样的配置是没问题的,找了很多资料,但是这方面资料还是很少的。写出来的代码,经过测试,语音总是播放出来的事很大的杂音,而且时长也对不上,起初也为是配置的原因。但是经过测试,只有选择g711的选项是有声音的,所以断定是格式,或者文件格式中的问题(pcm文件中的码率,采样率,位深度问题)。后来就咨询客服要了一份pcm格式音频和例子代码。
文件我会发到文章中,供大家测试。将文件拿过来之后放到代码中,确实是可以播放的,但是uniapp生成的pcm文件就是播放不出来。于是乎开始研究音频文件,经过两个软件(GoldWave,格式工厂)的帮助发现官方提供的音频格式为,8000Hz,16bit位深度,自己uniapp生成则是13bit或者14bit位深度.
经过测试果然是这个原因。通过两款软件将自己生成的pcm位深度转了一下。结果成功播放。代码送给大家。
这是播放的代码。每次发160,20ms发送一次。至于g711转码,官方已经给提供了。随后会把官方代码发到文章中。
4. 还有一个问题,就是生成的文件,在代码中怎么解决呢,随后,我通过uniapp生成了一个mp3文件,再讲mp3转成pcm文件。这样成功解决问题。
在uniapp中主要就是红色框中的配置。目前是wav,当然主要能转成合适的pcm就可以,为了方便,我们项目中是mp3格式。大家自己也可以试试wav转pcm。
5.后来经过处理一系列需求,发现不能用g711解码,最后我们选择了aac。
6.用aac格式文件,大家就可以用uniapp直接生成了,当然摄像头配置需要改一下。改成aac转码。经过测试,摄像头选择了48000Hz,和32000码率,uniapp配置是 采样率48000,码率256000,单通道,格式为aac。这里不细说,主要就是测试,说多了都是泪,测了足足三天才得出的结果,中间还学了一下码率采样率的转化。因为官方也没有实际做过这种格式的传输。只能自己通过摄像头的特质测试了。后端代码基本一样。将每次发送改成438,35ms传送就可以了。这是我们的摄像头的数据。你们开发可能得自己测配置。
测试文件也会给大家,大家自己做测试吧。
8.今天就写到这里了,新手写的不好,大家有不理解的地方可以问我。我会细点给你解决的。希望大家尽量避免采坑,采坑真的难受。
9. 附件:
https://pan.baidu.com/s/12zTpal6q9dSeQW0FXF3edQ 提取码:386l