Từ 1 tới 8 trên tổng số 8 kết quả

Đề tài: Đọc thông tin header từ file MP3 như thế nào?

  1. #1
    No Avatar
    baokhanhk28 Khách

    Mặc định Đọc thông tin header từ file MP3 như thế nào?

    s Bạn cần đọc các thông tin về tên bài hát, nghệ sĩ, và album từ một file MP3.

    · Đọc thẻ ID3v2 ở cuối file MP3.

    Hầu hết các file MP3 đều lưu trữ thông tin trong thẻ ID3v2 dài 128 byte ở cuối file. Thẻ này bắt đầu với từ TAG và chứa các thông tin về nghệ sĩ, album, và tên bài hát ở dạng ASCII. Bạn có thể chuyển dữ liệu này thành chuỗi bằng đối tượng Encoding do thuộc tính System.Text.Encoding.ASCII trả về.

    Lớp MP3TagData dưới đây cung cấp phương thức ReadFromFile để lấy thông tin từ một file MP3 hợp lệ:

    VB.NET Code:
    1. Public Class MP3TagData
    2.  
    3.     Private _Artist As String
    4.     Private _SongTitle As String
    5.     Private _Album As String
    6.     Private _Year As String
    7.  
    8.     Public ReadOnly Property Artist() As String
    9.         Get
    10.             Return _Artist
    11.         End Get
    12.     End Property
    13.     Public ReadOnly Property SongTitle() As String
    14.         Get
    15.             Return _SongTitle
    16.         End Get
    17.     End Property
    18.      Public ReadOnly Property Album() As String
    19.         Get
    20.             Return _Album
    21.         End Get
    22.     End Property
    23.  
    24.     Public ReadOnly Property Year() As String
    25.         Get
    26.             Return _Year
    27.         End Get
    28.     End Property
    29.  
    30.     Public Sub ReadFromFile(ByVal filename As String)
    31.         ' Xóa các giá trị hiện có.
    32.         _SongTitle = ""
    33.         _Artist = ""
    34.         _Album = ""
    35.         _Year = ""
    36.  
    37.         Dim fs As New FileStream(filename, FileMode.Open)
    38.     ' Đọc thẻ MP3.
    39.         fs.Seek(0 - 128, SeekOrigin.End)
    40.         Dim Tag(2) As Byte
    41.         fs.Read(Tag, 0, 3)
    42.  
    43.         ' Kiểm tra thẻ có tồn tại hay không.
    44.         If System.Text.Encoding.ASCII.GetString(Tag).Trim() = "TAG" Then
    45.             _SongTitle = GetTagData(fs, 30)
    46.             _Artist = GetTagData(fs, 30)
    47.             _Album = GetTagData(fs, 30)
    48.             _Year = GetTagData(fs, 4)
    49.         End If
    50.  
    51.         fs.Close()
    52.     End Sub
    53.     Private Function GetTagData(ByVal stream As Stream, _
    54.       ByVal length As Integer) As String
    55.  
    56.         ' Đọc dữ liệu.
    57.         Dim Bytes(length - 1) As Byte
    58.         stream.Read(Bytes, 0, length)
    59.  
    60.         Dim TagData As String = _
    61.           System.Text.Encoding.ASCII.GetString(Bytes)
    62.      ' Loại bỏ các ký tự null.
    63.         Dim TrimChars() As Char = {Char.Parse(" "), _
    64.           Char.Parse(vbNullChar)}
    65.         TagData = TagData.Trim(TrimChars)
    66.         Return TagData
    67.  
    68.     End Function
    69.  
    70. End Class
    @ Dữ liệu trong thẻ MP3 có bề rộng cố định và được lót bằng các ký tự null. Bạn phải loại các ký tự này khỏi chuỗi. Nếu không, chúng có thể sẽ gây nên rắc rối tùy vào cách sử dụng chuỗi trong ứng dụng.

    Đoạn mã dưới đây trình bày cách sử dụng lớp MP3TagData để lấy và hiển thị thông tin về một file MP3:

    VB.NET Code:
    1. Dim MP3Tag As New MP3TagData()
    2. MP3Tag.ReadFromFile("C:\mp3\chu_vit_con.mp3")
    3.    Console.WriteLine("Album: " & MP3Tag.Album)
    4. Console.WriteLine("Artist: " & MP3Tag.Artist)
    5. Console.WriteLine("Song: " & MP3Tag.SongTitle)
    6. Console.WriteLine("Year: " & MP3Tag.Year)
    Trích từ "Các giải pháp lập trình Visual Basic .NET + CD (tập 1)"

  2. #2
    No Avatar
    instcode Khách

    Gì kỳ vậy? Hình như box này có mục đích ban đầu là chơi Managed C++ chứ có phải VB.NET đâu :p... Mà nhìn lại thì thấy toàn C#

  3. #3
    Ngày gia nhập
    03 2009
    Nơi ở
    Heaven
    Bài viết
    277

    Code:
    Ai có thể chuyển dùm nó thành c# ko nhỉ?
    Giúp anh em với .......
    
    Tôi là con chim đến từ núi lạ
    Ngứa cổ hót chơi

  4. #4
    Ngày gia nhập
    05 2010
    Bài viết
    12

    híc . Bạn nào có code C# không cho minh với mình

  5. #5
    Ngày gia nhập
    04 2010
    Nơi ở
    Hà Nội
    Bài viết
    278

    Trích dẫn Nguyên bản được gửi bởi q1q12 Xem bài viết
    híc . Bạn nào có code C# không cho minh với mình
    Code:
    public class MP3TagData
    02.{
    03. 
    04.    private string _Artist;
    05.    private string _SongTitle;
    06.    private string _Album;
    07. 
    08.    private string _Year;
    09.    public string Artist {
    10.        get { return _Artist; }
    11.    }
    12.    public string SongTitle {
    13.        get { return _SongTitle; }
    14.    }
    15.    public string Album {
    16.        get { return _Album; }
    17.    }
    18. 
    19.    public string Year {
    20.        get { return _Year; }
    21.    }
    22. 
    23.    public void ReadFromFile(string filename)
    24.    {
    25.        // Xóa các giá trị hiện có.
    26.        _SongTitle = "";
    27.        _Artist = "";
    28.        _Album = "";
    29.        _Year = "";
    30. 
    31.        FileStream fs = new FileStream(filename, FileMode.Open);
    32.        // Đọc thẻ MP3.
    33.        fs.Seek(0 - 128, SeekOrigin.End);
    34.        byte[] Tag = new byte[2];
    35.        fs.Read(Tag, 0, 3);
    36. 
    37.        // Kiểm tra thẻ có tồn tại hay không.
    38.        if (System.Text.Encoding.ASCII.GetString(Tag).Trim() == "TAG") {
    39.            _SongTitle = GetTagData(fs, 30);
    40.            _Artist = GetTagData(fs, 30);
    41.            _Album = GetTagData(fs, 30);
    42.            _Year = GetTagData(fs, 4);
    43.        }
    44. 
    45.        fs.Close();
    46.    }
    47. 
    48.    private string GetTagData(Stream stream, int length)
    49.    {
    50.        // Đọc dữ liệu.
    51.        byte[] Bytes = new byte[length - 1];
    52.        stream.Read(Bytes, 0, length);
    53. 
    54.        string TagData = System.Text.Encoding.ASCII.GetString(Bytes);
    55.        // Loại bỏ các ký tự null.
    56.        char[] TrimChars = {
    57.            char.Parse(" "),
    58.            char.Parse(vbNullChar)
    59.        };
    60.        TagData = TagData.Trim(TrimChars);
    61.        return TagData;
    62. 
    63.    }
    64. 
    65.}
    Tiếp nè:

    Code:
    1.MP3TagData MP3Tag = new MP3TagData();
    2.MP3Tag.ReadFromFile("C:\\mp3\\chu_vit_con.mp3");
    3.Console.WriteLine("Album: " + MP3Tag.Album);
    4.Console.WriteLine("Artist: " + MP3Tag.Artist);
    5.Console.WriteLine("Song: " + MP3Tag.SongTitle);
    6.Console.WriteLine("Year: " + MP3Tag.Year);
    Sống trên đời cần có một tấm lòng để ...gió cuốn đi !

  6. #6
    Ngày gia nhập
    05 2010
    Bài viết
    12

    Mặc định Đọc thông tin header từ file MP3 như thế nào?

    Trích dẫn Nguyên bản được gửi bởi dangbk Xem bài viết
    Code:
    public class MP3TagData
    02.{
    03. 
    04.    private string _Artist;
    05.    private string _SongTitle;
    06.    private string _Album;
    07. 
    08.    private string _Year;
    09.    public string Artist {
    10.        get { return _Artist; }
    11.    }
    12.    public string SongTitle {
    13.        get { return _SongTitle; }
    14.    }
    15.    public string Album {
    16.        get { return _Album; }
    17.    }
    18. 
    19.    public string Year {
    20.        get { return _Year; }
    21.    }
    22. 
    23.    public void ReadFromFile(string filename)
    24.    {
    25.        // Xóa các giá trị hiện có.
    26.        _SongTitle = "";
    27.        _Artist = "";
    28.        _Album = "";
    29.        _Year = "";
    30. 
    31.        FileStream fs = new FileStream(filename, FileMode.Open);
    32.        // Đọc thẻ MP3.
    33.        fs.Seek(0 - 128, SeekOrigin.End);
    34.        byte[] Tag = new byte[2];
    35.        fs.Read(Tag, 0, 3);
    36. 
    37.        // Kiểm tra thẻ có tồn tại hay không.
    38.        if (System.Text.Encoding.ASCII.GetString(Tag).Trim() == "TAG") {
    39.            _SongTitle = GetTagData(fs, 30);
    40.            _Artist = GetTagData(fs, 30);
    41.            _Album = GetTagData(fs, 30);
    42.            _Year = GetTagData(fs, 4);
    43.        }
    44. 
    45.        fs.Close();
    46.    }
    47. 
    48.    private string GetTagData(Stream stream, int length)
    49.    {
    50.        // Đọc dữ liệu.
    51.        byte[] Bytes = new byte[length - 1];
    52.        stream.Read(Bytes, 0, length);
    53. 
    54.        string TagData = System.Text.Encoding.ASCII.GetString(Bytes);
    55.        // Loại bỏ các ký tự null.
    56.        char[] TrimChars = {
    57.            char.Parse(" "),
    58.            char.Parse(vbNullChar)
    59.        };
    60.        TagData = TagData.Trim(TrimChars);
    61.        return TagData;
    62. 
    63.    }
    64. 
    65.}
    Tiếp nè:

    Code:
    1.MP3TagData MP3Tag = new MP3TagData();
    2.MP3Tag.ReadFromFile("C:\\mp3\\chu_vit_con.mp3");
    3.Console.WriteLine("Album: " + MP3Tag.Album);
    4.Console.WriteLine("Artist: " + MP3Tag.Artist);
    5.Console.WriteLine("Song: " + MP3Tag.SongTitle);
    6.Console.WriteLine("Year: " + MP3Tag.Year);
    code hay qua. Có bạn nào chạy dc ko )

  7. #7
    Ngày gia nhập
    03 2009
    Nơi ở
    Heaven
    Bài viết
    277

    Trích dẫn Nguyên bản được gửi bởi q1q12 Xem bài viết
    code hay qua. Có bạn nào chạy dc ko )
    Chạy phăng phăng nè
    Tôi là con chim đến từ núi lạ
    Ngứa cổ hót chơi

  8. #8
    Ngày gia nhập
    05 2010
    Bài viết
    12

    Trích dẫn Nguyên bản được gửi bởi tesulakata Xem bài viết
    Chạy phăng phăng nè
    :d Bạn chia sẻ được không Mình mới học híc chẳng biết lỗi ở đâu

Các đề tài tương tự

  1. Cách tạo file Header(.h) trong lập trình C như thế nào?
    Gửi bởi khoadangnguyen trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 20
    Bài viết cuối: 09-05-2014, 08:11 AM
  2. Làm thế nào để thay đổi header và footer của file word cho sẵn bằng c#
    Gửi bởi noisim89 trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 4
    Bài viết cuối: 02-02-2012, 03:56 PM
  3. Lập trình C++ không debug c++ trên visual studio được! lỗi không tìm thấy file header '.h'?
    Gửi bởi code_c trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 5
    Bài viết cuối: 26-11-2011, 01:24 AM
  4. Lập trình C++ cách tạo và sử dụng header file như thế nào
    Gửi bởi athena1610 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 3
    Bài viết cuối: 29-03-2011, 10:16 AM
  5. Thắc mắc về thêm các file thư viện Header vào chương trình C++
    Gửi bởi hacker_mubaohiem trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 1
    Bài viết cuối: 22-03-2008, 08:02 AM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn