如何在Android平台GB28181接入终端实现语音广播和语音对讲

今天由我们华脉智联主要介绍下语音广播和语音对讲这部分。

GB28181平台广播和对讲这块,重要性不言而喻,没有广播的接入终端,数据只是单向流入,加入后,指挥中心和终端之间的联系更紧密,实时双向沟通更方便,适用的行业范围也更广泛。

关于语音广播和对讲,感兴趣的开发者可直接参阅以下部分精选介绍:

命令交互流程

如何在Android平台GB28181接入终端实现语音广播和语音对讲_第1张图片

命令描述流程

a) 1:SIP服务器向语音流接收者发送语音广播通知消息,消息中通过 To头域标明作为目的地址 的语音流接收者ID,消息采用 Message方法携带。

举例说明:

 MESSAGE sip:34020000002000000001@3402000000 SIP/2.0
 Via: SIP/2.0/UDP 10.84.108.162:41176;rport;branch=z9hG4bK650073bc
 From: ;tag=7e350f5e
 To: 
 Call-ID: [email protected]
 CSeq: 6 MESSAGE
 Max-Forwards: 70
 User-Agent: GB28181 Device 1.0.6-SNAPSHOT
 Content-Type: Application/MANSCDP+xml
 Content-Length: 182
 
 
 
 Broadcast
 410330224
 34020000001320000111
 OK
 
b) 2:语音流接收者收到语音广播通知消息后,向SIP服务器发送200OK 响应。

SIP/2.0 200 OK
Via: SIP/2.0/UDP 10.84.108.162:41176;rport=34988;received=112.96.112.147;branch=z9hG4bK650073bc
From: ;tag=7e350f5e
To: ;tag=403330303
CSeq: 6 MESSAGE
Call-ID: [email protected]
User-Agent: LiveGBS v230901
Content-Length: 0

c) 3:语音流接收者向SIP服务器发送语音广播应答消息,消息中通过 To头域标明作为目的地 址的SIP服务器ID,消息采用 Message方法携带。

  MESSAGE sip:34020000002000000001@3402000000 SIP/2.0
  Via: SIP/2.0/UDP 10.84.108.162:41176;rport;branch=z9hG4bK650073df
  From: ;tag=507dffb5
  To: 
  Call-ID: [email protected]
  CSeq: 8 MESSAGE
  Max-Forwards: 70
  User-Agent: GB28181 Device 1.0.6-SNAPSHOT
  Content-Type: Application/MANSCDP+xml
  Content-Length: 182
  
  
  
  Broadcast
  971364695
  34020000001320000111
  OK
  

d) 4:SIP服务器收到语音广播应答消息后,向语音流接收者发送200OK 响应。

SIP/2.0 200 OK
Via: SIP/2.0/UDP 10.84.108.162:41176;rport=34988;received=112.96.112.147;branch=z9hG4bK650073df
From: ;tag=507dffb5
To: ;tag=187364779
CSeq: 8 MESSAGE
Call-ID: [email protected]
User-Agent: LiveGBS v230901
Content-Length: 0

e) 5:语音流接收者向SIP服务器发送Invite消息,消息中通过 To头域标明作为目的地址的语音 流发送者ID,消息头域中携带Subject字段,表明请求的语音流发送者ID、发送方媒体流序列 号、语音流接收者ID、接收方媒体流序列号等参数,SDP消息体中s字段为“Play”代表实时点 播,m 字段中媒体参数标识为“audio”表示请求语音媒体流。

SIP/2.0 200 OK
Via: SIP/2.0/UDP 10.84.108.162:41176;rport=34988;received=112.96.112.147;branch=z9hG4bK650073df044bdf1a
From: ;tag=781e4246
To: ;tag=863364779
CSeq: 1 INVITE
Call-ID: 5FA30FCB22E0FD64650073DF-10.84.108.162
User-Agent: LiveGBS v230901
Contact: 
Content-Length: 152
Content-Type: APPLICATION/SDP

