是否可以查询在Windows 10上播放音乐时显示的元数据?
虽然我发现了有关使用SMTC等MediaPlayer
显示元数据的信息,但我无法找到任何方法来处理某个进程(它本身不会播放任何媒体)输出相同的元数据。
答案 0 :(得分:2)
有一个.NET Framework包装器可以完成此任务,称为WindowsMediaController。
它通过利用Windows.SDK.Contracts package在.NET Framework中使用Windows运行时API来实现。
这是将打印当前正在播放的媒体的基本实现:
using System;
using Windows.Media.Control;
//
public static void PrintCurrentlyPlaying()
{
var sessionManager = GlobalSystemMediaTransportControlsSessionManager.RequestAsync().GetAwaiter().GetResult();
var currentSession = sessionManager.GetCurrentSession();
var mediaProperties = currentSession.TryGetMediaPropertiesAsync().GetAwaiter().GetResult();
Console.WriteLine($"Playing {mediaProperties.Title} by {mediaProperties.Artist}");
}
答案 1 :(得分:1)
目前这是不可能的,因为我所知道的API没有提供此功能。
答案 2 :(得分:-1)
MusicProperties
类可以访问项目的音乐相关属性(如文件或文件夹)。
您可以使用GetMusicPropertiesAsync()
方法获取音乐属性,例如标题,专辑,时间跨度等。以下是详细过程。
try
{
FileOpenPicker picker = new FileOpenPicker();
picker.ViewMode = PickerViewMode.Thumbnail;
picker.SuggestedStartLocation = PickerLocationId.MusicLibrary;
picker.FileTypeFilter.Add(".mp3");
var file = await picker.PickSingleFileAsync();
if (file != null)
{
StringBuilder outputText = new StringBuilder();
MusicProperties musicProperties = await file.Properties.GetMusicPropertiesAsync();
outputText.AppendLine("Album: " + musicProperties.Album);
outputText.AppendLine("Rating: " + musicProperties.Rating);
outputText.AppendLine("Title: " + musicProperties.Title);
outputText.AppendLine("TimeSpan: " + musicProperties.Duration.ToString());
MusicTextFiled.Text = outputText.ToString();
}
}
catch (FileNotFoundException)
{
}