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没有看到语音广播和语音对讲,由于平台是开放的,感兴趣的开发者也可以扩展支持。

相关推荐
WilliamLuo1 天前
MP4结构初识-第一篇
前端·javascript·音视频开发
启明智显4 天前
视频直播5G CPE解决方案:ZX7981PG/ZX7981PMWIFI6网络覆盖
5g·直播·wifi6·5g cpe·无线路由器
音视频牛哥7 天前
Android平台如何拉取RTSP|RTMP流并转发至轻量级RTSP服务?
音视频开发·视频编码·直播
声知视界7 天前
音视频基础能力之 iOS 视频篇(一):视频采集
音视频开发
fareast_mzh8 天前
Setting Up a Simple Live Streaming Server on Debian 11
运维·debian·直播
关键帧Keyframe10 天前
音视频面试题集锦第 15 期 | 编辑 SDK 架构 | 直播回声 | 播放器架构
音视频开发·视频编码·客户端
伊织code12 天前
[2024最新] macOS 发起 Bilibili 直播(不使用 OBS)
macos·mac·web·直播·b站·bilibili
音视频开发技术14 天前
cannot locate symbol _ZTVNSt6__ndk119basic_ostringstreamIcNS_
android·直播
关键帧Keyframe15 天前
iOS 不用 libyuv 也能高效实现 RGB/YUV 数据转换丨音视频工业实战
音视频开发·视频编码·客户端
关键帧Keyframe17 天前
音视频面试题集锦第 7 期
音视频开发·视频编码·客户端