preparing for h265 stream

This commit is contained in:
Devdatt Bhatt 2026-05-18 11:54:06 +00:00
parent ce38735ce3
commit 79043bfc8a
3 changed files with 13 additions and 14 deletions

View File

@ -16,12 +16,12 @@ $defaults = [
'use_common_backend' => 'use_common_backend', 'use_common_backend' => 'use_common_backend',
'hdmi' => [ 'hdmi' => [
'resolution' => '1920x1080', 'resolution' => '1920x1080',
'audio_source' => 'hw:1,0', 'audio_source' => 'hw:0,0',
'framerate' => '30', 'framerate' => '30',
'video_delay' => '', 'video_delay' => '',
'audio_delay' => '', 'audio_delay' => '',
'brightness' => '0', 'brightness' => '0',
'contrast' => '148', 'contrast' => '128',
'saturation' => '128', 'saturation' => '128',
'hue' => '0', 'hue' => '0',
], ],

View File

@ -693,7 +693,7 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
<select name="udp0_format" id="udp0_format"> <select name="udp0_format" id="udp0_format">
<option value="mpeg2video" <?php if ($data['udp0']['format'] == 'mpeg2video') echo 'selected'; ?>>mpeg2</option> <option value="mpeg2video" <?php if ($data['udp0']['format'] == 'mpeg2video') echo 'selected'; ?>>mpeg2</option>
<option value="h264_qsv" <?php if ($data['udp0']['format'] == 'h264_qsv') echo 'selected'; ?>>h264</option> <option value="h264_qsv" <?php if ($data['udp0']['format'] == 'h264_qsv') echo 'selected'; ?>>h264</option>
<option value="h265" <?php if ($data['udp0']['format'] == 'h265') echo 'selected'; ?>>h265</option> <option value="hevc_qsv" <?php if ($data['udp0']['format'] == 'h265') echo 'selected'; ?>>h265</option>
</select> </select>
</div> </div>
</div> </div>
@ -834,7 +834,7 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
<select name="udp1_format" id="udp1_format"> <select name="udp1_format" id="udp1_format">
<option value="mpeg2video" <?php if ($data['udp1']['format'] == 'mpeg2video') echo 'selected'; ?>>mpeg2</option> <option value="mpeg2video" <?php if ($data['udp1']['format'] == 'mpeg2video') echo 'selected'; ?>>mpeg2</option>
<option value="h264_qsv" <?php if ($data['udp1']['format'] == 'h264_qsv') echo 'selected'; ?>>h264</option> <option value="h264_qsv" <?php if ($data['udp1']['format'] == 'h264_qsv') echo 'selected'; ?>>h264</option>
<option value="h265" <?php if ($data['udp1']['format'] == 'h265') echo 'selected'; ?>>h265</option> <option value="hevc_qsv" <?php if ($data['udp1']['format'] == 'h265') echo 'selected'; ?>>h265</option>
</select> </select>
</div> </div>
</div> </div>
@ -975,7 +975,7 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
<select name="udp2_format" id="udp2_format"> <select name="udp2_format" id="udp2_format">
<option value="mpeg2video" <?php if ($data['udp2']['format'] == 'mpeg2video') echo 'selected'; ?>>mpeg2</option> <option value="mpeg2video" <?php if ($data['udp2']['format'] == 'mpeg2video') echo 'selected'; ?>>mpeg2</option>
<option value="h264_qsv" <?php if ($data['udp2']['format'] == 'h264_qsv') echo 'selected'; ?>>h264</option> <option value="h264_qsv" <?php if ($data['udp2']['format'] == 'h264_qsv') echo 'selected'; ?>>h264</option>
<option value="h265" <?php if ($data['udp2']['format'] == 'h265') echo 'selected'; ?>>h265</option> <option value="hevc_qsv" <?php if ($data['udp2']['format'] == 'h265') echo 'selected'; ?>>h265</option>
</select> </select>
</div> </div>
</div> </div>
@ -1106,9 +1106,8 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
<span class="dropdown-label">format :</span> <span class="dropdown-label">format :</span>
<div class="dropdown"> <div class="dropdown">
<select name="srt_format" id="srt_format"> <select name="srt_format" id="srt_format">
<option value="mpeg2video" <?php if ($data['srt']['format'] == 'mpeg2video') echo 'selected'; ?>>mpeg2</option>
<option value="h264_qsv" <?php if ($data['srt']['format'] == 'h264_qsv') echo 'selected'; ?>>h264</option> <option value="h264_qsv" <?php if ($data['srt']['format'] == 'h264_qsv') echo 'selected'; ?>>h264</option>
<option value="h265" <?php if ($data['srt']['format'] == 'h265') echo 'selected'; ?>>h265</option> <option value="hevc_qsv" <?php if ($data['srt']['format'] == 'h265') echo 'selected'; ?>>h265</option>
</select> </select>
</div> </div>
</div> </div>

View File

@ -330,7 +330,7 @@ function update_service($which_service)
'use_common_backend' => 'use_common_backend', 'use_common_backend' => 'use_common_backend',
'hdmi' => [ 'hdmi' => [
'resolution' => '1920x1080', 'resolution' => '1920x1080',
'audio_source' => 'hw:1,0', 'audio_source' => 'hw:0,0',
'framerate' => '30', 'framerate' => '30',
'video_delay' => '', 'video_delay' => '',
'audio_delay' => '', 'audio_delay' => '',
@ -411,7 +411,7 @@ function update_service($which_service)
. " -framerate " . $data['hdmi']['framerate'] . " -framerate " . $data['hdmi']['framerate']
. " -i /dev/video0" . " -i /dev/video0"
. " -f alsa -thread_queue_size 128 -i " . $data['hdmi']['audio_source'] . " -f alsa -thread_queue_size 128 -i " . $data['hdmi']['audio_source']
. " -c:v h264_qsv -profile:v high -level:v 3.1 -global_quality 20 5M -maxrate 5M -bufsize 5M " . " -c:v h264_qsv -profile:v main -global_quality 20 5M -maxrate 5M -bufsize 5M "
. " -c:a aac -b:a 265k -ar 48000 -async 1 -muxrate 0 -pat_period 0.1 -pkt_size 1316 "; . " -c:a aac -b:a 265k -ar 48000 -async 1 -muxrate 0 -pat_period 0.1 -pkt_size 1316 ";
if ($hdmi_delay_video != "") if ($hdmi_delay_video != "")
$input .= ' -vf "vpp_qsv=format=nv12:' . $common_backend_resolution_vpp . ',' . setptsFromMs($hdmi_delay_video) . '"'; $input .= ' -vf "vpp_qsv=format=nv12:' . $common_backend_resolution_vpp . ',' . setptsFromMs($hdmi_delay_video) . '"';
@ -456,7 +456,7 @@ function update_service($which_service)
$input .= ' -vf "' . $vf_input . '"'; $input .= ' -vf "' . $vf_input . '"';
} }
$input .= " -c:v h264_qsv -profile:v high -level:v 4.0 -global_quality 20 " $input .= " -c:v h264_qsv -profile:v main -global_quality 20 "
. " -b:v " . $common_backend_data_rate . " -b:v " . $common_backend_data_rate
. " -maxrate " . $common_backend_data_rate . " -maxrate " . $common_backend_data_rate
. " -bufsize 1M "; . " -bufsize 1M ";
@ -944,7 +944,7 @@ function update_service($which_service)
$udp0 = str_replace("ffmpeg -hwaccel auto -hide_banner -i", "ffmpeg -hwaccel qsv -hwaccel_output_format qsv -hide_banner -i ", $udp0); $udp0 = str_replace("ffmpeg -hwaccel auto -hide_banner -i", "ffmpeg -hwaccel qsv -hwaccel_output_format qsv -hide_banner -i ", $udp0);
$udp0 = str_replace("scale", "vpp_qsv", $udp0); $udp0 = str_replace("scale", "vpp_qsv", $udp0);
$udp0 = str_replace("resolution_resolution_resolution", toVppScale($data['udp0']['resolution']), $udp0); $udp0 = str_replace("resolution_resolution_resolution", toVppScale($data['udp0']['resolution']), $udp0);
$udp0 = str_replace("h264_qsv", "h264_qsv -profile:v high -level:v 3.1 -global_quality 20 ", $udp0); $udp0 = str_replace("h264_qsv", "h264_qsv -profile:v main -global_quality 20 ", $udp0);
} else { } else {
$udp0 = str_replace("resolution_resolution_resolution", str_replace("x", ":", $data['udp0']['resolution']), $udp0); $udp0 = str_replace("resolution_resolution_resolution", str_replace("x", ":", $data['udp0']['resolution']), $udp0);
} }
@ -1007,7 +1007,7 @@ function update_service($which_service)
$udp1 = str_replace("ffmpeg -hwaccel auto -hide_banner -i", "ffmpeg -hwaccel qsv -hwaccel_output_format qsv -hide_banner -i ", $udp1); $udp1 = str_replace("ffmpeg -hwaccel auto -hide_banner -i", "ffmpeg -hwaccel qsv -hwaccel_output_format qsv -hide_banner -i ", $udp1);
$udp1 = str_replace("scale", "vpp_qsv", $udp1); $udp1 = str_replace("scale", "vpp_qsv", $udp1);
$udp1 = str_replace("resolution_resolution_resolution", toVppScale($data['udp1']['resolution']), $udp1); $udp1 = str_replace("resolution_resolution_resolution", toVppScale($data['udp1']['resolution']), $udp1);
$udp1 = str_replace("h264_qsv", "h264_qsv -profile:v main -level:v 3.1 -global_quality 20 ", $udp1); $udp1 = str_replace("h264_qsv", "h264_qsv -profile:v main -global_quality 20 ", $udp1);
} else { } else {
$udp1 = str_replace("resolution_resolution_resolution", str_replace("x", ":", $data['udp1']['resolution']), $udp1); $udp1 = str_replace("resolution_resolution_resolution", str_replace("x", ":", $data['udp1']['resolution']), $udp1);
} }
@ -1067,7 +1067,7 @@ function update_service($which_service)
$udp2 = str_replace("ffmpeg -hwaccel auto -hide_banner -i", "ffmpeg -hwaccel qsv -hwaccel_output_format qsv -hide_banner -i ", $udp2); $udp2 = str_replace("ffmpeg -hwaccel auto -hide_banner -i", "ffmpeg -hwaccel qsv -hwaccel_output_format qsv -hide_banner -i ", $udp2);
$udp2 = str_replace("scale", "vpp_qsv", $udp2); $udp2 = str_replace("scale", "vpp_qsv", $udp2);
$udp2 = str_replace("resolution_resolution_resolution", toVppScale($data['udp2']['resolution']), $udp2); $udp2 = str_replace("resolution_resolution_resolution", toVppScale($data['udp2']['resolution']), $udp2);
$udp2 = str_replace("h264_qsv", "h264_qsv -profile:v main -level:v 3.1 -global_quality 20 ", $udp2); $udp2 = str_replace("h264_qsv", "h264_qsv -profile:v main -global_quality 20 ", $udp2);
} else { } else {
$udp2 = str_replace("resolution_resolution_resolution", str_replace("x", ":", $data['udp2']['resolution']), $udp2); $udp2 = str_replace("resolution_resolution_resolution", str_replace("x", ":", $data['udp2']['resolution']), $udp2);
} }
@ -1132,7 +1132,7 @@ function update_service_backend($service, $srt_pass1, $srt_pass2)
'use_common_backend' => 'use_common_backend', 'use_common_backend' => 'use_common_backend',
'hdmi' => [ 'hdmi' => [
'resolution' => '1920x1080', 'resolution' => '1920x1080',
'audio_source' => 'hw:1,0', 'audio_source' => 'hw:0,0',
'framerate' => '30', 'framerate' => '30',
'video_delay' => '', 'video_delay' => '',
'audio_delay' => '', 'audio_delay' => '',