- Go backend: REST API, M3U parser, FFmpeg/MediaMTX process manager - React/Vite frontend: HLS player, admin panel, channel browser (dark theme) - MediaMTX config for RTMP ingest + HLS output - Multi-stage Dockerfile (Go + Bun + Alpine runtime) - docker-compose.yml for single-container deployment - Sample M3U playlist with test streams Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
32 lines
942 B
Go
32 lines
942 B
Go
package models
|
|
|
|
// Channel represents a single IPTV channel parsed from an M3U playlist.
|
|
type Channel struct {
|
|
ID string `json:"id"`
|
|
Name string `json:"name"`
|
|
Group string `json:"group"`
|
|
LogoURL string `json:"logo_url"`
|
|
StreamURL string `json:"stream_url"`
|
|
}
|
|
|
|
// StreamStatus represents the current streaming state.
|
|
type StreamStatus struct {
|
|
Source string `json:"source"` // "obs" or "iptv"
|
|
ChannelName string `json:"channel_name"` // current IPTV channel name (empty if OBS)
|
|
Live bool `json:"live"`
|
|
}
|
|
|
|
// ProcessInfo represents the status of a managed child process.
|
|
type ProcessInfo struct {
|
|
Running bool `json:"running"`
|
|
PID int `json:"pid"`
|
|
Uptime string `json:"uptime"`
|
|
Error string `json:"error,omitempty"`
|
|
}
|
|
|
|
// SystemStatus holds status for all managed processes.
|
|
type SystemStatus struct {
|
|
MediaMTX ProcessInfo `json:"mediamtx"`
|
|
FFmpeg ProcessInfo `json:"ffmpeg"`
|
|
}
|