diff --git a/src/App/Resources/Converter/PreferCodecConverter.cs b/src/App/Resources/Converter/PreferCodecConverter.cs index c51e7768d..ce9a2b070 100644 --- a/src/App/Resources/Converter/PreferCodecConverter.cs +++ b/src/App/Resources/Converter/PreferCodecConverter.cs @@ -28,6 +28,9 @@ public object Convert(object value, Type targetType, object parameter, string la case PreferCodec.H264: result = resourceToolkit.GetLocaleString(LanguageNames.H264); break; + case PreferCodec.Av1: + result = resourceToolkit.GetLocaleString(LanguageNames.Av1); + break; default: break; } diff --git a/src/App/Resources/Strings/zh-CN/Resources.resw b/src/App/Resources/Strings/zh-CN/Resources.resw index 9d4e0fdf8..a8baa1129 100644 --- a/src/App/Resources/Strings/zh-CN/Resources.resw +++ b/src/App/Resources/Strings/zh-CN/Resources.resw @@ -183,6 +183,9 @@ 加载完成后自动播放 + + AV1 + AV/BV 互转 @@ -920,7 +923,7 @@ BV号以 BV 开头,是一串英文数字混合的编号, 如 BV1JL4y1875w解码器偏好 - 优先选择该编码的视频流,HEVC/H.265需要额外安装解码器 + 优先选择该编码的视频流,HEVC/H.265 和 AV1 需要额外安装解码器 画质优先 diff --git a/src/Lib/Lib.Uwp/PlayerProvider/PlayerProvider.Extension.cs b/src/Lib/Lib.Uwp/PlayerProvider/PlayerProvider.Extension.cs index 5c2f4eb6a..5f2951204 100644 --- a/src/Lib/Lib.Uwp/PlayerProvider/PlayerProvider.Extension.cs +++ b/src/Lib/Lib.Uwp/PlayerProvider/PlayerProvider.Extension.cs @@ -38,7 +38,7 @@ private async Task InternalGetDashAsync(string cid, string ai { Query.Fnver, "0" }, { Query.Cid, cid.ToString() }, { Query.Fourk, "1" }, - { Query.Fnval, "16" }, + { Query.Fnval, "4048" }, { Query.Qn, "64" }, { Query.OType, "json" }, }; diff --git a/src/Models/Models.Enums/App/LanguageNames.cs b/src/Models/Models.Enums/App/LanguageNames.cs index 86eef2054..7714e9272 100644 --- a/src/Models/Models.Enums/App/LanguageNames.cs +++ b/src/Models/Models.Enums/App/LanguageNames.cs @@ -432,6 +432,7 @@ public enum LanguageNames ScreenshotFolder, CopyToClipboardAfterScreenshot, OpenFileAfterScreenshot, + Av1, #pragma warning restore SA1602 // Enumeration items should be documented } } diff --git a/src/Models/Models.Enums/App/PreferCodec.cs b/src/Models/Models.Enums/App/PreferCodec.cs index 2019fadd4..a68ef5337 100644 --- a/src/Models/Models.Enums/App/PreferCodec.cs +++ b/src/Models/Models.Enums/App/PreferCodec.cs @@ -21,5 +21,10 @@ public enum PreferCodec /// FLV. /// Flv, + + /// + /// AV1. + /// + Av1, } } diff --git a/src/ViewModels/ViewModels.Uwp/Common/PlayerViewModel/PlayerViewModel.Dash.cs b/src/ViewModels/ViewModels.Uwp/Common/PlayerViewModel/PlayerViewModel.Dash.cs index 971221a70..16013281f 100644 --- a/src/ViewModels/ViewModels.Uwp/Common/PlayerViewModel/PlayerViewModel.Dash.cs +++ b/src/ViewModels/ViewModels.Uwp/Common/PlayerViewModel/PlayerViewModel.Dash.cs @@ -29,7 +29,7 @@ private async Task InitializeOnlineDashVideoAsync() httpClient.DefaultRequestHeaders.Add("User-Agent", ServiceConstants.DefaultUserAgentString); var mpdStr = await _fileToolkit.ReadPackageFile(AppConstants.DashVideoMPDFile); - var videos = _videoList.Where(p => p.CodecId == GetPreferCodecId()).ToList(); + var videos = _videoList.Where(p => p.Codecs.Contains(GetPreferCodecId())).ToList(); if (videos.Count == 0) { videos = _videoList; diff --git a/src/ViewModels/ViewModels.Uwp/Common/PlayerViewModel/PlayerViewModel.Methods.cs b/src/ViewModels/ViewModels.Uwp/Common/PlayerViewModel/PlayerViewModel.Methods.cs index ca01284a8..9fd18a79e 100644 --- a/src/ViewModels/ViewModels.Uwp/Common/PlayerViewModel/PlayerViewModel.Methods.cs +++ b/src/ViewModels/ViewModels.Uwp/Common/PlayerViewModel/PlayerViewModel.Methods.cs @@ -592,13 +592,16 @@ private void InitializeTimer() } } - private int GetPreferCodecId() + private string GetPreferCodecId() { - var id = 7; + var id = "avc"; switch (PreferCodec) { case PreferCodec.H265: - id = 12; + id = "hev"; + break; + case PreferCodec.Av1: + id = "av01"; break; default: break; diff --git a/src/ViewModels/ViewModels.Uwp/Common/PlayerViewModel/PlayerViewModel.cs b/src/ViewModels/ViewModels.Uwp/Common/PlayerViewModel/PlayerViewModel.cs index ed15abb10..899d2d678 100644 --- a/src/ViewModels/ViewModels.Uwp/Common/PlayerViewModel/PlayerViewModel.cs +++ b/src/ViewModels/ViewModels.Uwp/Common/PlayerViewModel/PlayerViewModel.cs @@ -434,7 +434,7 @@ public async Task ChangeFormatAsync(int formatId) } else { - var tempVideo = conditionStreams.Where(p => p.CodecId == preferCodecId).FirstOrDefault(); + var tempVideo = conditionStreams.Where(p => p.Codecs.Contains(preferCodecId)).FirstOrDefault(p => p.Id == formatId); if (tempVideo == null) { tempVideo = conditionStreams.First(); diff --git a/src/ViewModels/ViewModels.Uwp/Common/SettingViewModel/SettingViewModel.cs b/src/ViewModels/ViewModels.Uwp/Common/SettingViewModel/SettingViewModel.cs index c366c4715..be9b77202 100644 --- a/src/ViewModels/ViewModels.Uwp/Common/SettingViewModel/SettingViewModel.cs +++ b/src/ViewModels/ViewModels.Uwp/Common/SettingViewModel/SettingViewModel.cs @@ -154,6 +154,7 @@ private void PreferCodecInit() { PreferCodec.H264, PreferCodec.H265, + PreferCodec.Av1, }; }