GB28181设备接入端如何实现校时?

在探讨这个问题之前,我们先看看GB/T28181-2016官方文档怎么说的,9.10.1章节校时基本要求提到:

联网内设备支持基于SIP方式或 NTP方式的网络校时功能,标准时间为北京时间。

SIP方式校时见本节具体描述;NTP(见IETFRFC2030)协议的网络统一校时服务,网络校时设备分为时钟源和客户端,支持客户/服务器的工作模式,时钟源应支持 TCP/IP、UDP及 NTP协议,将输入的或是自身产生的时间信号以标准的 NTP信息包格式输出。

系统运行时可根据配置使用具体校时方式。SIP校时在注册过程中完成

具体流程如下:

在注册成功情况下,注册流程的最后一个 SIP应答消息200 OK中的 Date头-域中携带时间信息。

采用的格式为 XML标准格式:Date:yyyy-MM-dd'T'HH:mm:ss.SSS

若SIP代理通过注册方式校时,其注册过期时间宜设置为小于SIP代理与 SIP服务器出现1s误差所经过的运行时间。

例如:SIP代理与SIP服务器校时后,SIP代理运行10h后设备时间与SIP服务器时间相差大于1s,则宜将注册过期时间设置为10h(36000s),以保证SIP代理与SIP服务器之间时 间误差小于1s。

