Signed-off-by: bggRGjQaUbCoE <githubaccount56556@proton.me>
This commit is contained in:
bggRGjQaUbCoE
2025-09-26 20:01:10 +08:00
parent d33e2071b6
commit 34bdfe1641
2 changed files with 12 additions and 49 deletions

View File

@@ -118,16 +118,12 @@ class Dash {
this.minBufferTime,
this.video,
this.audio,
this.dolby,
this.flac,
});
int? duration;
double? minBufferTime;
List<VideoItem>? video;
List<AudioItem>? audio;
Dolby? dolby;
Flac? flac;
Dash.fromJson(Map<String, dynamic> json) {
duration = json['duration'];
@@ -138,8 +134,16 @@ class Dash {
audio = (json['audio'] as List?)
?.map<AudioItem>((e) => AudioItem.fromJson(e))
.toList();
dolby = json['dolby'] != null ? Dolby.fromJson(json['dolby']) : null;
flac = json['flac'] != null ? Flac.fromJson(json['flac']) : null;
if (json['dolby']?['audio'] case List list) {
(audio ??= <AudioItem>[]).insertAll(
0,
list.map((e) => AudioItem.fromJson(e)),
);
}
final flacAudio = json['flac']?['audio'];
if (flacAudio != null) {
(audio ??= <AudioItem>[]).insert(0, AudioItem.fromJson(flacAudio));
}
}
}
@@ -300,33 +304,3 @@ class FormatItem {
codecs = (json['codecs'] as List?)?.fromCast<String>();
}
}
class Dolby {
Dolby({
this.type,
this.audio,
});
// 1普通杜比音效 2全景杜比音效
int? type;
List<AudioItem>? audio;
Dolby.fromJson(Map<String, dynamic> json) {
type = json['type'];
audio = (json['audio'] as List?)
?.map<AudioItem>((e) => AudioItem.fromJson(e))
.toList();
}
}
class Flac {
Flac({this.display, this.audio});
bool? display;
AudioItem? audio;
Flac.fromJson(Map<String, dynamic> json) {
display = json['display'];
audio = json['audio'] != null ? AudioItem.fromJson(json['audio']) : null;
}
}

View File

@@ -1272,19 +1272,8 @@ class VideoDetailController extends GetxController
/// 优先顺序 设置中指定质量 -> 当前可选的最高质量
AudioItem? firstAudio;
final List<AudioItem> audiosList = data.dash!.audio ?? <AudioItem>[];
if (data.dash!.dolby?.audio != null &&
data.dash!.dolby!.audio!.isNotEmpty) {
// 杜比
audiosList.insert(0, data.dash!.dolby!.audio!.first);
}
if (data.dash!.flac?.audio != null) {
// 无损
audiosList.insert(0, data.dash!.flac!.audio!);
}
if (audiosList.isNotEmpty) {
final audiosList = data.dash?.audio;
if (audiosList != null && audiosList.isNotEmpty) {
final List<int> numbers = audiosList.map((map) => map.id!).toList();
int closestNumber = Utils.findClosestNumber(
plPlayerController.cacheAudioQa,