Tôi đã làm một ít nghiên cứu, có thể nó sẽ giúp bạn.
cấu trúc file
Một tập tin MP3 được tạo thành từ nhiều khung MP3, trong đó bao gồm một header và một khối dữ liệu.Chuỗi khung này được gọi là luồng cơ bản. Khung không phải là các mục độc lập ("vùng chứa byte") và do đó không thể được trích xuất trên các ranh giới khung tùy ý. Các khối dữ liệu MP3 chứa thông tin âm thanh (nén) về tần số và biên độ. Biểu đồ cho thấy Tiêu đề MP3 bao gồm một từ đồng bộ, được sử dụng để xác định phần đầu của một khung hợp lệ. Tiếp theo là một chút chỉ ra rằng đây là chuẩn MPEG và hai bit chỉ ra rằng lớp 3 được sử dụng; do đó MPEG-1 Audio Layer 3 hoặc MP3. Sau đó, các giá trị sẽ khác nhau, tùy thuộc vào tệp MP3. ISO/IEC 11172-3 xác định phạm vi giá trị cho từng phần của tiêu đề cùng với đặc tả của tiêu đề. Hầu hết các tệp MP3 ngày nay chứa siêu dữ liệu ID3, trước hoặc sau các khung MP3; như đã lưu ý trong biểu đồ.
Source code của LAME
LAME là một THƯ VIỆN MP3, nhưng nó cũng mã nguồn mở, mà có nghĩa là bạn có thể tải về mã nguồn và nhìn vào nó. http://sourceforge.net/projects/lame/files/lame/3.98.4/lame-3.98.4.tar.gz/download Tôi đã xem bản thân mình và có vẻ như được viết bằng C hoặc C++, vì vậy bạn may mắn. Nếu bạn kiểm tra mã nguồn của LAME, và hiểu cách nó hoạt động, có thể bạn có thể thành công trong việc tạo một thư viện MP3 của riêng bạn. Chỉ cần lưu ý rằng LAME không phải là thư viện để phát các tệp MP3, nhưng để mã hóa chúng. Nhưng vì nó tạo ra MP3 thay vì đọc chúng, tôi nghĩ rằng cấu trúc nên rõ ràng hơn một chút sau đó với bất kỳ thư viện trình phát nhạc MP3 nào khác.
Giải thích về định dạng file MP3
này cũng dường như để giải thích như thế nào MP3 hoạt động khá tốt, nhưng đó là lý thuyết thuần túy, vì vậy bạn sẽ cần rất nhiều sự kiên nhẫn. http://www.mp3-converter.com/mp3codec/
Nếu bạn cần hỏi như thế này, tôi khuyên bạn nên từ bỏ ý tưởng tự viết nó và sử dụng một số thư viện. – nothrow