Introduction
For my freeware project, MetatOGGer, I needed a managed library to read and write tags contained in Ogg and FLAC streams. As I couldn't find any, I decided to write one myself.
The codecs supported by this library include Vorbis, FLAC and Speex. Technical information about Ogg and FLAC files can also be gotten using this library.
Text tags will be stored in a SortedList<string, List<string>> because you can have several identical tags such as "artist," etc. Picture tags will be stored in a collection of ID3PictureFrame with a BitmapFrame property (Windows Imaging Component).
It's possible to read any raw data in an Ogg stream with the OggPageReader class.
Using the Code
The use of OggTagger and FlacTagger is very easy. The source code is fully documented (in French). Here is the diagram for main classes:
using Luminescence.Xiph;
OggTagger ogg = new OggTagger(@"C:\Song.ogg");
DateTime time = new DateTime(0);
time = time.AddSeconds(ogg.Duration);
string artist = ogg.Artist;
ogg.Title = "Creep";
SortedList<string, List<string>> tags = ogg.GetAllTags();
BitmapFrame cover = ogg.FlacArts[0].Picture;
History
- 25 August, 2006 -- Original version 1.0 posted
- 3 April, 2007 -- Article & downloads updated
- 16 July, 2007 -- Article & downloads updated
- 7 September, 2007 -- Source download, LuminescenceXiph.zip, updated as follows:
- Tags of 255 more characters are now correctly managed in Ogg FLAC and Speex files
ClearNonOfficialTag() method doesn't throw exceptions
- Vendor list has been updated to version 1.2 of libvorbis
- An example application, MetatOGGer, is also provided in binary form
- 24 January, 2008 -- Source download, LuminescenceXiph.zip, updated as follows:
- The code contains a bug fix (an
OutOfMemory exception could be thrown while reading some FLAC files)
- The vendor tag for Vorbis has been updated for older and newer version of the codec
- 29 March, 2008 -- Article & downloads updated as follows:
- Fix a bug when reading very small Ogg files (<65KB).
- 25 July, 2008 -- Major release (version 2.0), .NET 3.5 required
- Heavy code refactoring (
VorbisComment is now an abstract class)
- New method
CheckedVorbisCommentKey(string) in VorbisComment class
- Fix a bug when reading or writing very big tags (>65 KB)
- New classes :
OggPage and OggPageReader for reading data in Ogg streams
- Support of picture tags for native Flac or Ogg FLAC files (new class
ID3PictureFrame)
- Many other enhancements (vendor tag information updated, etc.)...
- 22 April, 2009 -- Downloads updated
- This version contains few code refactorings and one bug fix (in validation of vorbis comment key)