Replaces the FFmpeg -> MediaMTX -> HLS pipeline with a raw MPEG-TS fan-out architecture: - Go stream.Hub holds ONE upstream connection per active channel and broadcasts the raw TS bytes to all connected browsers via /ts. The IPTV provider only ever sees one IP (the server), no matter how many viewers are watching (shared single-channel model). - Frontend uses mpegts.js to play the raw TS in-browser via MSE, fixing HEVC/H.265 4K streams that HLS could not package. - Dropped FFmpeg, MediaMTX, RTMP/RTSP, HLS proxy, playback/ingest modes, the OBS source toggle, and FFmpeg health stats. - UI look preserved (fullscreen video, collapsible sidebar, status bar, upstream-down banner, hourly playlist auto-refresh). Tradeoff: loses iOS Safari (no MSE/mpegts.js); fixes desktop/Android playback of both H.264 and H.265.
20 lines
819 B
Go
20 lines
819 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 {
|
|
ChannelName string `json:"channel_name"` // current IPTV channel name
|
|
Live bool `json:"live"` // true when a channel is selected
|
|
Transitioning bool `json:"transitioning"` // true while switching to a new channel
|
|
UpstreamDown bool `json:"upstream_down"` // true when no data is detected from the selected upstream
|
|
PlaylistVersion int64 `json:"playlist_version"` // increments when playlist reloads
|
|
}
|