'url', 'use_common_backend' => 'use_common_backend', 'hdmi' => [ 'resolution' => '1920x1080', 'audio_source' => 'hw:1,0', 'framerate' => '30', 'video_delay' => '300', 'audio_delay' => '' ], 'url' => 'https://cdn.urmic.org/unavailable.mp4', 'rtmp' => [ 'mount' => 'channel_name', 'password' => 'live', ], 'srt' => [ 'stream_id_1' => 'forever', 'stream_id_2' => 'steaming', 'stream_id_3' => 'partner', ], 'udp' => 'udp://@224.1.1.1:8000', 'custom' => '', 'common_backend' => [ 'resolution' => '1920x1080', 'data_rate' => '5M', 'framerate' => '30', 'gop' => '30', 'audio_db_gain' => '0dB', 'audio_data_rate' => '256k', 'audio_sample_rate' => '48000', 'extra' => '' ], ]; 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; }; global $defaults; $new = [ 'input' => $posted('input', $defaults['input']), 'use_common_backend' => $posted('use_common_backend', $defaults['use_common_backend']), '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']), 'video_delay' => $posted('hdmi_video_delay', $defaults['hdmi']['video_delay']), 'audio_delay' => $posted('hdmi_audio_delay', $defaults['hdmi']['audio_delay']) ], 'url' => $posted('url', $defaults['url']), 'rtmp' => [ 'mount' => $posted('rtmp_mount', $defaults['rtmp']['mount']), 'password' => $posted('rtmp_password', $defaults['rtmp']['password']), ], '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']), ], 'udp' => $posted('udp', $defaults['udp']), 'custom' => $posted('custom', $defaults['custom']), 'common_backend' => [ 'resolution' => $posted('common_backend_resolution', $defaults['common_backend']['resolution']), 'data_rate' => $posted('common_backend_data_rate', $defaults['common_backend']['data_rate']), 'framerate' => $posted('common_backend_framerate', $defaults['common_backend']['framerate']), 'gop' => $posted('common_backend_gop', $defaults['common_backend']['gop']), 'audio_db_gain' => $posted('common_backend_audio_db_gain', $defaults['common_backend']['audio_db_gain']), 'audio_data_rate' => $posted('common_backend_audio_data_rate', $defaults['common_backend']['audio_data_rate']), 'audio_sample_rate' => $posted('common_backend_audio_sample_rate', $defaults['common_backend']['audio_sample_rate']), 'extra' => $posted('common_backend_extra', $defaults['common_backend']['extra']), ] ]; if($new['use_common_backend']=='transcode_every_time'){ switch($new['input']){ case 'rtmp': $new['rtmp']['password']="bhattji"; break; case 'srt': $new['srt']['stream_id_3']="ji"; break; } } $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("input"); } ?>

HDMI Settings



URL Setting

RTMP Server Setting

SRT Caller Setting

UDP

Custom Input

Common BackEnd







' . htmlspecialchars($saveError) . '

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

' . htmlspecialchars($saveSuccess) . '

'; ?>