Commit Graph
2 Commits
Author SHA1 Message Date
Divarion_D 6619b95799 feat(streams): driver sources answer source checks and supervisor probes
StreamProcess::driverProbe() stands in for ffprobe on a driver source: the on-demand scanner, the stream form's probe button and the stream tools check report 'Module source available / unavailable' from the driver's available(). Driver spec entries now carry probe_cmd = console.php source:probe <id> <base64 url>, so the supervisor returns to a higher-priority driver source too. Also fixes checkStream's count(null) TypeError when a probe fails.
2026-09-28 19:55:24 +03:00
Divarion_D ac2ad9fd6c feat(streams): source drivers — module-owned live sources with their own producer
A module declares SourceDriverInterface classes in module.json
("source_drivers", optional "start_timeout") and claims URL schemes of its
own; core runs the driver's engine in ffmpeg's place for those sources.

- SourceDriverRegistry: scheme -> driver, loaded via ModuleLoader::loadAll()
  (no bootAll, so the streaming entry point works), core schemes reserved,
  a scheme claimed by two modules goes to neither, unknown schemes refused.
- StreamProcess: per-source choice in the supervised spec and the PHP
  monitor path; ffmpeg-only settings (transcode, maps, RTMP, delay…) refuse
  the driver; argv escaped by core, must name the playlist; no fallback_cmd
  or probe_cmd; the driver's start_timeout extends the start wait.
- ProcessManager recognises a driver engine by binary + playlist, so
  monitor, stop and cron treat it as the stream's producer.
- MonitorCommand priority/force checks go through sourceAnswers()
  (driver's available() or ffprobe).
- Offset the added branches in startStream/buildSupervisorSpec/producerKind
  with behaviour-preserving simplifications (CRAP ratchet).
2026-09-27 21:45:44 +03:00