C#实现获取mp3 Tag信息的方法
本文实例讲述了C#实现获取mp3Tag信息的方法。分享给大家供大家参考,具体如下:
usingSystem; usingSystem.Collections.Generic; usingSystem.Text; usingSystem.IO; namespaceFoxer_Player_1._1 { publicstructMp3Info { publicstringidentify;//TAG,三个字节 publicstringTitle;//歌曲名,30个字节 publicstringArtist;//歌手名,30个字节 publicstringAlbum;//所属唱片,30个字节 publicstringYear;//年,4个字符 publicstringComment;//注释,28个字节 publiccharreserved1;//保留位,一个字节 publiccharreserved2;//保留位,一个字节 publiccharreserved3;//保留位,一个字节 } //////Mp3文件信息类 /// publicclassMp3FileInfo { Mp3Infoinfo; //////构造函数,输入文件名即得到信息 /// ///publicMp3FileInfo(Stringmp3FilePos) { info=getMp3Info(getLast128(mp3FilePos)); } /// ///获取整理后的Mp3文件名,这里以标题和艺术家名定文件名 /// ///publicStringGetOriginalName() { returnformatString(info.Title.Trim())+"-"+formatString(info.Artist.Trim()); } /// ///去除\0字符 /// ////// privatestaticStringformatString(Stringstr) { returnstr.Replace("\0",""); } /// ///获取MP3文件最后128个字节 /// ///文件名 /// 返回字节数组 publicstaticbyte[]getLast128(stringFileName) { FileStreamfs=newFileStream(FileName,FileMode.Open,Fileaccess.Read); Streamstream=fs; stream.Seek(-128,SeekOrigin.End); constintseekPos=128; intrl=0; byte[]Info=newbyte[seekPos]; rl=stream.Read(Info,0,seekPos); fs.Close(); stream.Close(); returnInfo; } //////获取MP3歌曲的相关信息 /// ///从MP3文件中截取的二进制信息 /// 返回一个Mp3Info结构 publicstaticMp3InfogetMp3Info(byte[]Info) { Mp3Infomp3Info=newMp3Info(); stringstr=null; inti; intposition=0;//循环的起始值 intcurrentIndex=0;//Info的当前索引值 //获取TAG标识 for(i=currentIndex;i///将字节数组转换成字符串 /// /// 字节数组 /// 返回转换后的字符串 publicstaticstringbyteToString(byte[]b) { Encodingenc=Encoding.GetEncoding("GB2312"); stringstr=enc.GetString(b); str=str.Substring(0,str.IndexOf("#CONTENT#")>=0?str.IndexOf("#CONTENT#"):str.Length);//去掉无用字符 returnstr; } } }
更多关于C#相关内容感兴趣的读者可查看本站专题:《C#文件操作常用技巧汇总》、《C#遍历算法与技巧总结》、《C#程序设计之线程使用技巧总结》、《C#常见控件用法教程》、《WinForm控件用法总结》、《C#数据结构与算法教程》及《C#面向对象程序设计入门教程》
希望本文所述对大家C#程序设计有所帮助。