@sigmaott/base-next 1.4.41 → 1.4.45

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -24,9 +24,11 @@ function getProp(key: string) {
24
24
  }
25
25
 
26
26
  const encoderIdValue = ref(inject('encoderIdValue'))
27
+ const encoderTypeValue = ref(inject('encoderTypeValue'))
27
28
  const mappingEncoder = {
28
29
  open_h264: 'OpenH264',
29
30
  open_hevc: 'OpenHEVC',
31
+ netint: 'NETINT',
30
32
  nvenc: 'NVENC',
31
33
  passthrough: 'Passthrough',
32
34
  }
@@ -38,8 +40,8 @@ const optionsEncoder = computed(() => {
38
40
  }
39
41
  const value = encoderIdValue.value
40
42
 
41
- // TH1: encoderIdValue === -1
42
- if ((value === -1 || value === 'cpu') && triggerAction.value !== 'edit') {
43
+ // TH1: encoderTypeValue === 'SOFTWARE'
44
+ if ((encoderTypeValue.value === 'SOFTWARE' || value === 'cpu') && triggerAction.value !== 'edit') {
43
45
  return [
44
46
  { label: 'OpenH264', value: 'open_h264' },
45
47
  { label: 'OpenHEVC', value: 'open_hevc' },
@@ -47,16 +49,23 @@ const optionsEncoder = computed(() => {
47
49
  ]
48
50
  }
49
51
 
50
- // TH2: encoderIdValue là null, undefined, '' hoặc bất kỳ giá trị nào khác
51
- if (value === null || value === undefined || value === '' || triggerAction.value === 'edit') {
52
+ // TH2: encoderTypeValue là null, undefined, '' hoặc bất kỳ giá trị nào khác
53
+ if (encoderTypeValue.value === null || encoderTypeValue.value === undefined || encoderTypeValue.value === '' || triggerAction.value === 'edit') {
52
54
  return [
53
55
  { label: 'OpenH264', value: 'open_h264' },
54
56
  { label: 'OpenHEVC', value: 'open_hevc' },
55
57
  { label: 'NVENC', value: 'nvenc' },
58
+ { label: 'NETINT', value: 'netint' },
56
59
  // { label: 'Aurora4', value: 'aurora4' },
57
60
  { label: 'Passthrough', value: 'passthrough' },
58
61
  ]
59
62
  }
63
+ // TH3: encoderTypeValue là NETINT
64
+ if (encoderTypeValue.value === 'NETINT') {
65
+ return [
66
+ { label: 'NETINT', value: 'netint' },
67
+ ]
68
+ }
60
69
 
61
70
  // Mặc định cho các giá trị khác (ví dụ: 0, 1, 2, 3,...)
62
71
  return [
@@ -523,8 +532,8 @@ function fillVideo() {
523
532
  audioCodecValue.value = undefined
524
533
  videoCodecValue.value = 'h264'
525
534
  dataCodecValue.value = undefined
526
- encoderValue.value = (encoderIdValue.value !== -1 && encoderIdValue.value !== null && encoderIdValue.value !== undefined && encoderIdValue.value !== '') ? 'nvenc' : 'open_h264'
527
- presetValue.value = (encoderIdValue.value !== -1 && encoderIdValue.value !== null && encoderIdValue.value !== undefined && encoderIdValue.value !== '') ? 'llhp' : 'veryfast'
535
+ encoderValue.value = encoderTypeValue.value === 'SOFTWARE' ? 'open_h264' : encoderTypeValue.value === 'NETINT' ? 'netint' : 'nvenc'
536
+ presetValue.value = encoderTypeValue.value === 'SOFTWARE' ? 'veryfast' : encoderTypeValue.value === 'NETINT' ? 'medium' : 'llhp'
528
537
  videoRateValue.value = 4000000
529
538
  rateControlModeValue.value = 'vbr'
530
539
  minrateValue.value = undefined
@@ -544,7 +553,7 @@ function fillVideo() {
544
553
  hdrValue.value = undefined
545
554
  rcValue.value = undefined
546
555
  channelValue.value = undefined
547
- profileValue.value = undefined
556
+ profileValue.value = encoderTypeValue.value === 'NETINT' ? 'main' : undefined
548
557
  levelValue.value = undefined
549
558
  volumeValue.value = undefined
550
559
  defaultPTEValue.value = undefined
@@ -646,74 +655,74 @@ function setUndefined(type: string, value: any) {
646
655
  const optionsPreset = computed(() => {
647
656
  return encoderValue.value === 'nvenc'
648
657
  ? [
649
- {
650
- label: 'SLOW',
651
- value: 'slow',
652
- },
653
- {
654
- label: 'MEDIUM',
655
- value: 'medium',
656
- },
657
- {
658
- label: 'FAST',
659
- value: 'fast',
660
- },
661
- {
662
- label: 'HP',
663
- value: 'hp',
664
- },
665
- {
666
- label: 'HQ',
667
- value: 'hq',
668
- },
669
- {
670
- label: 'BD',
671
- value: 'bd',
672
- },
673
- {
674
- label: 'LL',
675
- value: 'll',
676
- },
677
- {
678
- label: 'LLHQ',
679
- value: 'llhq',
680
- },
681
- {
682
- label: 'LLHP',
683
- value: 'llhp',
684
- },
685
- ]
658
+ {
659
+ label: 'SLOW',
660
+ value: 'slow',
661
+ },
662
+ {
663
+ label: 'MEDIUM',
664
+ value: 'medium',
665
+ },
666
+ {
667
+ label: 'FAST',
668
+ value: 'fast',
669
+ },
670
+ {
671
+ label: 'HP',
672
+ value: 'hp',
673
+ },
674
+ {
675
+ label: 'HQ',
676
+ value: 'hq',
677
+ },
678
+ {
679
+ label: 'BD',
680
+ value: 'bd',
681
+ },
682
+ {
683
+ label: 'LL',
684
+ value: 'll',
685
+ },
686
+ {
687
+ label: 'LLHQ',
688
+ value: 'llhq',
689
+ },
690
+ {
691
+ label: 'LLHP',
692
+ value: 'llhp',
693
+ },
694
+ ]
686
695
  : [
687
- {
688
- label: 'MEDIUM',
689
- value: 'medium',
690
- },
691
- {
692
- label: 'FAST',
693
- value: 'fast',
694
- },
695
- {
696
- label: 'FASTER',
697
- value: 'faster',
698
- },
699
- {
700
- label: 'VERYFAST',
701
- value: 'veryfast',
702
- },
703
- {
704
- label: 'SUPERFAST',
705
- value: 'superfast',
706
- },
707
- {
708
- label: 'ULTRAFAST',
709
- value: 'ultrafast',
710
- },
711
- ]
696
+ {
697
+ label: 'MEDIUM',
698
+ value: 'medium',
699
+ },
700
+ {
701
+ label: 'FAST',
702
+ value: 'fast',
703
+ },
704
+ {
705
+ label: 'FASTER',
706
+ value: 'faster',
707
+ },
708
+ {
709
+ label: 'VERYFAST',
710
+ value: 'veryfast',
711
+ },
712
+ {
713
+ label: 'SUPERFAST',
714
+ value: 'superfast',
715
+ },
716
+ {
717
+ label: 'ULTRAFAST',
718
+ value: 'ultrafast',
719
+ },
720
+ ]
712
721
  })
713
722
 
714
723
  const codecSelection = computed(() => {
715
724
  return {
716
- video: (encoderValue.value === 'open_h264' || encoderValue.value === 'aurora4')
725
+ video: (encoderValue.value === 'open_h264' || encoderValue.value === 'aurora4' || encoderValue.value === 'netint')
717
726
  ? { H264: 'h264' }
718
727
  : encoderValue.value === 'open_hevc'
719
728
  ? { HEVC: 'hevc' }
@@ -903,10 +912,8 @@ async function handleApplyConfig(_value) {
903
912
 
904
913
  <template>
905
914
  <template v-if="typeValue === 'data'">
906
- <el-collapse
907
- v-model="activeNames"
908
- class="[&_.el-collapse-item\_\_content]:pb-0 [&_.el-collapse-item\_\_header]:(text-16px) ![&_.el-collapse-item\_\_header]:font-600"
909
- >
915
+ <el-collapse v-model="activeNames"
916
+ class="[&_.el-collapse-item\_\_content]:pb-0 [&_.el-collapse-item\_\_header]:(text-16px) ![&_.el-collapse-item\_\_header]:font-600">
910
917
  <el-collapse-item name="general">
911
918
  <template #title>
912
919
  <label for="" class="flex items-center gap-2 text-16px font-semibold">
@@ -918,50 +925,26 @@ async function handleApplyConfig(_value) {
918
925
  <template #label>
919
926
  <SSInformationLabel :label="$t('general.name')" :info="schemaObj.name" />
920
927
  </template>
921
- <el-input
922
- v-model="nameValue"
923
- :placeholder="$t('library_preset.enter_name')"
924
- autocomplete="off"
925
- clearable
926
- :minlength="1"
927
- :maxlength="50"
928
- show-word-limit
929
- />
928
+ <el-input v-model="nameValue" :placeholder="$t('library_preset.enter_name')" autocomplete="off" clearable
929
+ :minlength="1" :maxlength="50" show-word-limit />
930
930
  </el-form-item>
931
931
  <el-form-item v-if="isShowType" class="w-full" v-bind="typeAttrs">
932
932
  <template #label>
933
933
  <SSInformationLabel :label="$t('library_preset.type')" :info="schemaObj.type" />
934
934
  </template>
935
- <el-select
936
- v-model="typeValue"
937
- class="w-full"
938
- :disabled="!!defaultMediaType || mode === 'edit'"
939
- @change="handleChangeType"
940
- >
941
- <el-option
942
- v-for="(type, idx) in ['video', 'audio', 'data']"
943
- :key="type + idx"
944
- :value="type"
945
- :label="type"
946
- />
935
+ <el-select v-model="typeValue" class="w-full" :disabled="!!defaultMediaType || mode === 'edit'"
936
+ @change="handleChangeType">
937
+ <el-option v-for="(type, idx) in ['video', 'audio', 'data']" :key="type + idx" :value="type"
938
+ :label="type" />
947
939
  </el-select>
948
940
  </el-form-item>
949
941
  <el-form-item class="w-full" label="Codec" v-bind="dataCodecAttrs">
950
942
  <template #label>
951
943
  <SSInformationLabel label="Codec" :info="schemaObj.dataCodec" />
952
944
  </template>
953
- <el-select
954
- v-model="dataCodecValue"
955
- class="w-full"
956
- default-first-option
957
- :disabled="isPackage && typeValue !== 'data'"
958
- >
959
- <el-option
960
- v-for="(type, idx) in codecSelection"
961
- :key="type + idx"
962
- :value="type"
963
- :label="type"
964
- />
945
+ <el-select v-model="dataCodecValue" class="w-full" default-first-option
946
+ :disabled="isPackage && typeValue !== 'data'">
947
+ <el-option v-for="(type, idx) in codecSelection" :key="type + idx" :value="type" :label="type" />
965
948
  </el-select>
966
949
  </el-form-item>
967
950
  </div>
@@ -978,36 +961,23 @@ async function handleApplyConfig(_value) {
978
961
  <template #label>
979
962
  <SSInformationLabel :label="$t('EventChannel.form.label.enable')" :info="schemaSCTE35.enabled" />
980
963
  </template>
981
- <el-switch
982
- v-model="scte35OverwriteConfigValue.enabled"
983
- />
964
+ <el-switch v-model="scte35OverwriteConfigValue.enabled" />
984
965
  </el-form-item>
985
966
  <el-form-item class="w-full">
986
967
  <template #label>
987
968
  <SSInformationLabel :label="$t('fast_channel.duration')" :info="schemaSCTE35.overwriteDuration" />
988
969
  </template>
989
- <el-input-number
990
- v-model="scte35OverwriteConfigValue.overwriteDuration"
991
- :disabled="!scte35OverwriteConfigValue.enabled"
992
- :min="1"
993
- :max="180"
994
- :precision="0"
995
- class="w-full"
996
- />
970
+ <el-input-number v-model="scte35OverwriteConfigValue.overwriteDuration"
971
+ :disabled="!scte35OverwriteConfigValue.enabled" :min="1" :max="180" :precision="0" class="w-full" />
997
972
  </el-form-item>
998
973
 
999
974
  <el-form-item class="w-full" label="Delay">
1000
975
  <template #label>
1001
- <SSInformationLabel :label="$t('EventChannel.form.label.delay')" :info="schemaSCTE35.overwriteDelayTime" />
976
+ <SSInformationLabel :label="$t('EventChannel.form.label.delay')"
977
+ :info="schemaSCTE35.overwriteDelayTime" />
1002
978
  </template>
1003
- <el-input-number
1004
- v-model="scte35OverwriteConfigValue.overwriteDelayTime"
1005
- :disabled="!scte35OverwriteConfigValue.enabled"
1006
- :min="0"
1007
- :max="60"
1008
- :precision="0"
1009
- class="w-full"
1010
- />
979
+ <el-input-number v-model="scte35OverwriteConfigValue.overwriteDelayTime"
980
+ :disabled="!scte35OverwriteConfigValue.enabled" :min="0" :max="60" :precision="0" class="w-full" />
1011
981
  </el-form-item>
1012
982
  </div>
1013
983
  </el-collapse-item>
@@ -1019,40 +989,22 @@ async function handleApplyConfig(_value) {
1019
989
  <template #label>
1020
990
  <SSInformationLabel :label="$t('general.name')" :info="schemaObj.name" />
1021
991
  </template>
1022
- <el-input
1023
- v-model="nameValue"
1024
- :placeholder="$t('library_preset.enter_name')"
1025
- autocomplete="off"
1026
- clearable
1027
- :minlength="1"
1028
- :maxlength="50"
1029
- show-word-limit
1030
- />
992
+ <el-input v-model="nameValue" :placeholder="$t('library_preset.enter_name')" autocomplete="off" clearable
993
+ :minlength="1" :maxlength="50" show-word-limit />
1031
994
  </el-form-item>
1032
995
  <el-form-item v-if="isShowType" class="flex-1" v-bind="typeAttrs">
1033
996
  <template #label>
1034
997
  <SSInformationLabel :label="$t('library_preset.type')" :info="schemaObj.type" />
1035
998
  </template>
1036
- <el-select
1037
- v-model="typeValue"
1038
- class="w-full"
1039
- :disabled="!!defaultMediaType || mode === 'edit'"
1040
- @change="handleChangeType"
1041
- >
1042
- <el-option
1043
- v-for="(type, idx) in ['video', 'audio', 'data']"
1044
- :key="type + idx"
1045
- :value="type"
1046
- :label="type"
1047
- />
999
+ <el-select v-model="typeValue" class="w-full" :disabled="!!defaultMediaType || mode === 'edit'"
1000
+ @change="handleChangeType">
1001
+ <el-option v-for="(type, idx) in ['video', 'audio', 'data']" :key="type + idx" :value="type" :label="type" />
1048
1002
  </el-select>
1049
1003
  </el-form-item>
1050
1004
  </div>
1051
1005
 
1052
- <el-collapse
1053
- v-model="activeNames"
1054
- class="[&_.el-collapse-item\_\_content]:pb-0 [&_.el-collapse-item\_\_header]:(text-16px) ![&_.el-collapse-item\_\_header]:font-600"
1055
- >
1006
+ <el-collapse v-model="activeNames"
1007
+ class="[&_.el-collapse-item\_\_content]:pb-0 [&_.el-collapse-item\_\_header]:(text-16px) ![&_.el-collapse-item\_\_header]:font-600">
1056
1008
  <el-collapse-item v-if="typeValue" name="general">
1057
1009
  <template #title>
1058
1010
  <label for="" class="flex items-center gap-2 text-16px font-semibold">
@@ -1064,137 +1016,75 @@ async function handleApplyConfig(_value) {
1064
1016
  <template #label>
1065
1017
  <SSInformationLabel :label="$t('general.name')" :info="schemaObj.name" />
1066
1018
  </template>
1067
- <el-input
1068
- v-model="nameValue"
1069
- :placeholder="$t('library_preset.enter_name')"
1070
- autocomplete="off"
1071
- clearable
1072
- :minlength="1"
1073
- :maxlength="50"
1074
- show-word-limit
1075
- />
1019
+ <el-input v-model="nameValue" :placeholder="$t('library_preset.enter_name')" autocomplete="off" clearable
1020
+ :minlength="1" :maxlength="50" show-word-limit />
1076
1021
  </el-form-item>
1077
1022
  <el-form-item v-if="isShowType" class="max-w-190px min-w-190px" v-bind="typeAttrs">
1078
1023
  <template #label>
1079
1024
  <SSInformationLabel :label="$t('library_preset.type')" :info="schemaObj.type" />
1080
1025
  </template>
1081
- <el-select
1082
- v-model="typeValue"
1083
- class="w-full"
1084
- :disabled="!!defaultMediaType || mode === 'edit'"
1085
- @change="handleChangeType"
1086
- >
1087
- <el-option
1088
- v-for="(type, idx) in ['video', 'audio', 'data']"
1089
- :key="type + idx"
1090
- :value="type"
1091
- :label="type"
1092
- />
1026
+ <el-select v-model="typeValue" class="w-full" :disabled="!!defaultMediaType || mode === 'edit'"
1027
+ @change="handleChangeType">
1028
+ <el-option v-for="(type, idx) in ['video', 'audio', 'data']" :key="type + idx" :value="type"
1029
+ :label="type" />
1093
1030
  </el-select>
1094
1031
  </el-form-item>
1095
- <el-form-item v-if="isConfigEncoder && typeValue === 'video'" class="[&_.el-form-item\_\_content]:block" v-bind="encoderAttrs">
1032
+ <el-form-item v-if="isConfigEncoder && typeValue === 'video'" class="[&_.el-form-item\_\_content]:block"
1033
+ v-bind="encoderAttrs">
1096
1034
  <template #label>
1097
1035
  <SSInformationLabel :label="$t('library_preset.encoder')" :info="schemaObj.encoderType" />
1098
1036
  </template>
1099
- <el-select
1100
- v-model="encoderValue"
1101
- :disabled="isPackage"
1102
- class="max-w-190px min-w-190px"
1103
- @change="handleChangeEncoder"
1104
- >
1105
- <el-option
1106
- v-for="(e, idx) in optionsEncoder"
1107
- :key="e + idx"
1108
- :value="e.value"
1109
- :label="e.label"
1110
- />
1037
+ <el-select v-model="encoderValue" :disabled="isPackage" class="max-w-190px min-w-190px"
1038
+ @change="handleChangeEncoder">
1039
+ <el-option v-for="(e, idx) in optionsEncoder" :key="e + idx" :value="e.value" :label="e.label" />
1111
1040
  </el-select>
1112
1041
  </el-form-item>
1113
- <el-form-item
1114
- v-if="typeValue === 'video'"
1115
- class="max-w-190px min-w-190px"
1116
- label="Codec"
1117
- v-bind="videoCodecAttrs"
1118
- >
1042
+ <el-form-item v-if="typeValue === 'video'" class="max-w-190px min-w-190px" label="Codec"
1043
+ v-bind="videoCodecAttrs">
1119
1044
  <template #label>
1120
1045
  <SSInformationLabel label="Codec" :info="schemaObj.videoCodec" />
1121
1046
  </template>
1122
- <el-select
1123
- v-model="videoCodecValue"
1124
- class="max-w-190px min-w-190px"
1125
- default-first-option
1126
- :disabled="(isPackage && typeValue !== 'data' || disabledWithPTEConfig)"
1127
- @change="handleChangeVideoCodec"
1128
- >
1129
- <el-option
1130
- v-for="(type, idx) in codecSelection"
1131
- :key="type + idx"
1132
- :value="type"
1133
- :label="type"
1134
- />
1047
+ <el-select v-model="videoCodecValue" class="max-w-190px min-w-190px" default-first-option
1048
+ :disabled="(isPackage && typeValue !== 'data' || disabledWithPTEConfig)" @change="handleChangeVideoCodec">
1049
+ <el-option v-for="(type, idx) in codecSelection" :key="type + idx" :value="type" :label="type" />
1135
1050
  </el-select>
1136
1051
  </el-form-item>
1137
1052
 
1138
- <el-form-item
1139
- v-if="typeValue === 'audio'"
1140
- class="max-w-190px min-w-190px"
1141
- label="Codec"
1142
- v-bind="audioCodecAttrs"
1143
- >
1053
+ <el-form-item v-if="typeValue === 'audio'" class="max-w-190px min-w-190px" label="Codec"
1054
+ v-bind="audioCodecAttrs">
1144
1055
  <template #label>
1145
1056
  <SSInformationLabel label="Codec" :info="schemaObj.audioCodec" />
1146
1057
  </template>
1147
- <el-select
1148
- v-model="audioCodecValue"
1149
- class="max-w-190px min-w-190px"
1150
- default-first-option
1151
- :disabled="isPackage"
1152
- >
1153
- <el-option
1154
- v-for="(type, idx) in codecSelection"
1155
- :key="type + idx"
1156
- :value="type"
1157
- :label="type"
1158
- />
1058
+ <el-select v-model="audioCodecValue" class="max-w-190px min-w-190px" default-first-option
1059
+ :disabled="isPackage">
1060
+ <el-option v-for="(type, idx) in codecSelection" :key="type + idx" :value="type" :label="type" />
1159
1061
  </el-select>
1160
1062
  </el-form-item>
1161
- <el-form-item
1162
- v-if="typeValue === 'data'"
1163
- class="max-w-190px min-w-190px"
1164
- label="Codec"
1165
- v-bind="dataCodecAttrs"
1166
- >
1063
+ <el-form-item v-if="typeValue === 'data'" class="max-w-190px min-w-190px" label="Codec"
1064
+ v-bind="dataCodecAttrs">
1167
1065
  <template #label>
1168
1066
  <SSInformationLabel label="Codec" :info="schemaObj.dataCodec" />
1169
1067
  </template>
1170
- <el-select
1171
- v-model="dataCodecValue"
1172
- class="max-w-190px min-w-190px"
1173
- default-first-option
1174
- :disabled="isPackage"
1175
- >
1176
- <el-option
1177
- v-for="(type, idx) in codecSelection"
1178
- :key="type + idx"
1179
- :value="type"
1180
- :label="type"
1181
- />
1068
+ <el-select v-model="dataCodecValue" class="max-w-190px min-w-190px" default-first-option
1069
+ :disabled="isPackage">
1070
+ <el-option v-for="(type, idx) in codecSelection" :key="type + idx" :value="type" :label="type" />
1182
1071
  </el-select>
1183
1072
  </el-form-item>
1184
1073
  </div>
1185
1074
  </el-collapse-item>
1186
- <el-collapse-item v-if="typeValue === 'video' && encoderValue === 'nvenc' && isCreateChannel && encoderValue !== 'passthrough' && configPte?.pte?.enable" name="pte">
1075
+ <el-collapse-item
1076
+ v-if="typeValue === 'video' && encoderValue === 'nvenc' && isCreateChannel && encoderValue !== 'passthrough' && configPte?.pte?.enable"
1077
+ name="pte">
1187
1078
  <template #title>
1188
1079
  <label class="flex items-center gap-2 text-16px font-semibold">
1189
- PTE Config <span class="text-13px font-normal">({{ $t('base_library.used_in_video_encoding_with_ai-based_quality_assessment_to_optimize_efficiency_while_maintaining_visual_quality') }})</span>
1190
- <el-tooltip
1191
- class="box-item"
1192
- effect="dark"
1193
- content="Recommended Configuration"
1194
- placement="top"
1195
- >
1196
- <div v-if="configPte?.pte?.path" class="h-20px w-20px flex items-center justify-center rounded-full bg-primary">
1197
- <div class="i-carbon:thumbs-up-filled mb-1px cursor-pointer text-light" @click.prevent.stop="isVisibleRecommend = true" />
1080
+ PTE Config <span class="text-13px font-normal">({{
1081
+ $t('base_library.used_in_video_encoding_with_ai-based_quality_assessment_to_optimize_efficiency_while_maintaining_visual_quality')
1082
+ }})</span>
1083
+ <el-tooltip class="box-item" effect="dark" content="Recommended Configuration" placement="top">
1084
+ <div v-if="configPte?.pte?.path"
1085
+ class="h-20px w-20px flex items-center justify-center rounded-full bg-primary">
1086
+ <div class="i-carbon:thumbs-up-filled mb-1px cursor-pointer text-light"
1087
+ @click.prevent.stop="isVisibleRecommend = true" />
1198
1088
  </div>
1199
1089
  </el-tooltip>
1200
1090
  </label>
@@ -1204,57 +1094,35 @@ async function handleApplyConfig(_value) {
1204
1094
  <template #label>
1205
1095
  <SSInformationLabel label="Enable" :info="schemaObj.pteEnabled" />
1206
1096
  </template>
1207
- <el-switch
1208
- v-model="defaultPTEValue"
1209
- :disabled="!configPte?.pte?.enable"
1210
- @change="defaultPTEConfig"
1211
- />
1097
+ <el-switch v-model="defaultPTEValue" :disabled="!configPte?.pte?.enable" @change="defaultPTEConfig" />
1212
1098
  </el-form-item>
1213
1099
  <el-form-item label="vmafMax" class="max-w-190px min-w-190px" v-bind="vmafMaxAttrs">
1214
1100
  <template #label>
1215
1101
  <SSInformationLabel label="vmafMax" :info="schemaObj.vmafMax" />
1216
1102
  </template>
1217
- <el-input-number
1218
- v-model="vmafMaxValue"
1219
- :disabled="!defaultPTEValue"
1220
- class="w-full [&_.el-input\_\_inner]:text-start"
1221
- :controls="false"
1222
- :precision="2"
1223
- :max="96"
1224
- :min="vmafMinValue || 89"
1225
- />
1103
+ <el-input-number v-model="vmafMaxValue" :disabled="!defaultPTEValue"
1104
+ class="w-full [&_.el-input\_\_inner]:text-start" :controls="false" :precision="2" :max="96"
1105
+ :min="vmafMinValue || 89" />
1226
1106
  </el-form-item>
1227
1107
  <el-form-item label="vmafMin" class="max-w-190px min-w-190px" v-bind="vmafMinAttrs">
1228
1108
  <template #label>
1229
1109
  <SSInformationLabel label="vmafMin" :info="schemaObj.vmafMin" />
1230
1110
  </template>
1231
- <el-input-number
1232
- v-model="vmafMinValue"
1233
- :disabled="!defaultPTEValue"
1234
- class="w-full [&_.el-input\_\_inner]:text-start"
1235
- :controls="false"
1236
- :precision="2"
1237
- :max="vmafMaxValue || 96"
1238
- :min="89"
1239
- />
1111
+ <el-input-number v-model="vmafMinValue" :disabled="!defaultPTEValue"
1112
+ class="w-full [&_.el-input\_\_inner]:text-start" :controls="false" :precision="2"
1113
+ :max="vmafMaxValue || 96" :min="89" />
1240
1114
  </el-form-item>
1241
1115
  <el-form-item label="vmafThres" class="max-w-190px min-w-190px" v-bind="vmafThresAttrs">
1242
1116
  <template #label>
1243
1117
  <SSInformationLabel label="vmafThres" :info="schemaObj.vmafThres" />
1244
1118
  </template>
1245
- <el-input-number
1246
- v-model="vmafThresValue"
1247
- :disabled="!defaultPTEValue"
1248
- class="w-full [&_.el-input\_\_inner]:text-start"
1249
- :controls="false"
1250
- :max="1"
1251
- :min="0.5"
1252
- :precision="2"
1253
- />
1119
+ <el-input-number v-model="vmafThresValue" :disabled="!defaultPTEValue"
1120
+ class="w-full [&_.el-input\_\_inner]:text-start" :controls="false" :max="1" :min="0.5" :precision="2" />
1254
1121
  </el-form-item>
1255
1122
  </div>
1256
1123
  </el-collapse-item>
1257
- <el-collapse-item v-if="scte35 && ['copy', 'scte35'].includes(dataCodecValue) && encoderValue !== 'passthrough'" name="scte35">
1124
+ <el-collapse-item v-if="scte35 && ['copy', 'scte35'].includes(dataCodecValue) && encoderValue !== 'passthrough'"
1125
+ name="scte35">
1258
1126
  <template #title>
1259
1127
  <label for="" class="flex items-center gap-2 text-16px font-semibold">
1260
1128
  Overwrite SCTE35
@@ -1266,36 +1134,23 @@ async function handleApplyConfig(_value) {
1266
1134
  <template #label>
1267
1135
  <SSInformationLabel :label="$t('EventChannel.form.label.enable')" :info="schemaSCTE35.enabled" />
1268
1136
  </template>
1269
- <el-switch
1270
- v-model="scte35OverwriteConfigValue.enabled"
1271
- />
1137
+ <el-switch v-model="scte35OverwriteConfigValue.enabled" />
1272
1138
  </el-form-item>
1273
1139
  <el-form-item class="w-full">
1274
1140
  <template #label>
1275
1141
  <SSInformationLabel :label="$t('fast_channel.duration')" :info="schemaSCTE35.overwriteDuration" />
1276
1142
  </template>
1277
- <el-input-number
1278
- v-model="scte35OverwriteConfigValue.overwriteDuration"
1279
- :disabled="!scte35OverwriteConfigValue.enabled"
1280
- :min="1"
1281
- :max="180"
1282
- :precision="0"
1283
- class="w-full"
1284
- />
1143
+ <el-input-number v-model="scte35OverwriteConfigValue.overwriteDuration"
1144
+ :disabled="!scte35OverwriteConfigValue.enabled" :min="1" :max="180" :precision="0" class="w-full" />
1285
1145
  </el-form-item>
1286
1146
 
1287
1147
  <el-form-item class="w-full" :label="$t('EventChannel.form.label.delay')">
1288
1148
  <template #label>
1289
- <SSInformationLabel :label="$t('EventChannel.form.label.delay')" :info="schemaSCTE35.overwriteDelayTime" />
1149
+ <SSInformationLabel :label="$t('EventChannel.form.label.delay')"
1150
+ :info="schemaSCTE35.overwriteDelayTime" />
1290
1151
  </template>
1291
- <el-input-number
1292
- v-model="scte35OverwriteConfigValue.overwriteDelayTime"
1293
- :disabled="!scte35OverwriteConfigValue.enabled"
1294
- :min="0"
1295
- :max="60"
1296
- :precision="0"
1297
- class="w-full"
1298
- />
1152
+ <el-input-number v-model="scte35OverwriteConfigValue.overwriteDelayTime"
1153
+ :disabled="!scte35OverwriteConfigValue.enabled" :min="0" :max="60" :precision="0" class="w-full" />
1299
1154
  </el-form-item>
1300
1155
  </div>
1301
1156
  </el-collapse-item>
@@ -1307,121 +1162,60 @@ async function handleApplyConfig(_value) {
1307
1162
  </template>
1308
1163
 
1309
1164
  <div class="flex flex-wrap gap-2">
1310
- <el-form-item v-if="isConfigEncoder && typeValue === 'video' && encoderValue !== 'passthrough' && !isPackage" class="max-w-190px min-w-190px" v-bind="presetAttrs">
1165
+ <el-form-item v-if="isConfigEncoder && typeValue === 'video' && encoderValue !== 'passthrough' && !isPackage"
1166
+ class="max-w-190px min-w-190px" v-bind="presetAttrs">
1311
1167
  <template #label>
1312
1168
  <SSInformationLabel label="Preset" :info="schemaObj.videoPreset" />
1313
1169
  </template>
1314
1170
  <el-select v-model="presetValue" class="w-full">
1315
- <el-option
1316
- v-for="(e) in optionsPreset"
1317
- :key="e.value"
1318
- :value="e.value"
1319
- :label="e.label"
1320
- />
1171
+ <el-option v-for="(e) in optionsPreset" :key="e.value" :value="e.value" :label="e.label" />
1321
1172
  </el-select>
1322
1173
  </el-form-item>
1323
- <el-form-item
1324
- v-if="typeValue === 'video'"
1325
- label="Pixel format"
1326
- class="max-w-190px min-w-190px"
1327
- v-bind="pixelFormatAttrs"
1328
- >
1174
+ <el-form-item v-if="typeValue === 'video'" label="Pixel format" class="max-w-190px min-w-190px"
1175
+ v-bind="pixelFormatAttrs">
1329
1176
  <template #label>
1330
1177
  <SSInformationLabel label="Pixel format" :info="schemaObj.pixelFormat" />
1331
1178
  </template>
1332
- <el-select
1333
- v-model="pixelFormatValue"
1334
- :disabled="isCopiedVideoCodec"
1335
- class="w-full"
1336
- clearable
1337
- @change="(value) => setUndefined('pixel', value)"
1338
- >
1339
- <el-option
1340
- v-for="(type, idx) in ['yuv420p', 'yuv444p', 'yuv420p10le', 'yuv444p10le']"
1341
- :key="type + idx"
1342
- :value="type"
1343
- :label="type"
1344
- />
1179
+ <el-select v-model="pixelFormatValue" :disabled="isCopiedVideoCodec" class="w-full" clearable
1180
+ @change="(value) => setUndefined('pixel', value)">
1181
+ <el-option v-for="(type, idx) in ['yuv420p', 'yuv444p', 'yuv420p10le', 'yuv444p10le']" :key="type + idx"
1182
+ :value="type" :label="type" />
1345
1183
  </el-select>
1346
1184
  </el-form-item>
1347
- <el-form-item
1348
- v-if="typeValue === 'video'"
1349
- class="max-w-190px min-w-190px"
1350
- label="Profile"
1351
- v-bind="profileAttrs"
1352
- >
1185
+ <el-form-item v-if="typeValue === 'video'" class="max-w-190px min-w-190px" label="Profile"
1186
+ v-bind="profileAttrs">
1353
1187
  <template #label>
1354
1188
  <SSInformationLabel label="Profile" :info="schemaObj.videoProfile" />
1355
1189
  </template>
1356
- <el-select
1357
- v-model="profileValue"
1358
- :disabled="isCopiedVideoCodec"
1359
- class="w-full"
1360
- default-first-option
1361
- clearable
1362
- @change="(value) => setUndefined('profile', value)"
1363
- >
1364
- <el-option
1365
- v-for="(type, idx) in optionsProfile"
1366
- :key="type + idx"
1367
- :value="type"
1368
- :label="type"
1369
- />
1190
+ <el-select v-model="profileValue" :disabled="isCopiedVideoCodec" class="w-full" default-first-option
1191
+ clearable @change="(value) => setUndefined('profile', value)">
1192
+ <el-option v-for="(type, idx) in optionsProfile" :key="type + idx" :value="type" :label="type" />
1370
1193
  </el-select>
1371
1194
  </el-form-item>
1372
- <el-form-item
1373
- v-if="typeValue === 'audio'"
1374
- class="max-w-190px min-w-190px"
1375
- label="Profile"
1376
- v-bind="audioProfileAttrs"
1377
- >
1195
+ <el-form-item v-if="typeValue === 'audio'" class="max-w-190px min-w-190px" label="Profile"
1196
+ v-bind="audioProfileAttrs">
1378
1197
  <template #label>
1379
1198
  <SSInformationLabel label="Profile" :info="schemaObj.audioProfile" />
1380
1199
  </template>
1381
- <el-select
1382
- v-model="audioProfileValue"
1383
- :disabled="isCopiedVideoCodec"
1384
- class="w-full"
1385
- default-first-option
1386
- clearable
1387
- @change="(value) => setUndefined('audioProfile', value)"
1388
- >
1389
- <el-option
1390
- v-for="(type, idx) in ['aac_low', 'aac_he', 'aac_he_v2', 'aac_main', 'aac_ld', 'aac_eld']"
1391
- :key="type + idx"
1392
- :value="type"
1393
- :label="type"
1394
- />
1200
+ <el-select v-model="audioProfileValue" :disabled="isCopiedVideoCodec" class="w-full" default-first-option
1201
+ clearable @change="(value) => setUndefined('audioProfile', value)">
1202
+ <el-option v-for="(type, idx) in ['aac_low', 'aac_he', 'aac_he_v2', 'aac_main', 'aac_ld', 'aac_eld']"
1203
+ :key="type + idx" :value="type" :label="type" />
1395
1204
  </el-select>
1396
1205
  </el-form-item>
1397
- <el-form-item
1398
- v-if="typeValue === 'video'"
1399
- class="max-w-190px min-w-190px"
1400
- label="Level"
1401
- v-bind="levelAttrs"
1402
- >
1206
+ <el-form-item v-if="typeValue === 'video'" class="max-w-190px min-w-190px" label="Level" v-bind="levelAttrs">
1403
1207
  <template #label>
1404
1208
  <SSInformationLabel label="Level" :info="schemaObj.videoLevel" />
1405
1209
  </template>
1406
- <el-select
1407
- v-model="levelValue"
1408
- :disabled="isCopiedVideoCodec"
1409
- class="w-full"
1410
- default-first-option
1411
- clearable
1412
- @change="(value) => setUndefined('level', value)"
1413
- >
1414
- <el-option
1415
- v-for="(type, idx) in optionsLevel"
1416
- :key="type + idx"
1417
- :value="type"
1418
- :label="type"
1419
- />
1210
+ <el-select v-model="levelValue" :disabled="isCopiedVideoCodec" class="w-full" default-first-option clearable
1211
+ @change="(value) => setUndefined('level', value)">
1212
+ <el-option v-for="(type, idx) in optionsLevel" :key="type + idx" :value="type" :label="type" />
1420
1213
  </el-select>
1421
1214
  </el-form-item>
1422
1215
  </div>
1423
1216
  </el-collapse-item>
1424
- <el-collapse-item v-if="typeValue === 'video' && !isPackage && encoderValue !== 'passthrough'" title="Detail Information" name="output_aspect">
1217
+ <el-collapse-item v-if="typeValue === 'video' && !isPackage && encoderValue !== 'passthrough'"
1218
+ title="Detail Information" name="output_aspect">
1425
1219
  <template #title>
1426
1220
  <label class="flex items-center gap-2 text-16px font-semibold">
1427
1221
  {{ $t('SSConfig.aspect_ratio') }}
@@ -1433,19 +1227,10 @@ async function handleApplyConfig(_value) {
1433
1227
  <template #label>
1434
1228
  <SSInformationLabel label="Aspect Ratio Mode" :info="schemaObj.aspectRatioMode" />
1435
1229
  </template>
1436
- <el-select
1437
- v-model="aspectRatioModeValue"
1438
- class="w-full"
1439
- :disabled="isCopiedVideoCodec"
1440
- >
1441
- <el-option
1442
- v-for="(type, idx) in [
1443
- 'auto', 'custom', 'source',
1444
- ]"
1445
- :key="type + idx"
1446
- :value="type"
1447
- :label="type"
1448
- />
1230
+ <el-select v-model="aspectRatioModeValue" class="w-full" :disabled="isCopiedVideoCodec">
1231
+ <el-option v-for="(type, idx) in [
1232
+ 'auto', 'custom', 'source',
1233
+ ]" :key="type + idx" :value="type" :label="type" />
1449
1234
  </el-select>
1450
1235
  </el-form-item>
1451
1236
 
@@ -1453,35 +1238,22 @@ async function handleApplyConfig(_value) {
1453
1238
  <template #label>
1454
1239
  <SSInformationLabel label="Aspect Ratio Width" :info="schemaObj.aspectRatioWidth" />
1455
1240
  </template>
1456
- <el-input-number
1457
- v-model="aspectRatioWidthValue"
1458
- :min="1"
1459
- :max="1000"
1460
- class="w-full [&_.el-input\_\_inner]:text-start"
1461
- :disabled="aspectRatioModeValue !== 'custom'"
1462
- :precision="0"
1463
- :controls="false"
1464
- step-strictly
1465
- />
1241
+ <el-input-number v-model="aspectRatioWidthValue" :min="1" :max="1000"
1242
+ class="w-full [&_.el-input\_\_inner]:text-start" :disabled="aspectRatioModeValue !== 'custom'"
1243
+ :precision="0" :controls="false" step-strictly />
1466
1244
  </el-form-item>
1467
1245
  <el-form-item label="Aspect Ratio Height" class="max-w-190px min-w-190px" v-bind="aspectRatioHeightAttrs">
1468
1246
  <template #label>
1469
1247
  <SSInformationLabel label="Aspect Ratio Height" :info="schemaObj.aspectRatioHeight" />
1470
1248
  </template>
1471
- <el-input-number
1472
- v-model="aspectRatioHeightValue"
1473
- :min="1"
1474
- :max="1000"
1475
- class="w-full [&_.el-input\_\_inner]:text-start"
1476
- :disabled="aspectRatioModeValue !== 'custom'"
1477
- :precision="0"
1478
- :controls="false"
1479
- step-strictly
1480
- />
1249
+ <el-input-number v-model="aspectRatioHeightValue" :min="1" :max="1000"
1250
+ class="w-full [&_.el-input\_\_inner]:text-start" :disabled="aspectRatioModeValue !== 'custom'"
1251
+ :precision="0" :controls="false" step-strictly />
1481
1252
  </el-form-item>
1482
1253
  </div>
1483
1254
  </el-collapse-item>
1484
- <el-collapse-item v-if="typeValue === 'video' && !isPackage && encoderValue !== 'passthrough'" title="Detail Information" name="aspect">
1255
+ <el-collapse-item v-if="typeValue === 'video' && !isPackage && encoderValue !== 'passthrough'"
1256
+ title="Detail Information" name="aspect">
1485
1257
  <template #title>
1486
1258
  <label class="flex items-center gap-2 text-16px font-semibold">
1487
1259
  {{ $t('Channel.output_aspect_ratio') }}
@@ -1492,57 +1264,31 @@ async function handleApplyConfig(_value) {
1492
1264
  <template #label>
1493
1265
  <SSInformationLabel label="Width" :info="schemaObj.width" />
1494
1266
  </template>
1495
- <el-input-number
1496
- v-model="widthValue"
1497
- :min="0"
1498
- :max="7680"
1499
- class="w-full [&_.el-input\_\_inner]:text-start"
1500
- :disabled="isCopiedVideoCodec"
1501
- :precision="0"
1502
- :controls="false"
1503
- step-strictly
1504
- />
1267
+ <el-input-number v-model="widthValue" :min="0" :max="7680" class="w-full [&_.el-input\_\_inner]:text-start"
1268
+ :disabled="isCopiedVideoCodec" :precision="0" :controls="false" step-strictly />
1505
1269
  </el-form-item>
1506
1270
 
1507
1271
  <el-form-item label="Height" class="max-w-190px min-w-190px" v-bind="heightAttrs">
1508
1272
  <template #label>
1509
1273
  <SSInformationLabel label="Height" :info="schemaObj.height" />
1510
1274
  </template>
1511
- <el-input-number
1512
- v-model="heightValue"
1513
- :min="0"
1514
- :max="4320"
1515
- class="w-full [&_.el-input\_\_inner]:text-start"
1516
- :disabled="isCopiedVideoCodec"
1517
- :precision="0"
1518
- :controls="false"
1519
- step-strictly
1520
- />
1275
+ <el-input-number v-model="heightValue" :min="0" :max="4320" class="w-full [&_.el-input\_\_inner]:text-start"
1276
+ :disabled="isCopiedVideoCodec" :precision="0" :controls="false" step-strictly />
1521
1277
  </el-form-item>
1522
1278
  <el-form-item label="Scale Type" class="max-w-190px min-w-190px" v-bind="scaleTypeAttrs">
1523
1279
  <template #label>
1524
1280
  <SSInformationLabel label="Scale Type" :info="schemaObj.scaleType" />
1525
1281
  </template>
1526
- <el-select
1527
- v-model="scaleTypeValue"
1528
- class="w-full"
1529
- :disabled="isCopiedVideoCodec"
1530
- clearable
1531
- @change="(value) => setUndefined('scale', value)"
1532
- >
1533
- <el-option
1534
- v-for="(type, idx) in [
1535
- 'fitWidth',
1536
- 'fitHeight',
1537
- 'fitInside',
1538
- 'fitCrop',
1539
- 'fitBoth',
1540
- 'source',
1541
- ]"
1542
- :key="type + idx"
1543
- :value="type"
1544
- :label="type"
1545
- />
1282
+ <el-select v-model="scaleTypeValue" class="w-full" :disabled="isCopiedVideoCodec" clearable
1283
+ @change="(value) => setUndefined('scale', value)">
1284
+ <el-option v-for="(type, idx) in [
1285
+ 'fitWidth',
1286
+ 'fitHeight',
1287
+ 'fitInside',
1288
+ 'fitCrop',
1289
+ 'fitBoth',
1290
+ 'source',
1291
+ ]" :key="type + idx" :value="type" :label="type" />
1546
1292
  </el-select>
1547
1293
  </el-form-item>
1548
1294
  </div>
@@ -1560,32 +1306,16 @@ async function handleApplyConfig(_value) {
1560
1306
  <template #label>
1561
1307
  <SSInformationLabel label="FPS" :info="schemaObj.fps" />
1562
1308
  </template>
1563
- <el-input-number
1564
- v-model="fpsValue"
1565
- class="w-full [&_.el-input\_\_inner]:text-start"
1566
- :disabled="isCopiedVideoCodec"
1567
- :precision="0"
1568
- :controls="false"
1569
- step-strictly
1570
- />
1309
+ <el-input-number v-model="fpsValue" class="w-full [&_.el-input\_\_inner]:text-start"
1310
+ :disabled="isCopiedVideoCodec" :precision="0" :controls="false" step-strictly />
1571
1311
  </el-form-item>
1572
1312
  <el-form-item label="Scan Type" class="max-w-190px min-w-190px" v-bind="scanTypeAttrs">
1573
1313
  <template #label>
1574
1314
  <SSInformationLabel label="Scan Type" :info="schemaObj.scanType" />
1575
1315
  </template>
1576
- <el-select
1577
- v-model="scanTypeValue"
1578
- class="w-full"
1579
- :disabled="isCopiedVideoCodec"
1580
- clearable
1581
- @change="(value) => setUndefined('scan', value)"
1582
- >
1583
- <el-option
1584
- v-for="(type) in optionScanType"
1585
- :key="type.value"
1586
- :value="type.value"
1587
- :label="type.value"
1588
- />
1316
+ <el-select v-model="scanTypeValue" class="w-full" :disabled="isCopiedVideoCodec" clearable
1317
+ @change="(value) => setUndefined('scan', value)">
1318
+ <el-option v-for="(type) in optionScanType" :key="type.value" :value="type.value" :label="type.value" />
1589
1319
  </el-select>
1590
1320
  </el-form-item>
1591
1321
  </div>
@@ -1602,22 +1332,12 @@ async function handleApplyConfig(_value) {
1602
1332
  <template #label>
1603
1333
  <SSInformationLabel label="Rate control mode" :info="schemaObj.rateControlMode" />
1604
1334
  </template>
1605
- <el-select
1606
- v-model="rateControlModeValue"
1607
- class="max-w-190px min-w-190px flex-1"
1608
- :disabled="isCopiedVideoCodec"
1609
- clearable
1610
- @change="(value) => setUndefined('rateControlMode', value)"
1611
- >
1612
- <el-option
1613
- v-for="(type, idx) in [
1614
- 'cbr',
1615
- 'vbr',
1616
- ]"
1617
- :key="type + idx"
1618
- :value="type"
1619
- :label="type"
1620
- />
1335
+ <el-select v-model="rateControlModeValue" class="max-w-190px min-w-190px flex-1"
1336
+ :disabled="isCopiedVideoCodec" clearable @change="(value) => setUndefined('rateControlMode', value)">
1337
+ <el-option v-for="(type, idx) in [
1338
+ 'cbr',
1339
+ 'vbr',
1340
+ ]" :key="type + idx" :value="type" :label="type" />
1621
1341
  </el-select>
1622
1342
  </el-form-item>
1623
1343
 
@@ -1625,83 +1345,48 @@ async function handleApplyConfig(_value) {
1625
1345
  <template #label>
1626
1346
  <SSInformationLabel label="Constant quality" min-width="min-w-112px" :info="schemaObj.cq" />
1627
1347
  </template>
1628
- <el-input-number
1629
- v-model="cqValue"
1630
- :controls="false"
1631
- :precision="0"
1348
+ <el-input-number v-model="cqValue" :controls="false" :precision="0"
1632
1349
  class="w-full [&_.el-input\_\_inner]:text-start"
1633
- :disabled="isCopiedVideoCodec || rateControlModeValue !== 'vbr'"
1634
- :min="0"
1635
- :max="51"
1636
- />
1350
+ :disabled="isCopiedVideoCodec || rateControlModeValue !== 'vbr'" :min="0" :max="51" />
1637
1351
  </el-form-item>
1638
1352
  <el-form-item label="RC" class="max-w-190px min-w-190px flex-1" v-bind="rcAttrs">
1639
1353
  <template #label>
1640
1354
  <SSInformationLabel label="RC" :info="schemaObj.rc" />
1641
1355
  </template>
1642
- <el-select
1643
- v-model="rcValue"
1644
- class="max-w-190px min-w-190px flex-1"
1645
- :disabled="isCopiedVideoCodec || isDisabledRc"
1646
- clearable
1647
- @change="(value) => setUndefined('rc', value)"
1648
- >
1649
- <el-option
1650
- v-for="(type, idx) in optionRc"
1651
- :key="type + idx"
1652
- :value="type"
1653
- :label="type"
1654
- />
1356
+ <el-select v-model="rcValue" class="max-w-190px min-w-190px flex-1"
1357
+ :disabled="isCopiedVideoCodec || isDisabledRc" clearable @change="(value) => setUndefined('rc', value)">
1358
+ <el-option v-for="(type, idx) in optionRc" :key="type + idx" :value="type" :label="type" />
1655
1359
  </el-select>
1656
1360
  </el-form-item>
1657
- <el-form-item v-if="encoderValue !== 'passthrough' && !isPackage" class="max-w-190px min-w-190px flex-1" v-bind="videoRateAttrs">
1361
+ <el-form-item v-if="encoderValue !== 'passthrough' && !isPackage" class="max-w-190px min-w-190px flex-1"
1362
+ v-bind="videoRateAttrs">
1658
1363
  <template #label>
1659
1364
  <SSInformationLabel label="Bitrate" :info="schemaObj.videoBitrate" />
1660
1365
  </template>
1661
- <el-input
1662
- v-model="videoRateValue"
1663
- class="max-w-190px min-w-190px flex-1"
1664
- :disabled="isCopiedVideoCodec"
1665
- :formatter="formatter"
1666
- :parser="parser"
1667
- />
1366
+ <el-input v-model="videoRateValue" class="max-w-190px min-w-190px flex-1" :disabled="isCopiedVideoCodec"
1367
+ :formatter="formatter" :parser="parser" />
1668
1368
  </el-form-item>
1669
1369
  <el-form-item v-bind="minrateAttrs" class="max-w-190px min-w-190px flex-1">
1670
1370
  <template #label>
1671
1371
  <SSInformationLabel label="Minrate" :info="schemaObj.minrate" />
1672
1372
  </template>
1673
- <el-input
1674
- v-model="minrateValue"
1675
- class="max-w-190px min-w-190px flex-1"
1676
- :disabled="isCopiedVideoCodec"
1677
- :formatter="formatter"
1678
- :parser="parser"
1679
- />
1373
+ <el-input v-model="minrateValue" class="max-w-190px min-w-190px flex-1" :disabled="isCopiedVideoCodec"
1374
+ :formatter="formatter" :parser="parser" />
1680
1375
  </el-form-item>
1681
1376
 
1682
1377
  <el-form-item v-bind="maxrateAttrs" class="max-w-190px min-w-190px flex-1">
1683
1378
  <template #label>
1684
1379
  <SSInformationLabel label="Maxrate" :info="schemaObj.maxrate" />
1685
1380
  </template>
1686
- <el-input
1687
- v-model="maxrateValue"
1688
- class="max-w-190px min-w-190px flex-1"
1689
- :disabled="isCopiedVideoCodec"
1690
- :formatter="formatter"
1691
- :parser="parser"
1692
- />
1381
+ <el-input v-model="maxrateValue" class="max-w-190px min-w-190px flex-1" :disabled="isCopiedVideoCodec"
1382
+ :formatter="formatter" :parser="parser" />
1693
1383
  </el-form-item>
1694
1384
  <el-form-item v-bind="bufsizeAttrs" class="max-w-190px min-w-190px flex-1">
1695
1385
  <template #label>
1696
1386
  <SSInformationLabel label="Bufsize" :info="schemaObj.bufsize" />
1697
1387
  </template>
1698
- <el-input
1699
- v-model="bufsizeValue"
1700
- class="max-w-190px min-w-190px flex-1"
1701
- :disabled="isCopiedVideoCodec"
1702
- :formatter="formatter"
1703
- :parser="parser"
1704
- />
1388
+ <el-input v-model="bufsizeValue" class="max-w-190px min-w-190px flex-1" :disabled="isCopiedVideoCodec"
1389
+ :formatter="formatter" :parser="parser" />
1705
1390
  </el-form-item>
1706
1391
  </div>
1707
1392
  <div v-if="typeValue === 'audio'" class="flex flex-wrap gap-2">
@@ -1709,58 +1394,25 @@ async function handleApplyConfig(_value) {
1709
1394
  <template #label>
1710
1395
  <SSInformationLabel label="Bitrate" :info="schemaObj.audioBitrate" />
1711
1396
  </template>
1712
- <el-input
1713
- v-model="audioRateValue"
1714
- class="max-w-190px min-w-190px flex-1"
1715
- :disabled="isCopiedVideoCodec"
1716
- :formatter="formatter"
1717
- :parser="parser"
1718
- />
1397
+ <el-input v-model="audioRateValue" class="max-w-190px min-w-190px flex-1" :disabled="isCopiedVideoCodec"
1398
+ :formatter="formatter" :parser="parser" />
1719
1399
  </el-form-item>
1720
1400
 
1721
- <el-form-item
1722
- v-if="!isPackage"
1723
- class="max-w-190px min-w-190px flex-1"
1724
- label="Sample rate"
1725
- v-bind="sampleRateAttrs"
1726
- >
1401
+ <el-form-item v-if="!isPackage" class="max-w-190px min-w-190px flex-1" label="Sample rate"
1402
+ v-bind="sampleRateAttrs">
1727
1403
  <template #label>
1728
1404
  <SSInformationLabel label="Sample rate" :info="schemaObj.sampleRate" />
1729
1405
  </template>
1730
- <el-select
1731
- v-model="sampleRateValue"
1732
- :disabled="isCopiedAudioCodec"
1733
- class="w-full"
1734
- default-first-option
1735
- >
1736
- <el-option
1737
- v-for="(type, idx) in [44100, 48000]"
1738
- :key="type + idx"
1739
- :value="type"
1740
- :label="type"
1741
- />
1406
+ <el-select v-model="sampleRateValue" :disabled="isCopiedAudioCodec" class="w-full" default-first-option>
1407
+ <el-option v-for="(type, idx) in [44100, 48000]" :key="type + idx" :value="type" :label="type" />
1742
1408
  </el-select>
1743
1409
  </el-form-item>
1744
- <el-form-item
1745
- v-if="!isPackage"
1746
- class="max-w-190px min-w-190px flex-1"
1747
- label="Channel"
1748
- v-bind="channelAttrs"
1749
- >
1410
+ <el-form-item v-if="!isPackage" class="max-w-190px min-w-190px flex-1" label="Channel" v-bind="channelAttrs">
1750
1411
  <template #label>
1751
1412
  <SSInformationLabel label="Channel" :info="schemaObj.channel" />
1752
1413
  </template>
1753
- <el-select
1754
- v-model="channelValue"
1755
- :disabled="isCopiedAudioCodec"
1756
- class="w-full"
1757
- >
1758
- <el-option
1759
- v-for="(type, idx) in [1, 2, 6]"
1760
- :key="type + idx"
1761
- :value="type"
1762
- :label="type"
1763
- />
1414
+ <el-select v-model="channelValue" :disabled="isCopiedAudioCodec" class="w-full">
1415
+ <el-option v-for="(type, idx) in [1, 2, 6]" :key="type + idx" :value="type" :label="type" />
1764
1416
  </el-select>
1765
1417
  </el-form-item>
1766
1418
  </div>
@@ -1777,18 +1429,10 @@ async function handleApplyConfig(_value) {
1777
1429
  <template #label>
1778
1430
  <SSInformationLabel label="Hdr" :info="schemaObj.hdr" />
1779
1431
  </template>
1780
- <el-select
1781
- v-model="hdrValue"
1782
- :disabled="isCopiedVideoCodec"
1783
- clearable
1784
- @change="(value) => setUndefined('hdr', value)"
1785
- >
1786
- <el-option
1787
- v-for="(type, idx) in ['COPY', 'NONE', 'HDR10', 'HLG10', 'PQ10']"
1788
- :key="type + idx"
1789
- :value="type"
1790
- :label="type"
1791
- />
1432
+ <el-select v-model="hdrValue" :disabled="isCopiedVideoCodec" clearable
1433
+ @change="(value) => setUndefined('hdr', value)">
1434
+ <el-option v-for="(type, idx) in ['COPY', 'NONE', 'HDR10', 'HLG10', 'PQ10']" :key="type + idx"
1435
+ :value="type" :label="type" />
1792
1436
  </el-select>
1793
1437
  </el-form-item>
1794
1438
  </div>
@@ -1806,55 +1450,31 @@ async function handleApplyConfig(_value) {
1806
1450
  <template #label>
1807
1451
  <SSInformationLabel label="Bframe" :info="schemaObj.bframe" />
1808
1452
  </template>
1809
- <el-input-number
1810
- v-model="bframeValue"
1811
- class="w-full [&_.el-input\_\_inner]:text-start"
1812
- :disabled="isCopiedVideoCodec"
1813
- :controls="false"
1814
- :precision="1"
1815
- :step="0.1"
1816
- :max="3"
1817
- :min="0"
1818
- />
1453
+ <el-input-number v-model="bframeValue" class="w-full [&_.el-input\_\_inner]:text-start"
1454
+ :disabled="isCopiedVideoCodec" :controls="false" :precision="1" :step="0.1" :max="3" :min="0" />
1819
1455
  </el-form-item>
1820
1456
  <el-form-item label="Gop structure mode" class="max-w-190px min-w-190px" v-bind="gopModeAttrs">
1821
1457
  <template #label>
1822
1458
  <SSInformationLabel label="Gop structure mode" :info="schemaObj.gopMode" />
1823
1459
  </template>
1824
- <el-select
1825
- v-model="gopModeValue"
1826
- class="w-full"
1827
- :disabled="isCopiedVideoCodec"
1828
- clearable
1829
- @change="gopValue = undefined"
1830
- >
1831
- <el-option
1832
- v-for="(type, idx) in optionGopMode"
1833
- :key="type + idx"
1834
- :value="type.value"
1835
- :label="type.label"
1836
- />
1460
+ <el-select v-model="gopModeValue" class="w-full" :disabled="isCopiedVideoCodec" clearable
1461
+ @change="gopValue = undefined">
1462
+ <el-option v-for="(type, idx) in optionGopMode" :key="type + idx" :value="type.value"
1463
+ :label="type.label" />
1837
1464
  </el-select>
1838
1465
  </el-form-item>
1839
1466
  <el-form-item label="Gop size" class="max-w-190px min-w-190px" v-bind="gopAttrs">
1840
1467
  <template #label>
1841
1468
  <SSInformationLabel label="Gop size" :info="schemaObj.gopMode" />
1842
1469
  </template>
1843
- <el-input
1844
- v-model="gopValue"
1845
- :disabled="isCopiedVideoCodec || isDisabledGopSize"
1846
- :formatter="formatter"
1847
- :parser="parser"
1848
- />
1470
+ <el-input v-model="gopValue" :disabled="isCopiedVideoCodec || isDisabledGopSize" :formatter="formatter"
1471
+ :parser="parser" />
1849
1472
  </el-form-item>
1850
1473
  <el-form-item label="FixedGOP" class="max-w-190px min-w-190px" v-bind="fixedGOPAttrs">
1851
1474
  <template #label>
1852
1475
  <SSInformationLabel label="FixedGOP" :info="schemaObj.fixedGOP" />
1853
1476
  </template>
1854
- <el-switch
1855
- v-model="fixedGOPValue"
1856
- :disabled="disabledWithPTEConfig"
1857
- />
1477
+ <el-switch v-model="fixedGOPValue" :disabled="disabledWithPTEConfig" />
1858
1478
  </el-form-item>
1859
1479
  </div>
1860
1480
  </el-collapse-item>
@@ -1870,72 +1490,38 @@ async function handleApplyConfig(_value) {
1870
1490
  <template #label>
1871
1491
  <SSInformationLabel :label="$t('general.groupId')" :info="schemaObj.name" />
1872
1492
  </template>
1873
- <el-input
1874
- v-model="groupIdValue"
1875
- :placeholder="$t('library_preset.enter_group_id')"
1876
- autocomplete="off"
1877
- clearable
1878
- :maxlength="50"
1879
- show-word-limit
1880
- />
1493
+ <el-input v-model="groupIdValue" :placeholder="$t('library_preset.enter_group_id')" autocomplete="off"
1494
+ clearable :maxlength="50" show-word-limit />
1881
1495
  </el-form-item>
1882
- <el-form-item
1883
- v-if="!isPackage"
1884
- class="max-w-190px min-w-190px"
1885
- label="Volume"
1886
- v-bind="volumeAttrs"
1887
- >
1496
+ <el-form-item v-if="!isPackage" class="max-w-190px min-w-190px" label="Volume" v-bind="volumeAttrs">
1888
1497
  <template #label>
1889
1498
  <SSInformationLabel label="Volume" :info="schemaObj.volume" />
1890
1499
  </template>
1891
- <el-select
1892
- v-model="volumeValue"
1893
- :disabled="isCopiedAudioCodec"
1894
- class="w-full"
1895
- default-first-option
1896
- clearable
1897
- @change="(value) => setUndefined('volume', value)"
1898
- >
1899
- <el-option
1900
- v-for="(type, idx) in ['+5dB', '-10dB', '0.5', '2', 'loudnorm']"
1901
- :key="type + idx"
1902
- :value="type"
1903
- :label="type"
1904
- />
1500
+ <el-select v-model="volumeValue" :disabled="isCopiedAudioCodec" class="w-full" default-first-option
1501
+ clearable @change="(value) => setUndefined('volume', value)">
1502
+ <el-option v-for="(type, idx) in ['+5dB', '-10dB', '0.5', '2', 'loudnorm']" :key="type + idx"
1503
+ :value="type" :label="type" />
1905
1504
  </el-select>
1906
1505
  </el-form-item>
1907
1506
  <el-form-item class="max-w-190px min-w-190px" :label="$t('profile.language')" v-bind="languageAttrs">
1908
1507
  <template #label>
1909
1508
  <SSInformationLabel :label="$t('profile.language')" :info="schemaObj.language" />
1910
1509
  </template>
1911
- <el-select-v2
1912
- v-model="languageValue"
1913
- :options="optionsLang"
1914
- placeholder="Select"
1915
- />
1510
+ <el-select-v2 v-model="languageValue" :options="optionsLang" placeholder="Select" />
1916
1511
  </el-form-item>
1917
1512
  <el-form-item class="max-w-190px min-w-190px" :label="$t('profile.label')" v-bind="labelAttrs">
1918
1513
  <template #label>
1919
1514
  <SSInformationLabel :label="$t('profile.label')" :info="schemaObj.label" />
1920
1515
  </template>
1921
- <el-input
1922
- v-model="labelValue"
1923
- :disabled="isCopiedAudioCodec && !isPackage"
1924
- :placeholder="$t('profile.placeholder_label')"
1925
- autocomplete="off"
1926
- clearable
1927
- show-word-limit
1928
- maxlength="50"
1929
- @change="(value) => setUndefined('label', value)"
1930
- />
1516
+ <el-input v-model="labelValue" :disabled="isCopiedAudioCodec && !isPackage"
1517
+ :placeholder="$t('profile.placeholder_label')" autocomplete="off" clearable show-word-limit maxlength="50"
1518
+ @change="(value) => setUndefined('label', value)" />
1931
1519
  </el-form-item>
1932
1520
  <el-form-item class="max-w-190px min-w-190px" :label="$t('profile.default')" v-bind="defaultAttrs">
1933
1521
  <template #label>
1934
1522
  <SSInformationLabel :label="$t('profile.default')" :info="schemaObj.audioDefault" />
1935
1523
  </template>
1936
- <el-switch
1937
- v-model="defaultValue"
1938
- />
1524
+ <el-switch v-model="defaultValue" />
1939
1525
  </el-form-item>
1940
1526
  </div>
1941
1527
  </el-collapse-item>
@@ -1953,5 +1539,6 @@ async function handleApplyConfig(_value) {
1953
1539
  </el-button>
1954
1540
  </DevOnly>
1955
1541
 
1956
- <SSRecommendedConfigurationPTE v-if="isVisibleRecommend" v-model:visible="isVisibleRecommend" @apply-config="handleApplyConfig" />
1542
+ <SSRecommendedConfigurationPTE v-if="isVisibleRecommend" v-model:visible="isVisibleRecommend"
1543
+ @apply-config="handleApplyConfig" />
1957
1544
  </template>