- Updated docker-compose.yml to include new media-api and mediamtx services for improved video handling. - Modified package.json and package-lock.json to add TypeScript types for React and React DOM. - Refactored video-related components (VideoCard, VideoList, VideoModal) for better user experience and responsiveness. - Improved FiltersBar and Pagination components with enhanced styling and functionality. - Added loading and error states in VideoList for better user feedback during data fetching. - Enhanced CSS styles for a more polished look across the application.
94 lines
2.7 KiB
HTTP
94 lines
2.7 KiB
HTTP
###############
|
|
# Environment #
|
|
###############
|
|
@host = exp-dash
|
|
@web_port = 8080
|
|
@api_port = 8000
|
|
@media_port = 8090
|
|
@rtsp_port = 8554
|
|
|
|
# Base URLs
|
|
@WEB = http://{{host}}:{{web_port}}
|
|
@API = http://{{host}}:{{api_port}}
|
|
@MEDIA = http://{{host}}:{{media_port}}
|
|
|
|
|
|
###########################
|
|
# Camera Management (API) #
|
|
###########################
|
|
### API health
|
|
GET {{API}}/health
|
|
|
|
### System status
|
|
GET {{API}}/system/status
|
|
|
|
### List cameras
|
|
GET {{API}}/cameras
|
|
|
|
### Get single camera status
|
|
GET {{API}}/cameras/camera1/status
|
|
|
|
### Start live preview streaming (MJPEG) for camera1 (served by camera-management-api)
|
|
POST {{API}}/cameras/camera1/start-stream
|
|
|
|
### Stop live preview streaming for camera1
|
|
POST {{API}}/cameras/camera1/stop-stream
|
|
|
|
### View live MJPEG stream in browser (open URL)
|
|
# {{API}}/cameras/camera1/stream
|
|
|
|
### getting a list of all videos
|
|
GET {{MEDIA}}/videos/?page=10&limit=1
|
|
|
|
########################
|
|
# Media API (media-api) #
|
|
########################
|
|
### Media API health
|
|
GET {{MEDIA}}/health
|
|
|
|
### List videos (page 1, 24 per page)
|
|
GET {{MEDIA}}/videos/?page=1&limit=24
|
|
|
|
### List videos filtered by camera name (example: camera1)
|
|
GET {{MEDIA}}/videos/?page=1&limit=24&camera_name=camera1
|
|
|
|
### Get a thumbnail for a specific file (replace FILE_ID from list)
|
|
# Tip: FILE_ID is URL-encoded relative path, e.g. camera1%2Fmy_video.mp4
|
|
|
|
@FILE_ID = camera2_auto_vibratory_conveyor_20251028_094749.mp4
|
|
GET {{MEDIA}}/videos/{{FILE_ID}}/thumbnail?width=320&height=180
|
|
|
|
### Stream a file (basic GET without Range header)
|
|
GET {{MEDIA}}/videos/{{FILE_ID}}/stream
|
|
|
|
### Stream a file with Range header (resume/seek)
|
|
GET {{MEDIA}}/videos/{{FILE_ID}}/stream
|
|
Range: bytes=0-1048575
|
|
|
|
|
|
#########################################
|
|
# RTSP / WebRTC via MediaMTX (mediamtx) #
|
|
#########################################
|
|
# Notes:
|
|
# - RTSP is not directly playable in browsers; use VLC/ffplay/NVR.
|
|
# - Example RTSP URL (for a path you configure or publish):
|
|
# rtsp://{{host}}:{{rtsp_port}}/vod
|
|
# - For on-demand publishing from a file, configure mediamtx.yml with runOnDemand ffmpeg.
|
|
# - Quick client test examples (Run in your terminal):
|
|
# ffplay -rtsp_transport tcp rtsp://{{host}}:{{rtsp_port}}/vod
|
|
# vlc rtsp://{{host}}:{{rtsp_port}}/vod
|
|
|
|
# If you enable WebRTC in MediaMTX, you can open its embedded player page (for testing):
|
|
# See MediaMTX docs; by default we exposed RTSP and WebRTC ports in compose.
|
|
|
|
|
|
###############################################
|
|
# Useful manual test values (copy/paste below) #
|
|
###############################################
|
|
# @name set-variables
|
|
# file_id examples (replace with values from /videos/):
|
|
# camera1%2Fcamera1_auto_blower_separator_20251030_160405.mp4
|
|
# camera2%2Ffoo_20251030_101010.mp4
|
|
|
|
|