了解属性源

[与此页面关联的功能(Windows 媒体播放器 SDK)是旧版功能。 它已被 MediaPlayer 取代。 MediaPlayer 已针对Windows 10和Windows 11进行了优化。 Microsoft 强烈建议新代码尽可能使用 MediaPlayer 而不是 Windows 媒体播放器 SDK。 如果可能,Microsoft 建议重写使用旧 API 的现有代码以使用新 API。]

可以使用的属性或元数据来自各种源。 本主题介绍这些源,这些源从具有较少潜在属性的方案迁移到具有更多潜在属性的方案。

当用户播放 CD 或 DVD 时,你几乎可以访问有关光盘本身或光盘的媒体内容的元数据。商业光盘通常不包括属性元数据。

如果用户在连接到 Internet 时播放了 CD 或 DVD,则当光盘位于 CD 或 DVD 驱动器中时,你可能有权访问更多属性。 当Windows 媒体播放器连接到 Internet 并播放 CD 或 DVD 时,播放器会从联机数据库检索该光盘的元数据。 播放器在 “正在播放” 和库中的单独节点中显示此信息。 属性不存储在库数据库中,但会缓存它们。 如果缓存尚未清空,则当光盘位于驱动器中时,应用程序将有权访问这些属性。

注意

用户可以选择禁止从联机数据库检索媒体信息。 在这种情况下,唯一可用的属性是来自数字媒体文件的属性、用户在库中手动输入的属性,以及播放器本身生成的属性 (,例如与) 播放项目的频率相关的属性。

 

如果用户播放未添加到库的数字媒体文件,则可以访问文件中的属性。

如果用户播放已添加到库的数字媒体文件,则可以访问仅存储在库中的属性、仅存储在文件中的属性以及存储在库和文件中的属性。

可用于添加到库的媒体项的属性因源数字媒体文件的创建方式以及添加源数字媒体文件后用户采取的操作而异。

  • 首次创建内容时,内容创建者可能会在文件中插入属性信息。 例如,如果使用应用程序创建和分发数字媒体文件,则可以控制最初在文件中插入哪些属性。

  • 如果用户使用高级标记编辑器或库用户界面修改已添加到库的媒体项的属性数据,Windows 媒体播放器将该数据添加到库数据库。 播放器将一些属性直接添加到文件中,因为它们仅存储在文件中。 在某些不确定的时间,读/写属性与文件同步,以便存储在库和文件中的属性具有相同的值。

  • 如果用户在连接到 Internet 时使用 Windows 媒体播放器 从 CD 复制曲目,则效果与用户使用 Windows 媒体播放器 修改了属性几乎相同。 属性将添加到库数据库,这些属性从文件本身和联机数据库中提取。 某些属性仅存储在 文件中。 在某个不确定的时间,库数据库会与文件同步。

  • 如果使用 Windows 媒体播放器 控件编写代码以更改已添加到库中的媒体项中的现有读/写属性的值,则效果与用户使用 Windows 媒体播放器 修改属性时的效果几乎相同。 该值写入库数据库,并在数据库与文件同步的某个不确定时间。

  • [!注意]

    如果在应用程序中嵌入控件,则在用户运行Windows 媒体播放器之前,更改的文件属性不会写入数字媒体文件本身。 如果在用 C++ 编写的远程应用程序中使用 控件,更改的文件属性将在进行更改后不久写入数字媒体文件。 在任一情况下,都可以通过库立即获得更改。

     

  • 如果使用 Windows 媒体播放器 控件编写代码以将自定义属性插入媒体项,则仅当应用程序具有对 Media 对象的引用时,属性及其值才会保留。 属性及其值都不会存储在库数据库或数字媒体文件中(如果有)。

最简单的情况是使用提供的数字媒体文件时。 在这种情况下,你知道文件中包含特定属性。 将媒体项添加到库时,你知道可以使用这些属性。

媒体项属性