From aa84bbba800dadd552c92072478b16c2ed3c5d1c Mon Sep 17 00:00:00 2001 From: devdatt Date: Thu, 4 Dec 2025 03:07:44 +0530 Subject: [PATCH] update --- encoder/output.php | 1330 +++++++++++++++++++++++++++++++------------- 1 file changed, 949 insertions(+), 381 deletions(-) diff --git a/encoder/output.php b/encoder/output.php index c57e503..fdbbe24 100755 --- a/encoder/output.php +++ b/encoder/output.php @@ -4,31 +4,97 @@ $jsonFile = __DIR__ . '/output.json'; $defaults = [ - 'video' => [ - 'resolution' => '1920x1080', - 'format' => 'h264_qsv', - 'framerate' => '25', - 'data_rate' => '3.3M', - 'gop' => '25' - ], - 'audio' => [ - 'format' => 'aac', - 'sample_rate' => '48000', - 'bit_rate' => '96k', - 'db_gain' => '0dB' - ], 'service_display' => 'disable', - 'output_display' => '1920x1080@60.00', - 'output_display_audio' => '0,3', - 'service_rtmp_multiple' => 'disable', - 'service_rtmp_hls' => 'disable', - 'service_rtmp_dash' => 'disable', + 'service_rtmp0_multiple' => 'disable', + 'service_rtmp0_hls' => 'disable', + 'service_rtmp0_dash' => 'disable', + 'service_rtmp1_multiple' => 'disable', + 'service_rtmp1_hls' => 'disable', + 'service_rtmp1_dash' => 'disable', + 'service_udp0' => 'disable', + 'service_udp1' => 'disable', + 'service_udp2' => 'disable', 'service_srt_multiple' => 'disable', - 'service_udp' => 'disable', 'service_custom' => 'disable', - 'rtmp_multiple' => [], + + 'rtmp_multiple0' => [], + 'rtmp_multiple1' => [], 'srt_multiple' => [], - 'udp' => '', + 'rtmp0' => [ + 'resolution' => '', + 'data_rate' => '', + 'framerate' => '', + 'gop' => '', + 'extra' => '', + 'audio_data_rate' => '', + 'audio_db_gain' => '', + 'audio_sample_rate' => '' + ], + 'rtmp1' => [ + 'resolution' => '', + 'data_rate' => '', + 'framerate' => '', + 'gop' => '', + 'extra' => '', + 'audio_data_rate' => '', + 'audio_db_gain' => '', + 'audio_sample_rate' => '' + ], + 'udp0' => [ + 'udp' => '', + 'formate' => '', + 'resolution' => '', + 'data_rate' => '', + 'framerate' => '', + 'gop' => '', + 'extra' => '', + 'audio_formate' => '', + 'audio_data_rate' => '', + 'audio_db_gain' => '', + 'audio_sample_rate' => '' + ], + 'udp1' => [ + 'udp' => '', + 'formate' => '', + 'resolution' => '', + 'data_rate' => '', + 'framerate' => '', + 'gop' => '', + 'extra' => '', + 'audio_formate' => '', + 'audio_data_rate' => '', + 'audio_db_gain' => '', + 'audio_sample_rate' => '' + ], + 'udp2' => [ + 'udp' => '', + 'formate' => '', + 'resolution' => '', + 'data_rate' => '', + 'framerate' => '', + 'gop' => '', + 'extra' => '', + 'audio_formate' => '', + 'audio_data_rate' => '', + 'audio_db_gain' => '', + 'audio_sample_rate' => '' + ], + 'srt0' => [ + 'formate' => '', + 'resolution' => '', + 'data_rate' => '', + 'framerate' => '', + 'gop' => '', + 'extra' => '', + 'audio_formate' => '', + 'audio_data_rate' => '', + 'audio_db_gain' => '', + 'audio_sample_rate' => '' + ], + + 'display' => '1920x1080@60.00', + 'display_audio' => '0,3', + 'custom_output' => '' ]; @@ -57,35 +123,117 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') { }; $new = $data; - $new['video']['resolution'] = $get('output_resolution', $defaults['video']['resolution']); - $new['video']['format'] = $get('output_video_formate', $defaults['video']['format']); - $new['video']['framerate'] = $get('output_video_framerate', $defaults['video']['framerate']); - $new['video']['data_rate'] = $get('output_data_rate', $defaults['video']['data_rate']); - $new['video']['gop'] = $get('output_gop', $defaults['video']['gop']); - - $new['audio']['format'] = $get('output_audio_formate', $defaults['audio']['format']); - $new['audio']['sample_rate'] = $get('output_audio_sample_rate', $defaults['audio']['sample_rate']); - $new['audio']['bit_rate'] = $get('output_audio_bit_rate', $defaults['audio']['bit_rate']); - $new['audio']['db_gain'] = $get('output_audio_db_gain', $defaults['audio']['db_gain']); - - $new['output_display'] = $get('output_display', $defaults['output_display']); - $new['output_display_audio'] = $get('output_display_audio', $defaults['output_display_audio']); $new['service_display'] = $get('service_display', $defaults['service_display']); - $new['service_rtmp_multiple'] = $get('service_rtmp_multiple', $defaults['service_rtmp_multiple']); - $new['service_rtmp_hls'] = $get('service_rtmp_hls', $defaults['service_rtmp_hls']); - $new['service_rtmp_dash'] = $get('service_rtmp_dash', $defaults['service_rtmp_dash']); + $new['service_rtmp0_multiple'] = $get('service_rtmp0_multiple', $defaults['service_rtmp0_multiple']); + $new['service_rtmp0_hls'] = $get('service_rtmp0_hls', $defaults['service_rtmp0_hls']); + $new['service_rtmp0_dash'] = $get('service_rtmp0_dash', $defaults['service_rtmp0_dash']); + $new['service_rtmp1_multiple'] = $get('service_rtmp1_multiple', $defaults['service_rtmp1_multiple']); + $new['service_rtmp1_hls'] = $get('service_rtmp1_hls', $defaults['service_rtmp1_hls']); + $new['service_rtmp1_dash'] = $get('service_rtmp1_dash', $defaults['service_rtmp1_dash']); + $new['service_udp0'] = $get('service_udp0', $defaults['service_udp0']); + $new['service_udp1'] = $get('service_udp1', $defaults['service_udp1']); + $new['service_udp2'] = $get('service_udp2', $defaults['service_udp2']); $new['service_srt_multiple'] = $get('service_srt_multiple', $defaults['service_srt_multiple']); - $new['service_display'] = $get('service_display', $defaults['service_display']); $new['service_custom'] = $get('service_custom', $defaults['service_custom']); - $new['udp'] = $get('udp', ''); + $new['display'] = $get('display', $defaults['display']); + $new['display_audio'] = $get('display_audio', $defaults['display_audio']); + + + $new['rtmp0']['resolution'] = $get('rtmp0_resolution', $defaults['rtmp0']['resolution']); + $new['rtmp0']['data_rate'] = $get('rtmp0_data_rate', $defaults['rtmp0']['data_rate']); + $new['rtmp0']['framerate'] = $get('rtmp0_framerate', $defaults['rtmp0']['framerate']); + $new['rtmp0']['gop'] = $get('rtmp0_gop', $defaults['rtmp0']['gop']); + $new['rtmp0']['extra'] = $get('rtmp0_extra', $defaults['rtmp0']['extra']); + $new['rtmp0']['audio_data_rate'] = $get('rtmp0_audio_data_rate', $defaults['rtmp0']['audio_data_rate']); + $new['rtmp0']['audio_db_gain'] = $get('rtmp0_audio_db_gain', $defaults['rtmp0']['audio_db_gain']); + $new['rtmp0']['audio_sample_rate'] = $get('rtmp0_audio_sample_rate', $defaults['rtmp0']['audio_sample_rate']); + + $new['rtmp1']['resolution'] = $get('rtmp1_resolution', $defaults['rtmp1']['resolution']); + $new['rtmp1']['data_rate'] = $get('rtmp1_data_rate', $defaults['rtmp1']['data_rate']); + $new['rtmp1']['framerate'] = $get('rtmp1_framerate', $defaults['rtmp1']['framerate']); + $new['rtmp1']['gop'] = $get('rtmp1_gop', $defaults['rtmp1']['gop']); + $new['rtmp1']['extra'] = $get('rtmp1_extra', $defaults['rtmp1']['extra']); + $new['rtmp1']['audio_data_rate'] = $get('rtmp1_audio_data_rate', $defaults['rtmp1']['audio_data_rate']); + $new['rtmp1']['audio_db_gain'] = $get('rtmp1_audio_db_gain', $defaults['rtmp1']['audio_db_gain']); + $new['rtmp1']['audio_sample_rate'] = $get('rtmp1_audio_sample_rate', $defaults['rtmp1']['audio_sample_rate']); + + $new['udp0']['formate'] = $get('udp0_formate', $defaults['udp0']['formate']); + $new['udp0']['resolution'] = $get('udp0_resolution', $defaults['udp0']['resolution']); + $new['udp0']['data_rate'] = $get('udp0_data_rate', $defaults['udp0']['data_rate']); + $new['udp0']['framerate'] = $get('udp0_framerate', $defaults['udp0']['framerate']); + $new['udp0']['gop'] = $get('udp0_gop', $defaults['udp0']['gop']); + $new['udp0']['extra'] = $get('udp0_extra', $defaults['udp0']['extra']); + $new['udp0']['audio_formate'] = $get('udp0_audio_formate', $defaults['udp0']['audio_formate']); + $new['udp0']['audio_data_rate'] = $get('udp0_audio_data_rate', $defaults['udp0']['audio_data_rate']); + $new['udp0']['audio_db_gain'] = $get('udp0_audio_db_gain', $defaults['udp0']['audio_db_gain']); + $new['udp0']['audio_sample_rate'] = $get('udp0_audio_sample_rate', $defaults['udp0']['audio_sample_rate']); + + $new['udp1']['formate'] = $get('udp1_formate', $defaults['udp1']['formate']); + $new['udp1']['resolution'] = $get('udp1_resolution', $defaults['udp1']['resolution']); + $new['udp1']['data_rate'] = $get('udp1_data_rate', $defaults['udp1']['data_rate']); + $new['udp1']['framerate'] = $get('udp1_framerate', $defaults['udp1']['framerate']); + $new['udp1']['gop'] = $get('udp1_gop', $defaults['udp1']['gop']); + $new['udp1']['extra'] = $get('udp1_extra', $defaults['udp1']['extra']); + $new['udp1']['audio_formate'] = $get('udp1_audio_formate', $defaults['udp1']['audio_formate']); + $new['udp1']['audio_data_rate'] = $get('udp1_audio_data_rate', $defaults['udp1']['audio_data_rate']); + $new['udp1']['audio_db_gain'] = $get('udp1_audio_db_gain', $defaults['udp1']['audio_db_gain']); + $new['udp1']['audio_sample_rate'] = $get('udp1_audio_sample_rate', $defaults['udp1']['audio_sample_rate']); + + $new['udp2']['formate'] = $get('udp2_formate', $defaults['udp2']['formate']); + $new['udp2']['resolution'] = $get('udp2_resolution', $defaults['udp2']['resolution']); + $new['udp2']['data_rate'] = $get('udp2_data_rate', $defaults['udp2']['data_rate']); + $new['udp2']['framerate'] = $get('udp2_framerate', $defaults['udp2']['framerate']); + $new['udp2']['gop'] = $get('udp2_gop', $defaults['udp2']['gop']); + $new['udp2']['extra'] = $get('udp2_extra', $defaults['udp2']['extra']); + $new['udp2']['audio_formate'] = $get('udp2_audio_formate', $defaults['udp2']['audio_formate']); + $new['udp2']['audio_data_rate'] = $get('udp2_audio_data_rate', $defaults['udp2']['audio_data_rate']); + $new['udp2']['audio_db_gain'] = $get('udp2_audio_db_gain', $defaults['udp2']['audio_db_gain']); + $new['udp2']['audio_sample_rate'] = $get('udp2_audio_sample_rate', $defaults['udp2']['audio_sample_rate']); + + $new['srt0']['formate'] = $get('srt0_resolution', $defaults['srt0']['formate']); + $new['srt0']['resolution'] = $get('srt0_resolution', $defaults['srt0']['resolution']); + $new['srt0']['data_rate'] = $get('srt0_data_rate', $defaults['srt0']['data_rate']); + $new['srt0']['framerate'] = $get('srt0_framerate', $defaults['srt0']['framerate']); + $new['srt0']['gop'] = $get('srt0_gop', $defaults['srt0']['gop']); + $new['srt0']['extra'] = $get('srt0_extra', $defaults['srt0']['extra']); + $new['srt0']['audio_formate'] = $get('srt0_audio_formate', $defaults['srt0']['audio_formate']); + $new['srt0']['audio_data_rate'] = $get('srt0_audio_data_rate', $defaults['srt0']['audio_data_rate']); + $new['srt0']['audio_db_gain'] = $get('srt0_audio_db_gain', $defaults['srt0']['audio_db_gain']); + $new['srt0']['audio_sample_rate'] = $get('srt0_audio_sample_rate', $defaults['srt0']['audio_sample_rate']); + $new['custom_output'] = $get('custom_output', ''); + if ($new['rtmp0']['gop'] !== '' && !ctype_digit((string)$new['rtmp0']['gop'])) { + $errors[] = "RTMP0 GOP must be an integer."; + } + if ($new['rtmp1']['gop'] !== '' && !ctype_digit((string)$new['rtmp1']['gop'])) { + $errors[] = "RTMP1 GOP must be an integer."; + } + if ($new['udp0']['gop'] !== '' && !ctype_digit((string)$new['udp0']['gop'])) { + $errors[] = "UDP0 GOP must be an integer."; + } + if ($new['udp1']['gop'] !== '' && !ctype_digit((string)$new['udp1']['gop'])) { + $errors[] = "UDP1 GOP must be an integer."; + } + if ($new['udp2']['gop'] !== '' && !ctype_digit((string)$new['udp2']['gop'])) { + $errors[] = "UDP2 GOP must be an integer."; + } + if ($new['srt0']['gop'] !== '' && !ctype_digit((string)$new['srt0']['gop'])) { + $errors[] = "SRT0 GOP must be an integer."; + } + + for ($i = 1; $i <= 11; $i++) { - $u = $get("rtmp_{$i}", ''); - $n = $get("rtmp_{$i}_name", ''); - $e = isset($_POST["rtmp_{$i}_enable"]) ? true : false; - $new['rtmp_multiple'][$i] = ['url' => $u, 'name' => $n, 'enabled' => $e]; + $u0 = $get("rtmp0_{$i}", ''); + $n0 = $get("rtmp0_{$i}_name", ''); + $e0 = isset($_POST["rtmp0_{$i}_enable"]) ? true : false; + $new['rtmp0_multiple'][$i] = ['url' => $u0, 'name' => $n0, 'enabled' => $e0]; + + $u1 = $get("rtmp1_{$i}", ''); + $n1 = $get("rtmp1_{$i}_name", ''); + $e1 = isset($_POST["rtmp1_{$i}_enable"]) ? true : false; + $new['rtmp1_multiple'][$i] = ['url' => $u1, 'name' => $n1, 'enabled' => $e1]; $u2 = $get("srt_{$i}", ''); $n2 = $get("srt_{$i}_name", ''); @@ -93,10 +241,6 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') { $new['srt_multiple'][$i] = ['url' => $u2, 'name' => $n2, 'enabled' => $e2]; } - if ($new['video']['gop'] !== '' && !ctype_digit((string)$new['video']['gop'])) { - $errors[] = "GOP must be an integer."; - } - if (empty($errors)) { $json = json_encode($new, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES); if (file_put_contents($jsonFile, $json, LOCK_EX) === false) { @@ -110,18 +254,25 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') { update_service("display"); } - if (isset($_POST['rtmp'])) { - update_service("rtmp"); + if (isset($_POST['rtmp0'])) { + update_service("rtmp0"); + } + if (isset($_POST['rtmp1'])) { + update_service("rtmp1"); } + if (isset($_POST['udp0'])) { + update_service("udp0"); + } + if (isset($_POST['udp1'])) { + update_service("udp1"); + } + if (isset($_POST['udp2'])) { + update_service("udp2"); + } if (isset($_POST['srt'])) { update_service("srt"); } - - if (isset($_POST['udo'])) { - update_service("udo"); - } - if (isset($_POST['custom'])) { update_service("custom"); } @@ -130,74 +281,6 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
-
- -
- - -
-
- - -
-
- - -
-
- -
-

Audio Setting

- - -

-
- - -
-
- - -
-

DISPLAY - HDMI - VGA - PORTS

@@ -213,68 +296,68 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') { @@ -282,11 +365,11 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') { @@ -297,145 +380,629 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
-

RTMP Output

+

RTMP0 Output

-
- - + +
- - + +
- - + +
-
+
+ + +
- - + +
- - + +
- > - + > +
- +
-
+

RTMP1 Output

+ + + + +
+
+ +
+ + +
+
+ + +
+
+ + +
+
+
+
+ + +
+ + +

+
+ + +
+
+
+
+ + +
+ + +
+
+ + +
+
+ + +
+
+ > + +
+
+ +
+ +
+
+ +
+

UDP0 Output

+ + +
+
+ + +
+ + +
+
+ + +
+
+ + +
+
+
+ + +
+ + +
+ + +

+
+ + +
+
+
+
+ + +
+
+ + +
+ +
+ +
+
+
+

udp1 Output

+ + +
+
+ + +
+ + +
+
+ + +
+
+ + +
+
+
+ + +
+ + +
+ + +

+
+ + +
+
+
+
+ + +
+
+ + +
+ +
+ +
+
+
+

udp2 Output

+ + +
+
+ + +
+ + +
+
+ + +
+
+ + +
+
+
+ + +
+ + +
+ + +

+
+ + +
+
+
+
+ + +
+
+ + +
+ +
+ +
+
+ +

SRT Output

-
-