重构音频文件元数据模型并添加数据库支持

This commit is contained in:
2026-04-16 14:06:05 +08:00
parent e0da9dfd4b
commit ecf3751e2d
3 changed files with 58 additions and 44 deletions
@@ -3,49 +3,62 @@
/// <summary> /// <summary>
/// 音频文件元数据实体类,对应音频资产管理系统中的文件记录 /// 音频文件元数据实体类,对应音频资产管理系统中的文件记录
/// </summary> /// </summary>
public class FileMeta public class AudioFileMeta
{ {
#region
/// <summary>主键ID,音频文件的唯一数字标识符</summary> /// <summary>主键ID,音频文件的唯一数字标识符</summary>
public int Id { get; set; } public required int Id { get; set; }
/// <summary>全局唯一标识符,通常为UUID,用于跨系统识别</summary> /// <summary>全局唯一标识符,通常为UUID,用于跨系统识别</summary>
public string UniqueId { get; set; } public required string UniqueId { get; set; }
/// <summary>文件的MD5值,用于查重</summary> /// <summary>文件的MD5值,用于查重</summary>
public string Md5 { get; set; } public required string Md5 { get; set; }
/// <summary>原始导入路径,音频文件被导入时的完整文件路径</summary>
public required string Path { get; set; }
/// <summary>文件名,包含扩展名的音频文件名称(如 sound.wav</summary>
public required string Filename { get; set; }
/// <summary>文件夹,文件所在的文件夹名称</summary>
public required string Folder { get; set; }
/// <summary>目录,文件的存储目录路径</summary>
public required string Directory { get; set; }
/// <summary>时长,音频文件的播放长度(通常以秒为单位)</summary>
public required double Duration { get; set; }
/// <summary>时长,以采样数记录的时长</summary>
public required uint TotalSamples { get; set; }
/// <summary>位深度,音频采样位深(如 16、24、32 bit</summary>
public required int BitDepth { get; set; }
/// <summary>声道数,如 1=单声道、2=立体声、6=5.1环绕声</summary>
public required int Channels { get; set; }
/// <summary>采样率,如 44100、48000、96000 Hz</summary>
public required int SampleRate { get; set; }
/// <summary>文件类型,音频格式(WAV、MP3、AIFF、FLAC等)</summary>
public required string Type { get; set; }
/// <summary>导入日期,音频入库的时间</summary>
public required DateTime DateAdded { get; set; }
/// <summary>修改日期,音频创建或录制的日期</summary>
public required DateTime OriginalModificationDate { get; set; }
/// <summary>创建时间,音频文件的原始创建时间</summary>
public required DateTime OriginationTime { get; set; }
#endregion
/// <summary>短ID,便于人工识别或显示的简短标识</summary> /// <summary>短ID,便于人工识别或显示的简短标识</summary>
public string? ShortId { get; set; } public string? ShortId { get; set; }
/// <summary>原始导入路径,音频文件被导入时的完整文件路径</summary>
public string Path { get; set; }
/// <summary>文件名,包含扩展名的音频文件名称(如 sound.wav</summary>
public string Filename { get; set; }
/// <summary>文件夹,文件所在的文件夹名称</summary>
public string Folder { get; set; }
/// <summary>目录,文件的存储目录路径</summary>
public string Directory { get; set; }
/// <summary>时长,音频文件的播放长度(通常以秒为单位)</summary>
public double Duration { get; set; }
public int TotalSamples { get; set; }
/// <summary>位深度,音频采样位深(如 16、24、32 bit</summary>
public int BitDepth { get; set; }
/// <summary>声道数,如 1=单声道、2=立体声、6=5.1环绕声</summary>
public int Channels { get; set; }
/// <summary>采样率,如 44100、48000、96000 Hz</summary>
public int SampleRate { get; set; }
/// <summary>文件类型,音频格式(WAV、MP3、AIFF、FLAC等)</summary>
public string Type { get; set; }
/// <summary>节拍速度,每分钟节拍数,用于音乐类音频</summary> /// <summary>节拍速度,每分钟节拍数,用于音乐类音频</summary>
public double? Bpm { get; set; } public double? Bpm { get; set; }
@@ -82,7 +95,7 @@ public class FileMeta
public string? Keywords { get; set; } public string? Keywords { get; set; }
/// <summary>评分,音频质量或推荐度评分(如 0-5星)</summary> /// <summary>评分,音频质量或推荐度评分(如 0-5星)</summary>
public decimal? Rating { get; set; } public uint? Rating { get; set; }
/// <summary>艺术家,表演者或演奏者名称</summary> /// <summary>艺术家,表演者或演奏者名称</summary>
public string? Artist { get; set; } public string? Artist { get; set; }
@@ -137,15 +150,6 @@ public class FileMeta
/// <summary>同步点,用于音视频同步的参考点</summary> /// <summary>同步点,用于音视频同步的参考点</summary>
public int? SyncPoint { get; set; } public int? SyncPoint { get; set; }
/// <summary>导入日期,音频入库的时间</summary>
public DateTime DateAdded { get; set; }
/// <summary>修改日期,音频创建或录制的日期</summary>
public DateTime OriginalModificationDate { get; set; }
/// <summary>创建时间,音频文件的原始创建时间</summary>
public DateTime OriginationTime { get; set; }
public DateTime? ReleaseDate { get; set; } public DateTime? ReleaseDate { get; set; }
@@ -155,7 +159,7 @@ public class FileMeta
public bool? IsEdited { get; set; } public bool? IsEdited { get; set; }
/// <summary>是否已分割,布尔值,标记是否从长文件中分割出来</summary> /// <summary>是否已分割,布尔值,标记是否从长文件中分割出来</summary>
public int? IsSplit { get; set; } public bool? IsSplit { get; set; }
/// <summary>位置,录音地点或存储位置</summary> /// <summary>位置,录音地点或存储位置</summary>
public string? Location { get; set; } public string? Location { get; set; }
+1
View File
@@ -9,6 +9,7 @@
<ItemGroup> <ItemGroup>
<PackageReference Include="Dapper" Version="2.1.72" /> <PackageReference Include="Dapper" Version="2.1.72" />
<PackageReference Include="System.Data.SQLite" Version="2.0.3" /> <PackageReference Include="System.Data.SQLite" Version="2.0.3" />
<PackageReference Include="z440.atl.core" Version="7.12.0" />
</ItemGroup> </ItemGroup>
</Project> </Project>
+9
View File
@@ -0,0 +1,9 @@
namespace OCES.Resonance.Core;
public static class Database
{
internal static bool AddEntry()
{
return false;
}
}