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,
};
}