播放列表和 MediaCollection 对象

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

MediaCollection 对象提供对各种特殊播放列表的访问权限,并包含用于从图元文件创建新播放列表的方法。

以下方法检索特殊播放列表:

  • getAll
  • getByAlbum
  • getByAttribute
  • getByAuthor
  • getByGenre
  • getByName

顾名思义,这些方法检索包含库中符合特定条件的所有媒体项的播放列表。

注意不要混淆 MediaCollection。具有 PlaylistCollectiongetByName 方法。getByName 方法。 MediaCollection 方法返回一个 Playlist 对象,其中包含具有指定名称的所有媒体项。 PlaylistCollection 方法返回一个 PlaylistArray 对象,其中包含具有指定名称的所有播放列表。

可以使用 MediaCollectionadd 方法,用于将播放列表以及媒体项添加到库中。 若要添加播放列表,请将 方法的路径传递给定义播放列表的图元文件。 方法始终返回 Media 对象。 不能在 MediaPlaylist 对象之间强制转换。 若要使用添加的播放列表,请检索与 Media 对象同名的 Playlist 对象。

以下 C# 示例演示如何使用 MediaCollection 按类型检索媒体。getByAttribute 方法。 此代码检索与给定类型关联的所有属性的名称,以及这些属性的读/写或只读状态。 它生成一个文件,其中包含音频、视频、广播、播放列表、其他、音乐和照片类型的属性列表。

string strOutFile = "AttribList.txt";    // Name of the output file
...
StreamWriter sw = new StreamWriter(strOutFile, true);

sw.Write(getMediaCollectionNames("Audio"));
sw.Write(getMediaCollectionNames("Video"));
sw.Write(getMediaCollectionNames("Radio"));
sw.Write(getMediaCollectionNames("Playlist"));
sw.Write(getMediaCollectionNames("Other"));
sw.Write(getMediaCollectionNames("Music"));
sw.Write(getMediaCollectionNames("Photo"));
sw.Close();
...
// The getMediaCollection method retrieves the names of
// all attributes for a specified type.
private string getMediaCollectionNames(string sSchema)
{
IWMPPlaylist playlist;
IWMPMedia media;
string strResult = "";    // Cumulative list of attributes
string strAttrName = "";  // Attribute name
string strReadWrite = ""; // Read/Write status of attribute
int iAttrCount = 0;       // Count of playlist attributes

// Retrieve a playlist corresponding to the requested type.
playlist = Player.mediaCollection.getByAttribute("MediaType", sSchema);

// Initialize the result string
strResult += "\n" + sSchema.ToString() + " Schema: \n";

// Retrieve the attributes for the playlist
if (playlist.count != 0)
{
    media = playlist.get_Item(0);
    iAttrCount = media.attributeCount;
    for (int i = 0; i < iAttrCount; i++)
    {
        strAttrName = media.getAttributeName(i);
        strResult += "   " + strAttrName  +"\n";
        if (media.isReadOnlyItem(strAttrName))
            strReadWrite = "Read Only";
        else
            strReadWrite = "Read/Write";
        strResult += "         " + strReadWrite + "\n";
    }
}

return strResult;
}

以下 C# 示例演示如何将播放列表从图元文件添加到库。

// Add a playlist as a media item
IWMPMedia Media = Player.mediaCollection.add("c:\\testPlayList.asx");

静态播放列表包括特定的媒体项。 自动播放列表在每次打开时都会搜索库,并且在不同时间可能包含不同的媒体项。 可以使用 MediaCollection 将静态和自动播放列表添加到库中。add 方法。 还可以使用 PlaylistCollection 添加静态播放列表。importPlaylist 方法。

管理播放列表

MediaCollection 对象

Playlist 对象

PlaylistCollection 对象

Playlists 和 PlaylistCollection 对象

静态和自动播放列表