废话不多说,以我们Android平台GB28181设备接入模块为例,先启动GB28181服务:

    class ButtonGB28181AgentListener implements View.OnClickListener {public void onClick(View v) {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_.terminateAllPlays(true);// 目前测试下来,发送BYE之后,有些服务器会立即发送INVITE,是否发送BYE根据实际情况看gb28181_agent_.stop();btnGB28181Agent.setText("启动GB28181");}else {if ( gb28181_agent_.start() ) {btnGB28181Agent.setText("停止GB28181");}}}}

调用initGb28181Agent()实现如下:

    /** MainActivity.java* initGB28181Agent* Github: https://github.com/daniulive/SmarterStreaming*/private boolean initGB28181Agent() {if ( gb28181_agent_ != null )return  true;getLocation(context_);String local_ip_addr = IPAddrUtils.getIpAddress(context_);Log.i(TAG, "initGB28181Agent local ip addr: " + local_ip_addr);if ( local_ip_addr == null || local_ip_addr.isEmpty() ) {Log.e(TAG, "initGB28181Agent local ip is empty");return  false;}gb28181_agent_ = GBSIPAgentFactory.getInstance().create();if ( gb28181_agent_ == null ) {Log.e(TAG, "initGB28181Agent create agent failed");return false;}gb28181_agent_.addListener(this);gb28181_agent_.addPlayListener(this);gb28181_agent_.addAudioBroadcastListener(this);gb28181_agent_.addDeviceControlListener(this);// 必填信息gb28181_agent_.setLocalAddress(local_ip_addr);gb28181_agent_.setServerParameter(gb28181_sip_server_addr_, gb28181_sip_server_port_, gb28181_sip_server_id_, gb28181_sip_domain_);gb28181_agent_.setUserInfo(gb28181_sip_username_, gb28181_sip_password_);// 可选参数gb28181_agent_.setUserAgent(gb28181_sip_user_agent_filed_);gb28181_agent_.setTransportProtocol(gb28181_sip_trans_protocol_==0?"UDP":"TCP");// GB28181配置gb28181_agent_.config(gb28181_reg_expired_, gb28181_heartbeat_interval_, gb28181_heartbeat_count_);com.gb.ntsignalling.Device gb_device = new com.gb.ntsignalling.Device("34020000001380000001", "安卓测试设备", Build.MANUFACTURER, Build.MODEL,"宇宙","火星1","火星", true);if (mLongitude != null && mLatitude != null) {com.gb.ntsignalling.DevicePosition device_pos = new com.gb.ntsignalling.DevicePosition();device_pos.setTime(mLocationTime);device_pos.setLongitude(mLongitude);device_pos.setLatitude(mLatitude);gb_device.setPosition(device_pos);gb_device.setSupportMobilePosition(true); // 设置支持移动位置上报}gb28181_agent_.addDevice(gb_device);/*com.gb28181.ntsignalling.Device gb_device1 = new com.gb28181.ntsignalling.Device("34020000001380000002", "安卓测试设备2", Build.MANUFACTURER, Build.MODEL,"宇宙","火星1","火星", true);if (mLongitude != null && mLatitude != null) {com.gb28181.ntsignalling.DevicePosition device_pos = new com.gb28181.ntsignalling.DevicePosition();device_pos.setTime(mLocationTime);device_pos.setLongitude(mLongitude);device_pos.setLatitude(mLatitude);gb_device1.setPosition(device_pos);gb_device1.setSupportMobilePosition(true);}gb28181_agent_.addDevice(gb_device1);*/if (!gb28181_agent_.createSipStack()) {gb28181_agent_ = null;Log.e(TAG, "initGB28181Agent gb28181_agent_.createSipStack failed.");return  false;}boolean is_bind_local_port_ok = false;// 最多尝试5000个端口int try_end_port = gb28181_sip_local_port_base_ + 5000;try_end_port = try_end_port > 65536 ?65536: try_end_port;for (int i = gb28181_sip_local_port_base_; i < try_end_port; ++i) {if (gb28181_agent_.bindLocalPort(i)) {is_bind_local_port_ok = true;break;}}if (!is_bind_local_port_ok) {gb28181_agent_.releaseSipStack();gb28181_agent_ = null;Log.e(TAG, "initGB28181Agent gb28181_agent_.bindLocalPort failed.");return  false;}if (!gb28181_agent_.initialize()) {gb28181_agent_.unBindLocalPort();gb28181_agent_.releaseSipStack();gb28181_agent_ = null;Log.e(TAG, "initGB28181Agent gb28181_agent_.initialize failed.");return  false;}return true;}

注册成功后,回调如下:

    @Overridepublic void ntsRegisterOK(String dateString) {Log.i(TAG, "ntsRegisterOK Date: " + (dateString!= null? dateString : ""));}

回上来的日志如下:

2022-09-13 11:53:33.163 12889-13101/com.daniulive.smartpublisher I/NTGB28181: ntsRegisterOK Date: 2022-09-13T11:53:32.439

以上就是GB28181国标设备接入端校时协议规范和相关实现流程,感兴趣的开发者可酌情参考。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/552963.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Win7运行窗口的打开方法

Win7系统中运行窗口可谓是最常用的功能之一&#xff0c;可以帮助我们快速执行程序&#xff0c;在系统有问题时经常运用其协助解决。有用户问到运行窗口在哪?如何打开?找不到怎么办?其实方法不难&#xff0c;下面小编就跟大家详细介绍一下Win7运行窗口的打开方法。 Win7运行…

如何在Unity下采集音视频实现轻量级RTSP服务(类似于IPC)

好多开发者在做虚拟仿真、VR教育等场景的时候&#xff0c;遇到个问题&#xff0c;想把头显里面的画面在内网环境下低延迟的同步出来&#xff0c;又不想单独部署流媒体服务器。为此&#xff0c;我们在Unity下&#xff0c;添加了轻量级RTSP服务模块&#xff0c;通过头显端启动个轻…

【Datawhale 大模型基础】第十一章 环境影响

第十一章 环境影响 This blog is based on datawhale files and a paper. The initial consideration revolves around the potential positive or negative direct impact on the environment. Other transformative technological advancements, like the metaverse, are li…

Win7笔记本如何调整屏幕亮度

长期使用电脑的时候会因为视觉疲劳感觉屏幕亮度过高&#xff0c;需要对其调整来缓解。PC用户方法很简单&#xff0c;只需在显示器上点击按钮进行调整即可&#xff0c;那么Win7笔记本如何调整屏幕亮度?其实Win7系统本身有考虑到这个问题&#xff0c;在系统中有专门针对此问题的…

Android GB28181接入端实时位置订阅和上报之-如何获取当前经纬度

我们在做Android平台GB28181的时候&#xff0c;其中实时位置(MobilePosition)订阅和上报这块&#xff0c;涉及到实时经纬度的获取&#xff0c;特别是执法记录、车载系统的那个等场景&#xff0c;几乎就是标配。 今天主要是分享一段实时获取位置的代码&#xff1a; /** Camera…

Win7系统防火墙设置不了怎么办

防火墙是Windows系统中一项重要的防护措施&#xff0c;可以帮助你的电脑阻挡病毒和恶意软件&#xff0c;确保系统安全。近来有用户反馈win7系统的防火墙无法设置&#xff0c;Win7系统防火墙设置不了怎么办?无法设置说明系统设置被更改&#xff0c;防火墙功能应该是被禁用了&am…

如何实现Android平台GB28181设备对接Camera2数据

技术背景 在写如何实现Android平台GB28181设备对接Camera2数据说明之前&#xff0c;我在前两年的blog就有针对camera2的RTMP直播推送模块做过技术分享&#xff1a; 在Google 推出Android 5.0的时候, Android Camera API 版本升级到了API2(android.hardware.camera2), 之前使用…

Win7性能信息和工具在哪打开

在Win7系统中&#xff0c;有一个性能信息和工具&#xff0c;我们可以通过这个功能中的高级工具&#xff0c;查看到关于系统的关键信息&#xff0c;全面了解系统的运行状况&#xff0c;不过&#xff0c;对于不熟悉电脑的用户来讲&#xff0c;可能连性能信息和工具在哪都不清楚&a…

Android平台实现mp4文件实时推送RTMP|轻量级RTSP服务|GB28181平台

好多开发者有这样的诉求&#xff0c;想把本地录制的MP4文件&#xff0c;以实时流数据的形式&#xff0c;推送到RTMP服务器&#xff0c;注入轻量级RTSP服务&#xff0c;或者对接到GB28181平台&#xff0c;这块前几年我们就有对接。 本次以MediaExtractor为例&#xff0c;先利用…

Win10系统字体太小的调整设置教程

Win7系统与Win10系统还是差别挺多的&#xff0c;一些小伙伴们刚开始使用Win10系统对很多功能都了解。有的小伙伴就遇到了不适应字体的大小&#xff0c;但是又不知道Win10字体太小怎么调整&#xff0c;下面告诉大家Win10系统字体太小的调整设置教程。 Win10系统字体太小的调整设…

Android平台GB28181设备接入端本地SIP端口被占用或屏蔽怎么办?

好多开发者或厂商&#xff0c;对Android平台GB28181接入模块的定位&#xff0c;大多是IPC国标流程打通模拟&#xff0c;基于这个目的&#xff0c;很难按照标准SPEC规范实现Android平台GB28181设备接入&#xff0c;我们在跟第三方国标平台厂商对接时发现&#xff0c;部分公司&am…

Android平台GB28181设备接入端如何实现本地录像?

实现Android平台GB28181设备接入的时候&#xff0c;有个功能点不可避免&#xff0c;那就是本地录像&#xff0c;实际上&#xff0c;在实现GB28181设备接入模块之前&#xff0c;我们前些年做RTMP推送和轻量级RTSP服务的时候&#xff0c;早已经实现了本地录像功能。 本地录像功能…

win10笔记本电脑合上屏幕休眠该怎么设置

现在很多用户经常外出的都喜欢轻便一点的电脑&#xff0c;所以这类人群为自己选择的电脑就会是笔记本电脑。使用笔记本电脑有一个特点就是如您合上电脑屏幕&#xff0c;它就会自动锁屏&#xff0c;那么win10笔记本电脑合上屏幕休眠该怎么设置呢?想要设置的用户一起来看看吧。 …

Android平台GB28181设备接入端实现实时快照

Android平台GB28181设计开发的时候&#xff0c;有个功能必不可少的&#xff1a;实时快照&#xff0c;特别是用于执法记录仪等场景下&#xff0c;用于图像留底或分析等考量。 实时快照的实现并不难&#xff0c;目前实现有两种方式&#xff0c;一种是拿到数据&#xff08;比如摄…

uc浏览器怎么看历史记录 uc浏览器网页历史记录查看方法

很多用户发现UC浏览器的历史记录查看不了&#xff0c;怎么找也找不到&#xff0c;不要急&#xff0c;它只是换了个位置而已&#xff0c;那么下面小编就来跟大家说一说UC浏览器网页历史记录查看方法。 方法一&#xff1a;点击右上角的UC图标&#xff0c;在弹出来的菜单中你就会…

Win11如何跳过开机更新 Win11跳过开机更新教程

已经有很多用户更新升级到win11系统了吧&#xff0c;但是有用户发现偶尔开机会出现自动更新&#xff0c;导致无法及时开机使用&#xff0c;那win11统如何跳过开机更新呢?可以先使用电源键取消这次更新&#xff0c;然后进入系统取消更新检测就可以了。 win11怎么跳过开机更新&…

Android国标接入端如何播放GB28181平台端语音广播数据

GB28181语音广播这块&#xff0c;我们依据GB/T28181-2016针对流程和实例代码&#xff0c;做过详细的描述&#xff0c;本次主要是探讨下&#xff0c;广播数据过来后&#xff0c;如何处理。 鉴于我们之前有非常成熟的RTMP|RTSP低延迟播放模块&#xff0c;语音广播数据过来后&…

Win11和Win10有什么区别 Win11和Win10区别对比

Win11是微软全新一代操作系统&#xff0c;在界面和功能上和Win10相比还是有不少区别的&#xff0c;如果你还在犹豫要不要升级Win11的话&#xff0c;那么不妨来看看Win11和Win10之间有哪些区别吧。 1、 开始菜单&#xff1a;简单的图标&#xff0c;没有动态磁贴 Windows 11 的…

Android平台RTSP、RTMP播放端如何实现YUV或ARGB数据按设定角度旋转

做音视频RTSP或RTMP直播播放器的时候&#xff0c;不免会遇到这样的诉求&#xff0c;实时播放或快照的时候&#xff0c;由于前端摄像头安装角度不一定是正向&#xff0c;导致播放或快照的时候&#xff0c;视频view显示的画面是呈90 180甚至270旋转的。 以Android平台为例&#…

Win11任务栏颜色如何更改 Win11更改任务栏颜色教程

win11系统中任务栏颜色默认为浅蓝色&#xff0c;有用户认为它可能会与白色的网页或界面重叠&#xff0c;影响自己的操作&#xff0c;想问问有没有什么方法可以更改任务栏的颜色。可以通过更改主题或者更改深色浅色模式来更改任务栏的颜色&#xff0c;将其调整为自己喜欢的颜色。…