'url', 'hdmi' => [ 'resolution' => '1920x1080', 'audio_source' => 'hw:1,0', 'framerate' => '30' ], 'url' => 'https://cdn.urmic.org/unavailable.mp4', 'rtmp' => [ 'mount' => 'shreebhattji', 'password' => 'live', 'port' => '1935' ], 'srt' => [ 'stream_id_1' => 'har', 'stream_id_2' => 'har', 'stream_id_3' => 'Mahadev', 'port' => '1937' ], 'udp'=>'udp://@224.1.1.1:8000', 'custom'=>'' ]; if (file_exists($jsonFile)) { $raw = file_get_contents($jsonFile); $data = json_decode($raw, true); if (!is_array($data)) $data = $defaults; } else { $data = $defaults; } // handle form submit if ($_SERVER['REQUEST_METHOD'] === 'POST') { // simple sanitizer $posted = function ($k, $default = '') { return isset($_POST[$k]) ? trim((string)$_POST[$k]) : $default; }; $new = [ 'input' => $posted('input', $defaults['input']), 'hdmi' => [ 'resolution' => $posted('hdmi_resolution', $defaults['hdmi']['resolution']), 'audio_source' => $posted('hdmi_audio_source', $defaults['hdmi']['audio_source']), 'framerate' => $posted('hdmi_framerate', $defaults['hdmi']['framerate']) ], 'url' => $posted('url', $defaults['url']), 'rtmp' => [ 'mount' => $posted('rtmp_mount', $defaults['rtmp']['mount']), 'password' => $posted('rtmp_password', $defaults['rtmp']['password']), 'port' => $posted('rtmp_port', $defaults['rtmp']['port']) ], 'srt' => [ 'stream_id_1' => $posted('srt_stream_id_1', $defaults['srt']['stream_id_1']), 'stream_id_2' => $posted('srt_stream_id_2', $defaults['srt']['stream_id_2']), 'stream_id_3' => $posted('srt_stream_id_3', $defaults['srt']['stream_id_3']), 'port' => $posted('srt_port', $defaults['srt']['port']) ], 'udp' => $posted('udp', $defaults['udp']), 'custom' => $posted('custom', $defaults['custom']) ]; // write JSON with exclusive lock and pretty print $json = json_encode($new, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES); if (file_put_contents($jsonFile, $json, LOCK_EX) === false) { $saveError = "Failed to write $jsonFile. Check permissions."; } else { $data = $new; // reload into form $saveSuccess = "Saved."; } update_service(); } ?>

HDMI Settings

URL Setting

RTMP Server Setting

SRT Caller Setting

UDP

Custom Input







' . htmlspecialchars($saveError) . '

'; if (!empty($saveSuccess)) echo '

' . htmlspecialchars($saveSuccess) . '

'; ?>