Video Device Access
Monitoring Platform Architecture

Deployment Steps
Open Server Ports
Open the following ports in the server firewall and cloud security group:
5061:5061: SIP TCP port.5061:5061/udp: SIP UDP port.8082: media server HTTP API.8443: media server HTTPS API.554:554: RTSP stream port.1935:1935: RTMP stream port.8000:8000: RTC port.30000-30500:30000-30500: RTP TCP stream ports.30000-30500:30000-30500/udp: RTP UDP stream ports.
Warning
These ports must be opened. Otherwise, device registration, playback, and live streaming may fail.
Configure SIP And Record Service
SIP configuration is located in fastbee-admin/src/main/resources/application-prod.yml.
sip:
enabled: true
ip: 177.7.0.13
port: 5061
domain: 3402000000
id: 34020000002000000001
password: 12345678For Docker deployment, keep the default configuration when possible. For Windows testing, use the internal IP of the local network adapter.
Record service configuration is located in fastbee-record/src/main/resources/application-prod.yml.
server:
port: 18081
servlet:
context-path: /
ssl:
enabled: false
key-store: classpath:fastbee.online.jks
key-store-password: fastbee
key-store-type: JKSCopy JAR And Certificate Files
Copy the JAR package and HTTPS certificates to the Docker deployment directory, then start the services.



References:
- ZLMediaKit image
- Enable HTTPS for ZLMediaKit
docker/datacontains adocker-compose.ymlfile for one-click environment startup.
Platform Configuration
Create A Video Product
Create a product and select the video device type.


Update SIP Configuration
After the product is created, you can update the SIP configuration. The default values come from the Java application-prod.yml.

Create Media Server Configuration
Go to Video Center -> Video Configuration and create a media server configuration.
- Server IP: public IP of the deployment server. HTTP is the default playback protocol.
- Server secret: HTTP API authentication secret. It must match
api.secretinzlmedia/conf/config.ini. - Server domain: required when HTTPS playback is used. Update
zlmedia/conf/default.pemaccordingly. - Hook URL: Java service callback API. The default is
java:8080; adjust it according to your deployment.

Create Device And Channel IDs
Create a video device and generate device ID and channel ID.
- Camera: device type
IPC, channel typeIPC. - NVR: device type
NVR, channel typeNVR. - NVR + IPC: device type
NVR, channel typeIPC. - DVR + IPC: device type
DVR, channel typeIPC.


Fill Device-Side SIP Information
Fill the generated product SIP configuration and device identifiers into the camera or NVR.
Common field mapping:
- Server ID = SIP server ID.
- Server domain = SIP domain.
- Deployment public IP = SIP server address.
- Server port = SIP server port.
- Authentication password = registration password.
- Device ID = SIP username or device number.
- Channel ID = video channel ID.
Non-Docker Deployment
For split-service deployment:
- Ensure all required service ports are open.
- Configure the Java SIP IP according to the local network interface.
- Configure the ZLMediaKit
hookAPI callback address inconf/config.ini. - In FastBee, update media server IP, domain, stream secret, and related settings.
Windows Debug Environment
Start ZLMediaKit With Docker
Use the Docker script under the Docker directory to start ZLMediaKit.

Run:
docker-compose -f docker-compose-window.yml up -d
Update SIP Configuration
Check the local network adapter IP and update the Java SIP configuration.

Start the backend FastBeeApplication and frontend development service.


Add Media Server In FastBee
Create a media server and set the LAN IP, for example 192.168.31.159.


Set HookUrl to:
host.docker.internal:8080
GB28181 Live Streaming Flow
FastBee Interaction Flow
Flow summary:
- FastBee calls ZLMediaKit
/index/api/openRtpServerto create an RTP server and obtains the RTP port. - FastBee SIP server sends an
Invitemessage to the device. The SDPsfield isPlay. - The device responds with
100 Tryingand200 OK, including SDP information such as stream IP, port, media format, and SSRC. - FastBee sends
ACKto complete the Invite session. - The device pushes stream data to the RTP server created by ZLMediaKit.
- ZLMediaKit sends
onPublishandonStreamChangedcallbacks to FastBee. - The player pulls the configured playback stream.
- ZLMediaKit sends
onPlaycallbacks for playback authentication and tracking.
Common failure points:
- SIP packets do not follow the standard protocol format.
- ZLMediaKit ports or HTTPS certificates are configured incorrectly.
- Device-to-server SIP or RTP network connectivity is blocked.
- Hook API is wrong. In Docker it is commonly
java:8080; when Java runs in IDE and ZLMediaKit runs in local Docker, it is commonlyhost.docker.internal:8080.
Packet capture:

Standard GB28181 Live Protocol Flow
The standard flow includes Invite, 200 OK, ACK, media server negotiation, SSRC delivery, and media stream establishment. When troubleshooting, compare FastBee SIP messages, media server responses, device replies, and RTP stream behavior against this flow.