v=0
o=34020000002000000001 0 0 IN IP4 39.101.74.103
s=Play
c=IN IP4 39.101.74.103
t=0 0
m=audio 18116 RTP/AVP 8
a=sendrecv
a=rtpmap:8 PCMA/8000

f) 6:SIP服务器收到Invite请求后,通过三方呼叫控制建立媒体服务器和语音流发送者之间的媒体连接。向媒体服务器发送Invite消息,此消息不携带SDP消息体。

g) 7:媒体服务器收到SIP服务器的Invite请求后,回复200OK 响应,携带SDP消息体,消息体 中描述了媒体服务器接收媒体流的IP、端口、媒体格式等内容。

h) 8:SIP服务器收到媒体服务器返回的200OK 响应后,向语音流发送者发送Invite请求,消息 中通过 To头域标明作为目的地址的语音流发送者ID,消息头域中携带 Subject字段,表明请 求的语音流发送者ID、发送方媒体流序列号、语音流接收者ID、接收方媒体流序列号等参数, 请求中携带消息7中媒体服务器回复的200OK 响应消息体,s字段为“Play”代表实时点播, m 字段中媒体参数标识为“audio”表示请求语音媒体流,增加y字段描述SSRC值,f字段描述 媒体参数。

SIP/2.0 200 OK
Via: SIP/2.0/UDP 10.84.108.162:41176;rport=34988;received=112.96.112.147;branch=z9hG4bK650073df044bdf1a
From: ;tag=781e4246
To: ;tag=863364779
CSeq: 1 INVITE
Call-ID: 5FA30FCB22E0FD64650073DF-10.84.108.162
User-Agent: LiveGBS v230901
Contact: 
Content-Length: 152
Content-Type: APPLICATION/SDP

v=0
o=34020000002000000001 0 0 IN IP4 39.101.74.103
s=Play
c=IN IP4 39.101.74.103
t=0 0
m=audio 18116 RTP/AVP 8
a=sendrecv
a=rtpmap:8 PCMA/8000

i) 9:语音流发送者收到SIP服务器的Invite请求后,回复200OK 响应,携带SDP消息体,消息 体中描述了媒体流发送者发送媒体流的IP、端口、媒体格式、SSRC 字段等内容,s字段为 “Play”代表实时点播,m 字段中媒体参数标识为“audio”表示请求语音媒体流。

j) 10:SIP服务器收到语音流发送者返回的200OK 响应后,向媒体服务器发送 ACK 请求,请求 中携带消息9中语音流发送者回复的200OK 响应消息体,完成与媒体服务器的Invite会话 建立过程。

k) 11:SIP服务器收到语音流发送者返回的200OK 响应后,向语音流发送者发送 ACK 请求,请 求中不携带消息体,完成与语音流发送者的Invite会话建立过程。

l) 12:完成三方呼叫控制后,SIP服务器通过 B2BUA 代理方式建立语音流接收者和媒体服务器 之间的媒体连接。在消息5中增加SSRC值,转发给媒体服务器。

m)13:媒体服务器收到Invite请求,回复200OK 响应,携带SDP消息体,消息体中描述了媒体服 务器发送媒体流的IP、端口、媒体格式、SSRC值等内容,s字段为“Play”代表实时点播,m 字段 中媒体参数标识为“audio”表示请求语音媒体流。

n) 14:SIP服务器将消息转发给语音流接收者。

o) 15:语音流接收者收到200OK 响应后,回复 ACK 消息,完成与SIP服务器的Invite会话建立 过程。

p) 16:SIP服务器将消息15转发给媒体服务器,完成与媒体服务器的Invite会话建立过程。

注:语音广播通知消息除上述流程中通过SIP服务器发出外,也可由语音流发送者发出,消息中通过 To头域标明 作为目的地址的语音流接收者ID,经SIP服务器中转后发往语音流接收者;语音流接收者处理后发送应答消 息,消息中通过 To头域标明作为目的地址的语音流发送者ID,经SIP服务器中转后回复给语音流发送者。后续呼叫流程与上述流程相同。

