Hi! Вот решил реализовать "вытаскивание" технической информации из mp3 файла. Код | public class MusicID3Tag класс для музыки {
public byte[] TAGID = new byte[3]; // 3 public byte[] Title = new byte[30]; // 30 public byte[] Artist = new byte[30]; // 30 public byte[] Album = new byte[30]; // 30 public byte[] Year = new byte[4]; // 4 public byte[] Comment = new byte[28]; // 30 public byte[] Genre = new byte[1]; // 1 public byte[] Bitrate = new byte[1]; public byte[] Duration = new byte[1];
} private void создатьToolStripMenuItem_Click(object sender, EventArgs e) { DialogResult dialogresult = folderBrowserDialog1.ShowDialog(); if (dialogresult == DialogResult.OK) { DataTable dt = new DataTable();
dt.Columns.Add("Исполнитель"); dt.Columns.Add("Название_песни"); dt.Columns.Add("Альбом"); dt.Columns.Add("Комментарии"); dt.Columns.Add("Год"); dt.Columns.Add("4то-то"); dt.Columns.Add("Длительность"); dt.Columns.Add("Жанр");
string[] fullfilesPath = Directory.GetFiles(folderBrowserDialog1.SelectedPath, "*.mp3*", SearchOption.AllDirectories); int capacity = Directory.GetFiles(folderBrowserDialog1.SelectedPath, "*.mp3*", SearchOption.AllDirectories).Length; GlobalPeremennie.KolvoF = capacity; for (int i = 0; i <= capacity - 1; i++) { string filePath = fullfilesPath[i]; using (FileStream fs = File.OpenRead(filePath)) { if (fs.Length >= 128) { MusicID3Tag tag = new MusicID3Tag();
fs.Seek(-128, SeekOrigin.End); fs.Read(tag.TAGID, 0, tag.TAGID.Length); fs.Read(tag.Title, 0, tag.Title.Length); fs.Read(tag.Artist, 0, tag.Artist.Length); fs.Read(tag.Album, 0, tag.Album.Length); fs.Read(tag.Year, 0, tag.Year.Length); fs.Read(tag.Bitrate, 0, tag.Bitrate.Length); fs.Read(tag.Duration, 0, tag.Duration.Length); fs.Read(tag.Comment, 0, tag.Comment.Length); fs.Read(tag.Genre, 0, tag.Genre.Length); string theTAGID = Encoding.Default.GetString(tag.TAGID);
if (theTAGID.Equals("TAG")) {
string Title = Encoding.Default.GetString(tag.Title); string Artist = Encoding.Default.GetString(tag.Artist); string Album = Encoding.Default.GetString(tag.Album); string Year = Encoding.Default.GetString(tag.Year); string Comment = Encoding.Default.GetString(tag.Comment); string Genre = Encoding.Default.GetString(tag.Genre); string Bitrate = Encoding.Default.GetString(tag.Bitrate); string Duration = Encoding.Default.GetString(tag.Duration); dt.Rows.Add(Artist, Title, Album,Comment, Year,Bitrate,Duration, Genre); dataGridView1.DataSource = dt; }}}}}}
|
Достаётся только название песни, альбом,исполнитель и год. А остальные не извлекаются. Так же программа в DataGridView дописывает кучу "\0". Пожалуйста помогите решить проблему!
|