SmargGBD(GB28181设备接入模块)如何对接wvp-gb28181-pro

​技术背景

我们在对接SmartGBD(GB28181设备接入模块)的时候,处理常规的海康大华宇视等国标平台外,有些公司会选择wvp-gb28181-pro。

众所周知,WEB VIDEO PLATFORM是一个基于GB28181-2016标准实现的开箱即用的网络视频平台,负责实现核心信令与设备管理后台部分,支持NAT穿透,支持海康、大华、宇视等品牌的IPC、NVR接入。支持国标级联,支持将不带国标功能的摄像机/直播流/直播推流转发到其他国标平台。适用于支持浏览器无插件播放摄像头视频。 支持国标设备(摄像机、平台、NVR等)设备接入 支持非国标(onvif, rtsp, rtmp,直播设备等等)设备接入,充分利旧。 支持国标级联。多平台级联。跨网视频预览。 支持跨网网闸平台互联。

基于此,我们也编译了wvp-gb28181-pro,本地部署了他们的服务。编译安装不再赘述,wvp-gb28181-pro提供了相关的技术说明,有一定开发能力的技术人员,应该很容易搭建起来。

技术对接

一切准备就绪,我们在大牛直播SDK的SmartGBD Android的demo上,设置下wvp-gb28181-pro的平台对接参数:

ini 复制代码
   /*** GB28181 相关参数,可以修改相关参数后测试 ***/
    GBSIPAgent     gb28181_agent_             = null;
    private int    gb28181_sip_local_port_base_  = 5060;

    private String gb28181_sip_server_id_     = "41010500002000000001";
    private String gb28181_sip_domain_        =  "4101050000";
    private String gb28181_sip_server_addr_   = "192.168.0.106";
    private int    gb28181_sip_server_port_   = 8118;

    private String gb28181_sip_user_agent_filed_  = null; // "NT GB UserAgent V1.7";
    private String gb28181_sip_username_   = "41010500001310000039";
    private String gb28181_sip_password_   = "12345678";

    private int gb28181_reg_expired_           = 3600; // 注册有效期时间最小3600秒
    private int gb28181_heartbeat_interval_    = 20; // 心跳间隔GB28181默认是60, 目前调整到20秒
    private int gb28181_heartbeat_count_       = 3; // 心跳间隔3次失败,表示和服务器断开了
    private int gb28181_sip_trans_protocol_    = 0; // 0表示信令用UDP传输, 1表示信令用TCP传输

    private long gb28181_rtp_sender_handle_ = 0;
    private int  gb28181_rtp_payload_type_  = 96;
    private String gb28181_rtp_encoding_name_ = "PS";

启动GB28181:

scss 复制代码
    class ButtonGB28181AgentListener implements View.OnClickListener {
        public void onClick(View v) {
            record_executor_.cancel_tasks();

            stopRecordDownloads(true);
            stopPlaybacks(true);

            stopAudioPlayer();
            destoryRTPReceiver();

            gb_broadcast_source_id_ = null;
            gb_broadcast_target_id_ = null;
            btnGB28181AudioBroadcast.setText("GB28181语音广播");
            btnGB28181AudioBroadcast.setEnabled(false);

            stopGB28181Stream();
            destoryRTPSender();

            if (null == gb28181_agent_ ) {
                if( !initGB28181Agent() )
                    return;
            }

            if (gb28181_agent_.isRunning()) {
                gb28181_agent_.terminateAllAudioBroadcasts(true);
                gb28181_agent_.terminateAllPlays(true);// 目前测试下来,发送BYE之后,有些服务器会立即发送INVITE,是否发送BYE根据实际情况看
                gb28181_agent_.stop();
                btnGB28181Agent.setText("启动GB28181");
            }
            else {
                record_executor_.cancel_tasks();
                initPlaybacks(null);
                initRecordDownloads(null);
                if ( gb28181_agent_.start() ) {
                    btnGB28181Agent.setText("停止GB28181");
                }
            }
        }
    }

如果注册成功的话,wvp-gb28181-pro平台会显示在线:

​编辑

点击"通道",进入相应channel页面:

​编辑

这里可以选择,直接播放,wvp国标平台侧会发INVITE请求过来:

ini 复制代码
    INVITE sip:34020000001380000001@192.168.0.104:5060 SIP/2.0
    Call-ID: b8787860378195821a173f98138b77fb@192.168.0.106
    CSeq: 613 INVITE
    From: <sip:41010500002000000001@4101050000>;tag=fbc9cccc34234fc3b4d78cb7035ca7a5
    To: <sip:34020000001380000001@192.168.0.104:5060>
    Via: SIP/2.0/UDP 192.168.0.106:8118;branch=z9hG4bK2349190019;rport=8118;received=192.168.0.106
    Max-Forwards: 70
    User-Agent: WVP-Pro v2.6.9.20231103
    Contact: <sip:41010500002000000001@192.168.0.106:8118>
    Subject: 34020000001380000001:0105008771,41010500002000000001:0
    Content-Type: APPLICATION/SDP
    Content-Length: 288
    
    v=0
    o=34020000001380000001 0 0 IN IP4 192.168.0.106
    s=Play
    c=IN IP4 192.168.0.106
    t=0 0
    m=video 50136 TCP/RTP/AVP 96 97 98 99
    a=recvonly
    a=rtpmap:96 PS/90000
    a=rtpmap:98 H264/90000
    a=rtpmap:97 MPEG4/90000
    a=rtpmap:99 H265/90000
    a=setup:passive
    a=connection:new
    y=0105008771

Android平台GB28181设备接入侧响应处理,然后发送打包后的ps数据即可。

​编辑

wvp-gb28181-pro还支持李是视音频回放,点击页面的设备录像即可进入回放页面,选择相应的日期,国标平台侧会发文件检索请求(RecordInfo):

xml 复制代码
    MESSAGE sip:41010500001310000039@192.168.0.104:5060 SIP/2.0
    Call-ID: a1b37a6c55bf502c790df7ca66591942@192.168.0.106
    CSeq: 622 MESSAGE
    From: <sip:41010500002000000001@4101050000>;tag=5adbe8c090fd40698b58c9d77795e5c2
    To: <sip:41010500001310000039@192.168.0.104:5060>
    Via: SIP/2.0/UDP 192.168.0.106:8118;branch=z9hG4bK2970158694;rport=8118;received=192.168.0.106
    Max-Forwards: 70
    User-Agent: WVP-Pro v2.6.9.20231103
    Content-Type: Application/MANSCDP+xml
    Content-Length: 277
    
    <?xml version="1.0" encoding="GB2312"?>
    <Query>
    <CmdType>RecordInfo</CmdType>
    <SN>813631</SN>
    <DeviceID>34020000001380000001</DeviceID>
    <StartTime>2023-11-05T00:00:00</StartTime>
    <EndTime>2023-11-05T23:59:59</EndTime>
    <Secrecy> 0 </Secrecy>
    <Type>all</Type>
    </Query>

检索的文件列表如下,点击播放即可。

​编辑

如果需要录像文件下载,还需要安装wvp-pro-assist插件,这里就不再尝试了。

除了常规功能外,比如视频预览、云台控制、预置位、支持订阅和通知、心跳保活外,wvp-gb28181-pro还支持实时位置订阅,遗憾的是,demo没有看到语音广播和语音对讲,由于平台是开放的,感兴趣的开发者也可以扩展支持。

相关推荐
dvlinker1 天前
【音视频开发】使用支持硬件加速的D3D11绘图遇到的绘图失败与绘图崩溃问题的记录与总结
音视频开发·c/c++·视频播放·d3d11·d3d11绘图模式
aqi004 天前
FFmpeg开发笔记(五十八)把32位采样的MP3转换为16位的PCM音频
ffmpeg·音视频·直播·流媒体
音视频牛哥6 天前
Android平台GB28181实时回传流程和技术实现
音视频开发·视频编码·直播
音视频牛哥8 天前
RTMP、RTSP直播播放器的低延迟设计探讨
音视频开发·视频编码·直播
音视频牛哥12 天前
电脑共享同屏的几种方法分享
音视频开发·视频编码·直播
aqi0014 天前
FFmpeg开发笔记(五十四)使用EasyPusher实现移动端的RTSP直播
android·ffmpeg·音视频·直播·流媒体
aqi0015 天前
FFmpeg开发笔记(五十三)移动端的国产直播录制工具EasyPusher
android·ffmpeg·音视频·直播·流媒体
加油吧x青年16 天前
Web端开启直播技术方案分享
前端·webrtc·直播
aqi001 个月前
FFmpeg开发笔记(五十二)移动端的国产视频播放器GSYVideoPlayer
android·ffmpeg·音视频·直播·流媒体