语音对讲

语音对讲功能实现中心用户与前端用户之间的一对一语音对讲功能。 语音对讲功能由下述两个独立的流程组合实现:

a) 通过9.2的实时视音频点播功能,中心用户获得前端设备的实时视音频媒体流;

b) 通过9.12的语音广播功能,中心用户向前端对讲设备发送实时音频媒体流,语音流的封装格 式见 C.2.4音频流的 RTP封装定义。

C.2.4 音频流的 RTP封装

语音比特流宜采用标准的 RTP协议进行打包,这里只摘录G.711A律的:

在一个 RTP包中,音频载荷数据应为整数个音频编码帧,且时间长度在20ms~180ms之间。

音频载荷数据的 RTP封装参数如下:

a) G.711的主要参数 G.711A律语音编码 RTP包的负载类型(PayloadType)的参数规定如下(见IETFRFC3551— 2003中的表4): 1)负载类型(PT):8; 2) 编码名称(encodingname):PCMA; 3) 时钟频率(clockrate):8kHz; 4) 通道数:1; 5) SDP描述中“m”字段的“media”项:audio。

技术实现

语音广播接收这块,由于有之前的RTMP和RTSP播放器积累,直接在player端做相应扩展即可,当收到语音对讲通知后,GB28181语音广播按钮使能。

相关接口设计如下:

public interface IEngineEventHandler {
    /*
     * @param type {@link EventHandlerStatus.EventHandlerType}
     * @param state {@link EventHandlerStatus.EventState}
     */
    void onState(int type, int state);
}

相关调用代码:

 private val engineEventHandler =
    IEngineEventHandler { type, state ->
      if (type == EventHandlerStatus.EventHandlerType.type_call_out) { //语音对讲事件
            when (state) {
                EventHandlerStatus.EventState.PUEVT_CALL_OUT -> { //语音对讲呼出
           
                }

                EventHandlerStatus.EventState.PUEVT_CONNECT -> { //语音对讲接通
                
                }

                EventHandlerStatus.EventState.PUEVT_HANGUP -> { //语音对讲挂断
           
                }
            }
    }
  }

总结

至此、Android平台GB28181接入终端,如位置订阅、语音广播和语音对讲这块已经全面覆盖,加上之前的技术积累,看了下,已覆盖了以下部分:

[视频格式]H.264/H.265(Android H.265硬编码);

[音频格式]G.711 A律、AAC;

[音量调节]Android平台采集端支持实时音量调节;

[H.264硬编码]支持H.264特定机型硬编码;

[H.265硬编码]支持H.265特定机型硬编码;

[软硬编码参数配置]支持gop间隔、帧率、bit-rate设置;

[软编码参数配置]支持软编码profile、软编码速度、可变码率设置;

支持纯视频、音视频PS打包传输;

支持RTP OVER UDP和RTP OVER TCP被动模式;

支持信令通道网络传输协议TCP/UDP设置;

支持注册、注销,支持注册刷新及注册有效期设置;

支持设备目录查询应答;

支持心跳机制,支持心跳间隔、心跳检测次数设置;

支持移动设备位置(MobilePosition)订阅和通知;

支持国标GB/T28181—2016平台接入;

支持语音广播及语音对讲;

[实时水印]支持动态文字水印、png水印;

[实时静音]支持实时静音/取消静音;

[实时快照]支持实时快照;

[降噪]支持环境音、手机干扰等引起的噪音降噪处理、自动增益、VAD检测。

特别是语音广播和语音对讲这块,是GB28181终端接入模块的一个核心扩展功能,在智能门禁、工业与物联网、监控等行业,用途非常广泛,技术实现这块,不要忽略的技术点还有降噪和回音消除这块,华脉智联有技术积累,可以直接复用,对新入手的开发者来说,也提出了新的挑战,感兴趣的开发者,可以酌情参考。

你可能感兴趣的:(android)