Beispiel #1
0
 /// <summary>
 /// 构造函数,输入文件名即得到信息
 /// </summary>
 /// <param name="mp3FilePos"></param>
 public Mp3FileInfo(String mp3FilePos)
 {
     this._path = mp3FilePos;
     info       = getMp3Info(getLast128(mp3FilePos));
 }
Beispiel #2
0
 public Mp3Info GetMp3()
 {
     info = getMp3Info(getLast128(this._path));
     return(info);
 }
Beispiel #3
0
        /// <summary>
        /// 获取MP3歌曲的相关信息
        /// </summary>
        /// <param name = "Info">从MP3文件中截取的二进制信息</param>
        /// <returns>返回一个Mp3Info结构</returns>
        private Mp3Info getMp3Info(byte[] Info)
        {
            Mp3Info mp3Info = new Mp3Info();

            string str = null;
            int    i;
            int    position     = 0; //循环的起始值
            int    currentIndex = 0; //Info的当前索引值

            //获取TAG标识

            for (i = currentIndex; i < currentIndex + 3; i++)
            {
                str = str + (char)Info[i];
                position++;
            }

            currentIndex     = position;
            mp3Info.identify = str;


            //获取歌名
            str = null;
            byte[] bytTitle = new byte[30];//将歌名部分读到一个单独的数组中
            int    j        = 0;

            for (i = currentIndex; i < currentIndex + 30; i++)
            {
                bytTitle[j] = Info[i];
                position++;
                j++;
            }

            currentIndex = position;

            mp3Info.Title = this.byteToString(bytTitle);


            //获取歌手名

            str = null;
            j   = 0;
            byte[] bytArtist = new byte[30];//将歌手名部分读到一个单独的数组中

            for (i = currentIndex; i < currentIndex + 30; i++)
            {
                bytArtist[j] = Info[i];
                position++;
                j++;
            }

            currentIndex   = position;
            mp3Info.Artist = this.byteToString(bytArtist);



            //获取唱片名
            str = null;
            j   = 0;
            byte[] bytAlbum = new byte[30];//将唱片名部分读到一个单独的数组中

            for (i = currentIndex; i < currentIndex + 30; i++)
            {
                bytAlbum[j] = Info[i];
                position++;
                j++;
            }
            currentIndex  = position;
            mp3Info.Album = this.byteToString(bytAlbum);



            //获取年
            str = null;
            j   = 0;
            byte[] bytYear = new byte[4];//将年部分读到一个单独的数组中

            for (i = currentIndex; i < currentIndex + 4; i++)
            {
                bytYear[j] = Info[i];
                position++;
                j++;
            }

            currentIndex = position;
            mp3Info.Year = this.byteToString(bytYear);

            //获取注释

            str = null;
            j   = 0;
            byte[] bytComment = new byte[28];//将注释部分读到一个单独的数组中

            for (i = currentIndex; i < currentIndex + 25; i++)
            {
                bytComment[j] = Info[i];
                position++;
                j++;
            }

            currentIndex    = position;
            mp3Info.Comment = this.byteToString(bytComment);


            //以下获取保留位
            mp3Info.reserved1 = (char)Info[++position];
            mp3Info.reserved2 = (char)Info[++position];
            mp3Info.reserved3 = (char)Info[++position];

            return(mp3Info);
        }