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

简介: 好多开发者或厂商,对Android平台GB28181接入模块的定位,大多是IPC国标流程打通模拟,基于这个目的,很难按照标准SPEC规范实现Android平台GB28181设备接入,我们在跟第三方国标平台厂商对接时发现,部分公司,尽管参与了标准的制定或审校,自身实现,细节仍不尽人意。

好多开发者或厂商,对Android平台GB28181接入模块的定位,大多是IPC国标流程打通模拟,基于这个目的,很难按照标准SPEC规范实现Android平台GB28181设备接入,我们在跟第三方国标平台厂商对接时发现,部分公司,尽管参与了标准的制定或审校,自身实现,细节仍不尽人意。


除了作为IPC国标模拟工具,Android平台GB28181设备接入没有实现价值吗?实际上,Android平台GB28181设备接入的用途非常广泛,通过实现不具备国标音视频能力的 Android终端,平台注册接入到现有的GB/T28181—2016服务,可用于如智能监控、智慧零售、智慧教育、远程办公、生产运输、智慧交通、车载或执法记录仪等场景。


Android平台GB28181接入终端除支持常规的音视频数据接入外,还需要支持移动设备位置(MobilePosition)订阅和通知、语音广播和语音对讲。

6c3ba5f9073243c6a28abeb31543a2bf.jpg

我们在实现Android平台GB28181设备接入端的时候,有个选项是设置本地SIP端口:

GBSIPAgent     gb28181_agent_             = null;
private int    gb28181_sip_local_port_base_  = 5060;
private String gb28181_sip_server_id_     = "34020000002000000001";
private String gb28181_sip_domain_        =  "3402000000";
private String gb28181_sip_server_addr_   = "192.168.2.154";
private int    gb28181_sip_server_port_   = 15060;
private String gb28181_sip_user_agent_filed_  = "DN(daniusdk.com) GB28181 User Agent V1.3";
private String gb28181_sip_username_   = "31011500991320000078";
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";

设置本地SIP端口的时候,SIP端口有可能被占用(比如大多都是设置5060)或被网络屏蔽,网上常规的做法是设置个看似不常用的端口,比如5061、5062等,虽然能解决绝大多数场景的问题,作为个通用的模块来说,未免过于粗糙,或者说治标不治本。


我们的做法是:设置本地SIP端口的时候,设置个base_local_port, 然后,根据设定的端口,在有效端口范围内,做绑定尝试,如果成功,提示bind local port OK, 然后做其他操作即可,这样可以最大限度的规避端口分配失败。


具体代码如下:

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;
}

感兴趣的开发者,可以做下尝试。

相关文章
|
6月前
|
存储 Android开发
如何查看Flutter应用在Android设备上已被撤销的权限?
如何查看Flutter应用在Android设备上已被撤销的权限?
271 64
|
6月前
|
存储 Android开发 数据安全/隐私保护
如何在Android设备上撤销Flutter应用程序的所有权限?
如何在Android设备上撤销Flutter应用程序的所有权限?
354 64
|
6月前
|
缓存 Android开发 开发者
Flutter环境配置完成后,如何在Android设备上运行Flutter应用程序?
Flutter环境配置完成后,如何在Android设备上运行Flutter应用程序?
1016 62
|
6月前
|
开发工具 Android开发 开发者
在Android设备上运行Flutter应用程序时,如果遇到设备未授权的问题该如何解决?
在Android设备上运行Flutter应用程序时,如果遇到设备未授权的问题该如何解决?
328 61
|
3月前
|
监控 Android开发 数据安全/隐私保护
批量发送短信的平台,安卓群发短信工具插件脚本,批量群发短信软件【autojs版】
这个Auto.js脚本实现了完整的批量短信发送功能,包含联系人管理、短信内容编辑、发送状态监控等功能
|
7月前
|
存储 编解码 监控
Android平台GB28181执法记录仪技术方案与实现
本文介绍了大牛直播SDK的SmartGBD在执法记录仪场景中的应用。GB28181协议作为视频监控联网的国家标准,为设备互联互通提供规范。SmartGBD专为Android平台设计,支持音视频采集、编码与传输,具备自适应算法和多功能扩展优势。文章分析了执法记录仪的需求,如实时音视频传输、设备管理及数据安全,并详细阐述了基于SmartGBD的技术实现方案,包括环境准备、SDK集成、设备注册、音视频处理及功能扩展等步骤。最后展望了SmartGBD在未来智慧物联领域的广阔应用前景。
269 13
|
7月前
|
存储 编解码 开发工具
Android平台毫秒级低延迟HTTP-FLV直播播放器技术探究与实现
本文详细探讨了在Android平台上实现HTTP-FLV播放器的过程。首先介绍了FLV格式的基础,包括文件头和标签结构。接着分析了HTTP-FLV传输原理,通过分块传输实现流畅播放。然后重点讲解了播放器的实现步骤,涵盖网络请求、数据解析、音视频解码与渲染,以及播放控制功能的设计。文章还讨论了性能优化和网络异常处理的方法,并总结了HTTP-FLV播放器的技术价值,尤其是在特定场景下的应用意义。
264 11
|
7月前
|
监控 Shell Linux
Android调试终极指南:ADB安装+多设备连接+ANR日志抓取全流程解析,覆盖环境变量配置/多设备调试/ANR日志分析全流程,附Win/Mac/Linux三平台解决方案
ADB(Android Debug Bridge)是安卓开发中的重要工具,用于连接电脑与安卓设备,实现文件传输、应用管理、日志抓取等功能。本文介绍了 ADB 的基本概念、安装配置及常用命令。包括:1) 基本命令如 `adb version` 和 `adb devices`;2) 权限操作如 `adb root` 和 `adb shell`;3) APK 操作如安装、卸载应用;4) 文件传输如 `adb push` 和 `adb pull`;5) 日志记录如 `adb logcat`;6) 系统信息获取如屏幕截图和录屏。通过这些功能,用户可高效调试和管理安卓设备。
|
算法 vr&ar Android开发
基于OpenCV实现的Android移动端口红AR
这个是我们去年想做的一个项目,后来因为各种原因就此搁浅了。但是算法部分我已经把它基本成型了,对各种光线条件下都可以准确的找到嘴唇,提取唇形、然后通过色彩渲染自动变化颜色,实现各种颜色的口红实时渲染,基于OpenCV与Android NDK完成的算法演示。
1717 0
|
15天前
|
开发工具 Android开发
X Android SDK file not found: adb.安卓开发常见问题-Android SDK 缺少 `adb`(Android Debug Bridge)-优雅草卓伊凡
X Android SDK file not found: adb.安卓开发常见问题-Android SDK 缺少 `adb`(Android Debug Bridge)-优雅草卓伊凡
194 11
X Android SDK file not found: adb.安卓开发常见问题-Android SDK 缺少 `adb`(Android Debug Bridge)-优雅草卓伊凡

热门文章

最新文章