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

相关推荐
Tiny_React8 小时前
使用 Claude Code Skills 模拟的视频生成流程
人工智能·音视频开发·vibecoding
aqi001 天前
FFmpeg开发笔记(九十八)基于FFmpeg的跨平台图形用户界面LosslessCut
android·ffmpeg·kotlin·音视频·直播·流媒体
aqi002 天前
FFmpeg开发笔记(九十七)国产的开源视频剪辑工具AndroidVideoEditor
android·ffmpeg·音视频·直播·流媒体
aqi003 天前
FFmpeg开发笔记(一百)国产的Android开源视频压缩工具VideoSlimmer
android·ffmpeg·音视频·直播·流媒体
haibindev5 天前
【终极踩坑指南】Windows 10上MsQuic证书加载失败?坑不在证书,而在Schannel!
直播·http3·quic·流媒体
飞鸟真人8 天前
livekit搭建与使用浏览器测试
直播·视频会议·视频聊天·livekit
hk11249 天前
【音视频/边缘计算】2025年度H.265/HEVC高并发解码与画质修复(Super-Resolution)基准测试报告(含沙丘/失控玩家核心样本)
ffmpeg·边缘计算·音视频开发·h.265·测试数据集
aqi0016 天前
FFmpeg开发笔记(九十五)国产的开源视频美颜工具VideoEditorForAndroid
android·ffmpeg·音视频·直播·流媒体
sno_guo17 天前
直播抠图技术100谈之17----相机帧率和直播帧率如何定?
直播·内容运营·抠图·直播运营·直播伴侣
李小轰_Rex19 天前
把手机变成听诊器!摄像头 30 秒隔空测心率 - 开箱即用
android·音视频开发