포트 및 네트워크 동작
Insight는 일반적인 작동 중에 여러 포트를 사용합니다. 기본 포트는 SDK 컨테이너 내부 또는 직접 설치된 DevKit에서 사용되는 포트입니다. Neat 개발 환경에서 SDK는 해당 서비스를 호스트 포트에 게시합니다. 기본 호스트 포트가 이미 사용 중인 경우, sima-cli는 다른 사용 가능한 호스트 포트를 할당할 수 있습니다.

| 포트 맵 이름 | 기본 포트 또는 포트 범위 | 프로토콜 | 목적 |
|---|---|---|---|
mainUI | 9900 | HTTPS/TCP | 주요 Insight 웹 UI, HTTP API 및 HTTP MJPEG 스트리밍 소스입니다. |
videoUI | 8081 | HTTPS/TCP | WebRTC 비디오 뷰어 사용자 인터페이스. |
rtsp.tcp | 8554 | RTSP/TCP | 업로드된 미디어에서 생성된 RTSP 스트리밍 소스입니다. |
videoUDP | 9000-9079 | UDP | 시청자 채널을 위한 비디오 RTP 콘텐츠 업로드 0-79. |
metadataUDP | 9100-9179 | UDP | 뷰어 채널을 위한 메타데이터 JSON 가져오기 0-79. |
webRTC | 40000-40199 | UDP | WebRTC 미디어 및 메타데이터가 비디오 프레임워크에서 브라우저로 전송되는 DataChannel. |
webrtcWhip | 8889 | HTTPS/TCP | WHIP를 통해 브라우저 웹캠을 MediaMTX에 게시하고 RTSP 소스로 다시 제공합니다. |
webrtcWhipIce | 8189 | UDP | 브라우저 웹캠 게시를 위한 ICE 미디어입니다. 시그널링은 webrtcWhip를 사용하고 실제 비디오는 여기로 수신되므로 두 포트 모두 접근 가능해야 합니다. |
webSSH | 8022 | HTTPS/TCP | 사용 가능한 경우 브라우저 셸을 페어링된 DevKit로 연결합니다. |
Insight는 또한 127.0.0.1:9901(TCP)에서 mediamtx 제어 API를 실행합니다. 이 API는 루프백 전용이고, 시작할 때마다 생성되는 비밀번호로 보호되며, Insight가 웹캠 소스를 확인하고, 외부 게시자를 감지하고, 끌어온 스트림을 설정하는 데에만 사용하므로 포트 매핑이 필요 없습니다. 다른 mediamtx 포트와 마찬가지로, 다른 프로세스가 이 포트를 사용 중이면 시 작 시 해제됩니다.
실제 SDK 포트 맵을 찾아보세요.
SDK에서 기본 호스트 포트가 사용 가능하다고 가정하지 마십시오. 다음 명령을 실행하십시오.
neat --json
출력 결과에는 insight.webUiUrl과 exposedPorts 배열이 포함됩니다.
{
"exposedPorts": [
{"hostPortEnd": null, "hostPortStart": 9900, "name": "mainUI", "protocol": "tcp"},
{"hostPortEnd": 9179, "hostPortStart": 9100, "name": "metadataUDP", "protocol": "udp"},
{"hostPortEnd": null, "hostPortStart": 8554, "name": "rtsp.tcp", "protocol": "tcp"},
{"hostPortEnd": 9079, "hostPortStart": 9000, "name": "videoUDP", "protocol": "udp"},
{"hostPortEnd": null, "hostPortStart": 8081, "name": "videoUI", "protocol": "tcp"},
{"hostPortEnd": 40199, "hostPortStart": 40000, "name": "webRTC", "protocol": "udp"},
{"hostPortEnd": null, "hostPortStart": 8889, "name": "webrtcWhip", "protocol": "tcp"},
{"hostPortEnd": null, "hostPortStart": 8189, "name": "webrtcWhipIce", "protocol": "udp"},
{"hostPortEnd": null, "hostPortStart": 8022, "name": "webSSH", "protocol": "tcp"}
],
"insight": {
"serviceState": "Running",
"venv": "/opt/neat-insight/venv",
"webUiUrl": "https://10.0.0.210:9900"
}
}
호스트 포트가 재매핑된 경우, hostPortStart 값은 외부 클라이언트가 사용해야 하는 포트입니다. hostPortEnd는 비디오, 메타데이터, WebRTC와 같은 포트 범위에 사용됩니다.
채널 매핑
비디오 뷰어는 쌍으로 연결된 비디오 및 메타데이터 포트를 사용합니다. 채널 N의 경우:
video: UDP 9000 + N
metadata: UDP 9100 + N
예를 들어:
| 시청 채널 | 비디오 포트 | 메타데이터 포트 |
|---|---|---|
0 | 9000 | 9100 |
1 | 9001 | 9101 |
2 | 9002 | 9102 |
비디오와 메타데이 터 간에 채널 번호를 일관되게 유지하십시오. 애플리케이션이 채널 3로 비디오를 전송하는 경우, 해당 메타데이터를 채널 3의 메타데이터 포트로 전송하십시오.
비디오 포트는 RTP H.264(페이로드 유형 96), H.265(98) 또는 JPEG(26, GStreamer rtpjpegpay가 전송하는 RFC 2435 형식)를 받습니다. 모든 RTP 패킷은 4096바이트 이하로 유지하십시오. JPEG의 경우 rtpjpegpay mtu=를 4096 이하로 설정하십시오. JPEG 프레임은 메타데이터와 같은 WebRTC 연결을 통해 브라우저에 전달되므로 추가 포트가 필요하지 않습니다.
SDK 포트 매핑
Neat 개발 환경에서 SDK 컨테이너가 포트를 재매핑할 수 있습니다. Insight는 사용 가능한 경우 SDK 포트 매핑 구성을 읽어 UI 링크가 브라우저에서 접근 가능한 호스트 포트를 가리키도록 합니다.
이는 특히 비디오 뷰어에 중요합니다. 내부 기본 뷰어 포트는 8081이지만, SDK가 videoUI를 다른 호스트 포트에 매핑하는 경우 브라우저에 표시되는 포트가 다를 수 있습니다.
Insight UI의 시스템 정보를 사용하여 URL이 잘못되었다고 가정하기 전에 실제 노출된 포트를 확인하십시오.