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.minBufferTime,
this.video, this.video,
this.audio, this.audio,
this.dolby,
this.flac,
}); });
int? duration; int? duration;
double? minBufferTime; double? minBufferTime;
List<VideoItem>? video; List<VideoItem>? video;
List<AudioItem>? audio; List<AudioItem>? audio;
Dolby? dolby;
Flac? flac;
Dash.fromJson(Map<String, dynamic> json) { Dash.fromJson(Map<String, dynamic> json) {
duration = json['duration']; duration = json['duration'];
@@ -138,8 +134,16 @@ class Dash {
audio = (json['audio'] as List?) audio = (json['audio'] as List?)
?.map<AudioItem>((e) => AudioItem.fromJson(e)) ?.map<AudioItem>((e) => AudioItem.fromJson(e))
.toList(); .toList();
dolby = json['dolby'] != null ? Dolby.fromJson(json['dolby']) : null; if (json['dolby']?['audio'] case List list) {
flac = json['flac'] != null ? Flac.fromJson(json['flac']) : null; (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>(); 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; AudioItem? firstAudio;
final List<AudioItem> audiosList = data.dash!.audio ?? <AudioItem>[]; final audiosList = data.dash?.audio;
if (data.dash!.dolby?.audio != null && if (audiosList != null && audiosList.isNotEmpty) {
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 List<int> numbers = audiosList.map((map) => map.id!).toList(); final List<int> numbers = audiosList.map((map) => map.id!).toList();
int closestNumber = Utils.findClosestNumber( int closestNumber = Utils.findClosestNumber(
plPlayerController.cacheAudioQa, plPlayerController.cacheAudioQa,