import TitleComponent from '@/components/TitleComponent'; import { InfoCircleFilled, QuestionCircleOutlined } from '@ant-design/icons'; import { PageContainer } from '@ant-design/pro-layout'; import { Alert, Button, Card, Col, Form, Image, Input, InputNumber, message, Radio, Row, Select, Tooltip, } from 'antd'; import SipComponent from '@/components/SipComponent'; import SipSelectComponent from '@/components/SipSelectComponent'; // import { testIP } from '@/utils/util'; import { useEffect, useState } from 'react'; import { service } from '../index'; import { useLocation } from 'umi'; import styles from './index.less'; const Save = () => { const location: any = useLocation(); const [form] = Form.useForm(); const [clusters, setClusters] = useState([]); const id = location?.query?.id || ''; const [list, setList] = useState([]); const [transport, setTransport] = useState<'UDP' | 'TCP'>('UDP'); const regDomain = /[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(\.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+\.?/; const checkSIP = (_: any, value: { host: string; port: number }) => { if (!value) { return Promise.resolve(); } else if (!value.host) { return Promise.reject(new Error('请输入IP 地址')); } else if (value?.host && !regDomain.test(value.host)) { return Promise.reject(new Error('请输入正确的IP地址')); } else if (!value?.port) { return Promise.reject(new Error('请输入端口')); } else if ((value?.port && Number(value.port) < 1) || Number(value.port) > 65535) { return Promise.reject(new Error('端口请输入1~65535之间的正整数')); } return Promise.resolve(); }; const checkLocalSIP = (_: any, value: { host: string; port: number }) => { if (!value) { return Promise.resolve(); } else if (!value.host) { return Promise.reject(new Error('请选择IP地址')); } else if (!value?.port) { return Promise.reject(new Error('请选择端口')); } return Promise.resolve(); }; useEffect(() => { service.queryClusters().then((resp) => { if (resp.status === 200) { setClusters(resp.result); } }); service.queryResources().then((resp) => { if (resp.status === 200) { setList(resp.result); } }); if (!!id) { service.detail(id).then((resp) => { if (resp.status === 200) { const sipConfigs = resp.result?.sipConfigs[0]; const data = { ...resp.result, sipConfigs: { ...sipConfigs, public: { host: sipConfigs.remoteAddress, port: sipConfigs.remotePort, }, local: { host: sipConfigs.host, port: sipConfigs.port, }, remotePublic: { host: sipConfigs.publicHost, port: sipConfigs.publicPort, }, }, }; form.setFieldsValue(data); } }); } }, []); const keepValidator = (_: any, value: any) => { if ((!value && value !== 0) || (Number(value) >= 1 && Number(value) <= 10000)) { return Promise.resolve(); } return Promise.reject(new Error('请输入1~10000之间的数字')); }; const img1 = require('/public/images/northbound/doc1.png'); const img2 = require('/public/images/northbound/doc2.png'); const img3 = require('/public/images/northbound/doc3.png'); return (
{ const sipConfigs = { ...values.sipConfigs, remoteAddress: values.sipConfigs.public.host, remotePort: values.sipConfigs.public.port, host: values.sipConfigs.local.host, port: values.sipConfigs.local.port, publicHost: values.sipConfigs.remotePublic.host, publicPort: values.sipConfigs.remotePublic.port, }; delete values.sipConfigs; delete sipConfigs.public; delete sipConfigs.local; const param = { ...values, sipConfigs: [sipConfigs] }; let resp = undefined; if (id) { resp = await service.update({ ...param, id }); } else { resp = await service.save(param); } if (resp && resp.status === 200) { message.success('操作成功!'); history.back(); } }} > 代理视频流} name="proxyStream" rules={[{ required: true, message: '请选择代理视频流' }]} > 启用 禁用 集群节点 } name={['sipConfigs', 'clusterNodeId']} rules={[{ required: true, message: '请选择集群节点' }]} > SIP本地地址 } name={['sipConfigs', 'local']} rules={[ { required: true, message: '请输入SIP本地地址' }, { validator: checkLocalSIP }, ]} > { setTransport(e.target.value); }} > UDP TCP

1.概述

配置国标级联,平台可以将已经接入到自身的摄像头共享给第三方调用播放。
} description="注:该配置只用于将本平台向上级联至第三方平台,如需第三方平台向上级联至本平台,请在“视频设备”页面新增设备时选择“GB/T28181”接入方式。" showIcon />

2.配置说明

以下配置说明以将本平台数据级联到LiveGBS平台为例。

1、上级SIP ID

请填写第三方平台中配置的SIP ID

2、上级SIP 域

请填写第三方平台中配置的SIP ID域

3、上级SIP 地址

请填写第三方平台中配置的SIP ID地址

4、本地SIP ID

请填写本地的SIP ID地址。 地址由中心编码(8位)、行业编码(2位)、类型编码(3位)和序号(7位)四个码段共20位十 进制数字字符构成。详细规则请参见《GB/T28181-2016》中附录D部分。

5、SIP本地地址

请选择指定的网卡和端口,如有疑问请联系系统运维人员。

6、用户

部分平台有基于用户和接入密码的特殊认证。通常情况下,请填写本地SIP ID值。

7、接入密码

需与上级平台设置的接入密码一致,用于身份认证。

8、厂商/型号/版本号

本平台将以“设备”的身份级联到上级平台,请设置本平台在上级平台中显示的厂商、型号、版本号。

9、心跳周期

需与上级平台设置的心跳周期保持一致,通常默认60秒。

10、注册间隔

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