【发布时间】:2011-04-25 20:02:34
【问题描述】:
喂!
我想从 C# (wpf) 中的音频文件(标题、艺术家等)中获取一些信息。 MediaElement 没有提供这个选项,所以我使用了这段代码(直接读取字节):
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) 的参数,可能我在那里出错。
在我的计划中:
在媒体播放器中:
【问题讨论】:
-
什么文件格式?您从哪里获得在 GetString 调用中使用的数字?
-
mp3 和 wav。我尝试了几次不同的值,但超过这个值我得到了立方体。
标签: c# wpf audio file-io encoding