This commit is contained in:
devdatt 2026-01-11 10:26:21 +05:30
parent 962559615d
commit a929eef3a1
4 changed files with 112 additions and 19 deletions

View File

@ -1,7 +1,7 @@
<?php <?php
exec("sudo chmod 444 /sys/class/dmi/id/product_uuid"); exec("sudo chmod 444 /sys/class/dmi/id/product_uuid");
$version = 5; $version = 6;
function fail(string $msg): never function fail(string $msg): never
{ {

View File

@ -54,7 +54,9 @@ $defaults = [
'audio_format' => 'aac', 'audio_format' => 'aac',
'audio_data_rate' => '128k', 'audio_data_rate' => '128k',
'audio_db_gain' => '0dB', 'audio_db_gain' => '0dB',
'audio_sample_rate' => '48000' 'audio_sample_rate' => '48000',
'service_udp0_output' => 'default',
'udp0_service_name' =>''
], ],
'udp1' => [ 'udp1' => [
'common_backend' => 'disable', 'common_backend' => 'disable',
@ -68,7 +70,9 @@ $defaults = [
'audio_format' => 'mp2', 'audio_format' => 'mp2',
'audio_data_rate' => '128k', 'audio_data_rate' => '128k',
'audio_db_gain' => '0dB', 'audio_db_gain' => '0dB',
'audio_sample_rate' => '48000' 'audio_sample_rate' => '48000',
'service_udp1_output' => 'default',
'udp1_service_name' =>''
], ],
'udp2' => [ 'udp2' => [
'common_backend' => 'disable', 'common_backend' => 'disable',
@ -82,7 +86,9 @@ $defaults = [
'audio_format' => 'mp2', 'audio_format' => 'mp2',
'audio_data_rate' => '96k', 'audio_data_rate' => '96k',
'audio_db_gain' => '0dB', 'audio_db_gain' => '0dB',
'audio_sample_rate' => '48000' 'audio_sample_rate' => '48000',
'service_udp2_output' => 'default',
'udp2_service_name' =>''
], ],
'srt' => [ 'srt' => [
'common_backend' => 'enable', 'common_backend' => 'enable',
@ -180,6 +186,8 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$new['udp0']['audio_sample_rate'] = $get('udp0_audio_sample_rate', $defaults['udp0']['audio_sample_rate']); $new['udp0']['audio_sample_rate'] = $get('udp0_audio_sample_rate', $defaults['udp0']['audio_sample_rate']);
$new['udp0']['udp'] = $get('udp0_ip', $defaults['udp0']['udp']); $new['udp0']['udp'] = $get('udp0_ip', $defaults['udp0']['udp']);
$new['udp0']['common_backend'] = $get('udp0_common_backend', $defaults['udp0']['common_backend']); $new['udp0']['common_backend'] = $get('udp0_common_backend', $defaults['udp0']['common_backend']);
$new['udp0']['service_udp0_output'] = $get('service_udp0_output', $defaults['udp0']['service_udp0_output']);
$new['udp0']['udp0_service_name'] = $get('udp0_service_name', $defaults['udp0']['udp0_service_name']);
$new['udp1']['format'] = $get('udp1_format', $defaults['udp1']['format']); $new['udp1']['format'] = $get('udp1_format', $defaults['udp1']['format']);
$new['udp1']['resolution'] = $get('udp1_resolution', $defaults['udp1']['resolution']); $new['udp1']['resolution'] = $get('udp1_resolution', $defaults['udp1']['resolution']);
@ -193,6 +201,8 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$new['udp1']['audio_sample_rate'] = $get('udp1_audio_sample_rate', $defaults['udp1']['audio_sample_rate']); $new['udp1']['audio_sample_rate'] = $get('udp1_audio_sample_rate', $defaults['udp1']['audio_sample_rate']);
$new['udp1']['udp'] = $get('udp1_ip', $defaults['udp1']['udp']); $new['udp1']['udp'] = $get('udp1_ip', $defaults['udp1']['udp']);
$new['udp1']['common_backend'] = $get('udp1_common_backend', $defaults['udp1']['common_backend']); $new['udp1']['common_backend'] = $get('udp1_common_backend', $defaults['udp1']['common_backend']);
$new['udp1']['service_udp1_output'] = $get('service_udp1_output', $defaults['udp1']['service_udp1_output']);
$new['udp1']['udp1_service_name'] = $get('udp1_service_name', $defaults['udp1']['udp1_service_name']);
$new['udp2']['format'] = $get('udp2_format', $defaults['udp2']['format']); $new['udp2']['format'] = $get('udp2_format', $defaults['udp2']['format']);
$new['udp2']['resolution'] = $get('udp2_resolution', $defaults['udp2']['resolution']); $new['udp2']['resolution'] = $get('udp2_resolution', $defaults['udp2']['resolution']);
@ -206,6 +216,8 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$new['udp2']['audio_sample_rate'] = $get('udp2_audio_sample_rate', $defaults['udp2']['audio_sample_rate']); $new['udp2']['audio_sample_rate'] = $get('udp2_audio_sample_rate', $defaults['udp2']['audio_sample_rate']);
$new['udp2']['udp'] = $get('udp2_ip', $defaults['udp2']['udp']); $new['udp2']['udp'] = $get('udp2_ip', $defaults['udp2']['udp']);
$new['udp2']['common_backend'] = $get('udp2_common_backend', $defaults['udp2']['common_backend']); $new['udp2']['common_backend'] = $get('udp2_common_backend', $defaults['udp2']['common_backend']);
$new['udp2']['service_udp2_output'] = $get('service_udp2_output', $defaults['udp2']['service_udp2_output']);
$new['udp2']['udp2_service_name'] = $get('udp2_service_name', $defaults['udp2']['udp2_service_name']);
$new['srt']['format'] = $get('srt_format', $defaults['srt']['format']); $new['srt']['format'] = $get('srt_format', $defaults['srt']['format']);
$new['srt']['resolution'] = $get('srt_resolution', $defaults['srt']['resolution']); $new['srt']['resolution'] = $get('srt_resolution', $defaults['srt']['resolution']);
@ -644,6 +656,19 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
</select> </select>
</div> </div>
</div> </div>
<div class="dropdown-container">
<span class="dropdown-label">Output Port :</span>
<div class="dropdown">
<select name="service_udp0_output" id="service_udp0_output">
<option value="enable" <?php if ($data['udp0']['service_udp0_output'] == 'default') echo 'selected'; ?>>Default</option>
<option value="disable" <?php if ($data['udp0']['service_udp0_output'] == 'usb') echo 'selected'; ?>>USB</option>
</select>
</div>
</div>
<div class="input-group">
<input type="text" id="udp0_service_name" name="udp0_service_name" placeholder="service name" value="<?php echo htmlspecialchars($data['udp0']['udp0_service_name']); ?>">
<label for="udp0_service_name">Service Name :- </label>
</div>
<div class="dropdown-container"> <div class="dropdown-container">
<span class="dropdown-label">Common Backend :</span> <span class="dropdown-label">Common Backend :</span>
<div class="dropdown"> <div class="dropdown">
@ -772,6 +797,19 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
</select> </select>
</div> </div>
</div> </div>
<div class="dropdown-container">
<span class="dropdown-label">Output Port :</span>
<div class="dropdown">
<select name="service_udp1_output" id="service_udp1_output">
<option value="enable" <?php if ($data['udp1']['service_udp1_output'] == 'default') echo 'selected'; ?>>Default</option>
<option value="disable" <?php if ($data['udp1']['service_udp1_output'] == 'usb') echo 'selected'; ?>>USB</option>
</select>
</div>
</div>
<div class="input-group">
<input type="text" id="udp1_service_name" name="udp1_service_name" placeholder="service name" value="<?php echo htmlspecialchars($data['udp1']['udp1_service_name']); ?>">
<label for="udp1_service_name">Service Name :- </label>
</div>
<div class="dropdown-container"> <div class="dropdown-container">
<span class="dropdown-label">Common Backend :</span> <span class="dropdown-label">Common Backend :</span>
<div class="dropdown"> <div class="dropdown">
@ -900,6 +938,19 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
</select> </select>
</div> </div>
</div> </div>
<div class="dropdown-container">
<span class="dropdown-label">Output Port :</span>
<div class="dropdown">
<select name="service_udp2_output" id="service_udp2_output">
<option value="enable" <?php if ($data['udp2']['service_udp2_output'] == 'default') echo 'selected'; ?>>Default</option>
<option value="disable" <?php if ($data['udp2']['service_udp2_output'] == 'usb') echo 'selected'; ?>>USB</option>
</select>
</div>
</div>
<div class="input-group">
<input type="text" id="udp2_service_name" name="udp2_service_name" placeholder="service name" value="<?php echo htmlspecialchars($data['udp2']['udp2_service_name']); ?>">
<label for="udp2_service_name">Service Name :- </label>
</div>
<div class="dropdown-container"> <div class="dropdown-container">
<span class="dropdown-label">Common Backend :</span> <span class="dropdown-label">Common Backend :</span>
<div class="dropdown"> <div class="dropdown">

View File

@ -415,7 +415,7 @@ function update_service($which_service)
$input .= ' -vf "format=nv12,hwupload=extra_hw_frames=64,scale_qsv=' . $common_backend_resolution . ',' . setptsFromMs($hdmi_delay_video) . '"'; $input .= ' -vf "format=nv12,hwupload=extra_hw_frames=64,scale_qsv=' . $common_backend_resolution . ',' . setptsFromMs($hdmi_delay_video) . '"';
else else
$input .= ' -vf "format=nv12,hwupload=extra_hw_frames=64,scale_qsv=' . $common_backend_resolution . '"'; $input .= ' -vf "format=nv12,hwupload=extra_hw_frames=64,scale_qsv=' . $common_backend_resolution . '"';
$input .= " -c:v h264_qsv -profile:v high -level:v 4.2 " $input .= " -c:v h264_qsv -profile:v high -level:v 4.2 "
. " -b:v " . $common_backend_data_rate . " -b:v " . $common_backend_data_rate
. " -maxrate " . $common_backend_data_rate . " -maxrate " . $common_backend_data_rate
. " -bufsize 12M " . " -bufsize 12M "
@ -579,7 +579,9 @@ function update_service($which_service)
'audio_format' => 'aac', 'audio_format' => 'aac',
'audio_data_rate' => '128k', 'audio_data_rate' => '128k',
'audio_db_gain' => '0dB', 'audio_db_gain' => '0dB',
'audio_sample_rate' => '48000' 'audio_sample_rate' => '48000',
'service_udp0_output' => 'default',
'udp0_service_name' => ''
], ],
'udp1' => [ 'udp1' => [
'common_backend' => 'disable', 'common_backend' => 'disable',
@ -593,7 +595,9 @@ function update_service($which_service)
'audio_format' => 'mp2', 'audio_format' => 'mp2',
'audio_data_rate' => '128k', 'audio_data_rate' => '128k',
'audio_db_gain' => '0dB', 'audio_db_gain' => '0dB',
'audio_sample_rate' => '48000' 'audio_sample_rate' => '48000',
'service_udp1_output' => 'default',
'udp1_service_name' => ''
], ],
'udp2' => [ 'udp2' => [
'common_backend' => 'disable', 'common_backend' => 'disable',
@ -607,7 +611,9 @@ function update_service($which_service)
'audio_format' => 'mp2', 'audio_format' => 'mp2',
'audio_data_rate' => '96k', 'audio_data_rate' => '96k',
'audio_db_gain' => '0dB', 'audio_db_gain' => '0dB',
'audio_sample_rate' => '48000' 'audio_sample_rate' => '48000',
'service_udp2_output' => 'default',
'udp2_service_name' => ''
], ],
'srt' => [ 'srt' => [
'common_backend' => 'enable', 'common_backend' => 'enable',
@ -882,9 +888,19 @@ function update_service($which_service)
. ' -af "volume=' . $data['udp0']['audio_db_gain'] . '"' . ' -af "volume=' . $data['udp0']['audio_db_gain'] . '"'
. ' -ar ' . $data['udp0']['audio_sample_rate'] . ' -ar ' . $data['udp0']['audio_sample_rate']
. ' ' . $data['udp0']['extra'] . ' ' . $data['udp0']['extra']
. ' -f mpegts "' . $data['udp0']['udp'] . '?pkt_size=1316&ttl=4&reuse=1&buffer_size=1048576"'; . ' -metadata service_provider=ShreeBhattJI -f mpegts "' . $data['udp0']['udp'] . '?pkt_size=1316&ttl=4&reuse=1&buffer_size=1048576"';
break; break;
} }
if ($$use_common_backend == "use_common_backend" && $data['udp0']['format'] == "h264_qsv") {
str_replace("ffmpeg -hwaccel auto -hide_banner -i", "ffmpeg -hwaccel qsv -hwaccel_output_format qsv -hide_banner -i ", $udp0);
str_replace("scale", "scale_qsv", $udp0);
}
if ($data['udp0']['service_udp0_output'] == "usb") {
str_replace("pkt_size=1316", "pkt_size=1316&localaddr=172.16.111.111", $udp0);
}
if ($data['udp0']['udp0_service_name'] != "") {
str_replace("-f mpegts", "-metadata service_name=" . $data['udp0']['udp0_service_name'] . " -f mpegts", $udp0);
}
$file = "/var/www/encoder-udp0.sh"; $file = "/var/www/encoder-udp0.sh";
file_put_contents($file, $udp0); file_put_contents($file, $udp0);
exec('sudo systemctl enable encoder-udp0'); exec('sudo systemctl enable encoder-udp0');
@ -928,9 +944,19 @@ function update_service($which_service)
. ' -af "volume=' . $data['udp1']['audio_db_gain'] . '"' . ' -af "volume=' . $data['udp1']['audio_db_gain'] . '"'
. ' -ar ' . $data['udp1']['audio_sample_rate'] . ' -ar ' . $data['udp1']['audio_sample_rate']
. ' ' . $data['udp1']['extra'] . ' ' . $data['udp1']['extra']
. ' -f mpegts "' . $data['udp1']['udp'] . '?pkt_size=1316&ttl=4&reuse=1&buffer_size=1048576"'; . ' -metadata service_provider=ShreeBhattJI -f mpegts "' . $data['udp1']['udp'] . '?pkt_size=1316&ttl=4&reuse=1&buffer_size=1048576"';
break; break;
} }
if ($$use_common_backend == "use_common_backend" && $data['udp1']['format'] == "h264_qsv") {
str_replace("ffmpeg -hwaccel auto -hide_banner -i", "ffmpeg -hwaccel qsv -hwaccel_output_format qsv -hide_banner -i ", $udp1);
str_replace("scale", "scale_qsv", $udp1);
}
if ($data['udp1']['service_udp1_output'] == "usb") {
str_replace("pkt_size=1316", "pkt_size=1316&localaddr=172.16.111.111", $udp1);
}
if ($data['udp1']['udp1_service_name'] != "") {
str_replace("-f mpegts", "-metadata service_name=" . $data['udp1']['udp1_service_name'] . " -f mpegts", $udp1);
}
$file = "/var/www/encoder-udp1.sh"; $file = "/var/www/encoder-udp1.sh";
file_put_contents($file, $udp1); file_put_contents($file, $udp1);
exec('sudo systemctl enable encoder-udp1'); exec('sudo systemctl enable encoder-udp1');
@ -973,7 +999,17 @@ function update_service($which_service)
. ' -af "volume=' . $data['udp2']['audio_db_gain'] . '"' . ' -af "volume=' . $data['udp2']['audio_db_gain'] . '"'
. ' -ar ' . $data['udp2']['audio_sample_rate'] . ' -ar ' . $data['udp2']['audio_sample_rate']
. ' ' . $data['udp2']['extra'] . ' ' . $data['udp2']['extra']
. ' -f mpegts "' . $data['udp2']['udp'] . '?pkt_size=1316&ttl=4&reuse=1&buffer_size=1048576"'; . ' -metadata service_provider=ShreeBhattJI -f mpegts "' . $data['udp2']['udp'] . '?pkt_size=1316&ttl=4&reuse=1&buffer_size=1048576"';
if ($$use_common_backend == "use_common_backend" && $data['udp2']['format'] == "h264_qsv") {
str_replace("ffmpeg -hwaccel auto -hide_banner -i", "ffmpeg -hwaccel qsv -hwaccel_output_format qsv -hide_banner -i ", $udp2);
str_replace("scale", "scale_qsv", $udp2);
}
if ($data['udp2']['service_udp2_output'] == "usb") {
str_replace("pkt_size=1316", "pkt_size=1316&localaddr=172.16.111.111", $udp2);
}
if ($data['udp2']['udp2_service_name'] != "") {
str_replace("-f mpegts", "-metadata service_name=" . $data['udp2']['udp2_service_name'] . " -f mpegts", $udp2);
}
break; break;
} }
$file = "/var/www/encoder-udp2.sh"; $file = "/var/www/encoder-udp2.sh";
@ -1121,7 +1157,9 @@ function update_service_backend($service, $srt_pass1, $srt_pass2)
'audio_format' => 'aac', 'audio_format' => 'aac',
'audio_data_rate' => '128k', 'audio_data_rate' => '128k',
'audio_db_gain' => '0dB', 'audio_db_gain' => '0dB',
'audio_sample_rate' => '48000' 'audio_sample_rate' => '48000',
'service_udp0_output' => 'default',
'udp0_service_name' => ''
], ],
'udp1' => [ 'udp1' => [
'common_backend' => 'disable', 'common_backend' => 'disable',
@ -1135,7 +1173,9 @@ function update_service_backend($service, $srt_pass1, $srt_pass2)
'audio_format' => 'mp2', 'audio_format' => 'mp2',
'audio_data_rate' => '128k', 'audio_data_rate' => '128k',
'audio_db_gain' => '0dB', 'audio_db_gain' => '0dB',
'audio_sample_rate' => '48000' 'audio_sample_rate' => '48000',
'service_udp1_output' => 'default',
'udp1_service_name' => ''
], ],
'udp2' => [ 'udp2' => [
'common_backend' => 'disable', 'common_backend' => 'disable',
@ -1149,7 +1189,9 @@ function update_service_backend($service, $srt_pass1, $srt_pass2)
'audio_format' => 'mp2', 'audio_format' => 'mp2',
'audio_data_rate' => '96k', 'audio_data_rate' => '96k',
'audio_db_gain' => '0dB', 'audio_db_gain' => '0dB',
'audio_sample_rate' => '48000' 'audio_sample_rate' => '48000',
'service_udp2_output' => 'default',
'udp2_service_name' => ''
], ],
'srt' => [ 'srt' => [
'common_backend' => 'enable', 'common_backend' => 'enable',
@ -1165,12 +1207,12 @@ function update_service_backend($service, $srt_pass1, $srt_pass2)
'audio_sample_rate' => '48000' 'audio_sample_rate' => '48000'
], ],
'display' => '1920x1080@60.00', 'display_resolution' => '720x576',
'display_audio' => '0,3', 'display_audio' => '0,3',
'display_hdmi_sdi' => 'disable',
'custom_output' => '' 'custom_output' => ''
]; ];
for ($i = 1; $i <= 11; $i++) { for ($i = 1; $i <= 11; $i++) {
$defaults['rtmp0_multiple'][$i] = ['url' => '', 'name' => '', 'enabled' => false]; $defaults['rtmp0_multiple'][$i] = ['url' => '', 'name' => '', 'enabled' => false];
$defaults['rtmp1_multiple'][$i] = ['url' => '', 'name' => '', 'enabled' => false]; $defaults['rtmp1_multiple'][$i] = ['url' => '', 'name' => '', 'enabled' => false];

View File

@ -36,7 +36,7 @@ $text .= "</h5>";
if ($service_rtmp0_multiple == 'enable') { if ($service_rtmp0_multiple == 'enable') {
$text .= "<h5>rtmp://" . $domain . "/shree/bhattji<br>"; $text .= "<h5>rtmp://" . $domain . "/shree/bhattji<br>";
if ($service_rtmp0_dash == 'enable') { if ($service_rtmp0_hls == 'enable') {
$text .= "http://" . $domain . "/hls/shree/bhattji.m3u8<br>"; $text .= "http://" . $domain . "/hls/shree/bhattji.m3u8<br>";
if ($https) { if ($https) {
$text .= "https://" . $domain . "/hls/shree/bhattji.m3u8<br><br>"; $text .= "https://" . $domain . "/hls/shree/bhattji.m3u8<br><br>";
@ -52,7 +52,7 @@ if ($service_rtmp0_multiple == 'enable') {
} }
if ($service_rtmp1_multiple == 'enable') { if ($service_rtmp1_multiple == 'enable') {
$text .= "<h5>rtmp://" . $domain . "/shreeshree/bhattji<br>"; $text .= "<h5>rtmp://" . $domain . "/shreeshree/bhattji<br>";
if ($service_rtmp1_dash == 'enable') { if ($service_rtmp1_hls == 'enable') {
$text .= "http://" . $domain . "/hls/shreeshree/bhattji.m3u8<br>"; $text .= "http://" . $domain . "/hls/shreeshree/bhattji.m3u8<br>";
if ($https) { if ($https) {
$text .= "https://" . $domain . "/hls/shreeshree/bhattji.m3u8<br><br>"; $text .= "https://" . $domain . "/hls/shreeshree/bhattji.m3u8<br><br>";
@ -67,7 +67,7 @@ if ($service_rtmp1_multiple == 'enable') {
$text .= "</h5>"; $text .= "</h5>";
} }
if($service_srt_multiple){ if ($service_srt_multiple == 'enable') {
$text .= "<h5>srt://" . $domain . ":1937?streamid=shree/bhatt/ji</h5><br><br>"; $text .= "<h5>srt://" . $domain . ":1937?streamid=shree/bhatt/ji</h5><br><br>";
} }