Hy!
我想从C#(wpf)中的音频文件(标题,艺术家等)中获取一些信息。该MediaElement的不提供这个选项,所以我用这个代码(直接读取的字节):WPF C#,从音频文件中获取信息
public string[] GetAudioFileInfo(string path)
{
path = Uri.UnescapeDataString(path);
byte[] b = new byte[128];
string[] infos = new string[5]; //Title; Singer; Album; Year; Comm;
bool isSet = false;
//Read bytes
try
{
FileStream fs = new FileStream(path, FileMode.Open);
fs.Seek(-128, SeekOrigin.End);
fs.Read(b, 0, 128);
//Set flag
String sFlag = System.Text.Encoding.Default.GetString(b, 0, 3);
if (sFlag.CompareTo("TAG") == 0) isSet = true;
if (isSet)
{
infos[0] = System.Text.Encoding.Default.GetString(b, 3, 30); //Title
infos[1] = System.Text.Encoding.Default.GetString(b, 33, 30); //Singer
infos[2] = System.Text.Encoding.Default.GetString(b, 63, 30); //Album
infos[3] = System.Text.Encoding.Default.GetString(b, 93, 4); //Year
infos[4] = System.Text.Encoding.Default.GetString(b, 97, 30); //Comm
}
fs.Close();
fs.Dispose();
}
catch (IOException ex)
{
MessageBox.Show(ex.Message);
}
return infos;
}
这段代码的问题,有时它没有给予充分的标题或仅代表小立方体。 (如果我在MeidaPlayer中打开媒体,比我可以看到完整的标题)
我不确定GetString(byte [],int,int)的参数,也许我在那里犯错误。
在我prgram:
在媒体播放器:
什么文件格式?你在哪里得到你在GetString调用中使用的数字? – Justin 2011-04-25 20:05:13
mp3和wav。我尝试了几次不同的值,但通过这个值,我得到了立方体。 – SeBee 2011-04-25 20:15:06