public void ReadID3v2(string file) { // read id3 stuff id3v2 = new ID3V2(file); id3v2.Read(); this.hasID3v2 = id3v2.HasTag; }
/// <summary> /// 控制整个解码流程的主函数 /// </summary> /// <returns></returns> public bool Start() { //文件头 Header mp3_header = new Header(input); ID3V2 id3V2 = mp3_header.getID3V2(); Data_Frame_Header_Info headerInfo = new Data_Frame_Header_Info(); //设置显示框 if (headerInfo.track_mode == 3) { _win.Channels.Text = "1"; _pcmDatas.Channels = 1; } else { _win.Channels.Text = "2"; _pcmDatas.Channels = 2; } int frequency = 0; while (headerInfo != null) { //数据帧头 Data_Frame_Header df = new Data_Frame_Header(input); headerInfo = df.getHeaderInfo(); if (headerInfo != null && headerInfo.frequency > frequency) { frequency = headerInfo.frequency; } //文件找不到数据帧或者频率或比特率有问题 if ((headerInfo == null && Data_Frame_Header.begin_of_file) || (headerInfo != null && headerInfo.frequency == 1) || (headerInfo != null && headerInfo.bitrate == 0)) { return(false); } if (headerInfo != null) { //获取一帧的数据 byte[] besides_header = new byte[headerInfo.frame_length - 4]; input.Read(besides_header, 0, besides_header.Length); //进行这一帧的解码 Decode decode = new Decode(headerInfo, besides_header, input, _filename, write); decode.Start(); } } _win.SampleMode.Text = $"{frequency}Hz"; _pcmDatas.Frequency = frequency; return(true); }
/// <summary> /// Initializes a new instance of <see cref="Mp3Tag"/> and read file. /// </summary> /// <param name="filename">The file to open for reading.</param> public Mp3Tag(string filename) { this._filename = filename; _id3v2 = new ID3V2(filename); }