如何从Windows 10语音录音机文件提取录制时间戳及时长并接入ACCESS数据库?
提取Windows 10语音录音机录制文件的时间戳方案
方案1:读取文件系统属性
语音录音机生成的.m4a文件,其创建时间基本与录制完成时间一致,直接读取文件属性即可获取,适合快速实现:
- Access VBA 实现代码:
Function GetRecordingTime(filePath As String) As Date Dim fso As Object Set fso = CreateObject("Scripting.FileSystemObject") GetRecordingTime = fso.GetFile(filePath).DateCreated Set fso = Nothing End Function
- Python 实现代码:
import os from datetime import datetime file_path = r"C:\Users\你的用户名\Documents\Recordings\示例录制文件.m4a" # 获取文件创建时间(对应录制完成时间) record_time = datetime.fromtimestamp(os.path.getctime(file_path)) print(record_time.strftime("%Y-%m-%d %H:%M:%S"))
方案2:解析音频文件元数据
.m4a文件中嵌入了录制时间的元数据,可读取该字段获得更精准的录制起始时间:
- VBA 借助Shell对象读取元数据(注意:不同系统语言的属性索引可能不同,需自行验证):
Function GetMediaRecordTime(filePath As String) As Date Dim shell As Object, folderObj As Object, fileObj As Object Dim fso As Object Set fso = CreateObject("Scripting.FileSystemObject") Set shell = CreateObject("Shell.Application") Set folderObj = shell.Namespace(fso.GetParentFolderName(filePath)) Set fileObj = folderObj.ParseName(fso.GetFileName(filePath)) ' 索引30对应中文系统的"录制日期",其他语言需调整索引 GetMediaRecordTime = folderObj.GetDetailsOf(fileObj, 30) Set shell = Nothing: Set folderObj = Nothing: Set fileObj = Nothing: Set fso = Nothing End Function
- 若不确定索引,可循环枚举
folderObj.GetDetailsOf(folderObj.Items, index)找到对应属性的索引值。
方案3:读取应用内置数据库
语音录音机的所有录制记录(含精确时间戳、时长、文件路径)都存储在系统的SQLite数据库中,路径为:%LOCALAPPDATA%\Packages\Microsoft.WindowsSoundRecorder_8wekyb3d8bbwe\LocalState\SoundRecorder.db
直接查询该数据库是最精准的方式:
SELECT CreationDate, Duration, FilePath FROM Recordings
编程时可使用SQLite驱动(如VBA的SQLite ODBC驱动、Python的sqlite3库)连接数据库,直接提取所需数据写入Access。
内容的提问来源于stack exchange,提问作者jpl458
相关产品推荐
相关产品推荐

