【发布时间】:2014-07-08 03:18:40
【问题描述】:
我正在编写一个程序,该程序从选定的媒体文件中收集信息。我想获得以下信息:艺术家、专辑、流派、时间、年份。所有基本的东西。现在我搜索了 Stack 以找到另一个表单帖子,就像我正在创建的帖子一样,没有人有,所以这里什么都没有。
我想在不使用任何第三方库的情况下检索所有这些信息。
不过,我找到了这个 sn-p 代码。
byte[] b = new byte[128];
string sTitle;
string sSinger;
string sAlbum;
string sYear;
string sComm;
FileStream fs = new FileStream(@"D:\Music\Led Zeppelin - Discography\01. Studio albums\04. Led Zeppelin IV (1971)\01. Black Dog.mp3", FileMode.Open);
fs.Seek(-128, SeekOrigin.End);
fs.Read(b, 0, 128);
bool isSet = false;
String sFlag = System.Text.Encoding.Default.GetString(b, 0, 3);
if (sFlag.CompareTo("TAG") == 0)
{
System.Console.WriteLine("Tag is setted! ");
isSet = true;
}
if (isSet)
{
//get title of song;
sTitle = System.Text.Encoding.Default.GetString(b, 3, 30);
System.Console.WriteLine("Title: " + sTitle);
//get singer;
sSinger = System.Text.Encoding.Default.GetString(b, 33, 30);
System.Console.WriteLine("Singer: " + sSinger);
//get album;
sAlbum = System.Text.Encoding.Default.GetString(b, 63, 30);
System.Console.WriteLine("Album: " + sAlbum);
//get Year of publish;
sYear = System.Text.Encoding.Default.GetString(b, 93, 4);
System.Console.WriteLine("Year: " + sYear);
//get Comment;
sComm = System.Text.Encoding.Default.GetString(b, 97, 30);
System.Console.WriteLine("Comment: " + sComm);
}
System.Console.Read();
我不明白它是如何获取它所获得的信息的。
sTitle = System.Text.Encoding.Default.GetString(b, 3, 30);
获取歌曲名称。
另外,当我得到信息时,我想自定义它,然后再次设置它。
任何帮助,谢谢:)
【问题讨论】:
-
MP3文件结构:en.wikipedia.org/wiki/MP3#File_structure那么你想要的ID结构:en.wikipedia.org/wiki/ID3