[ogg-dev] Fixing ogg vorbis corruption caused by bad metadata

Adam Rosi-Kessel adam at rosi-kessel.org
Wed Jun 17 17:34:02 PDT 2009

I have over 1,000 ogg vorbis files that are no longer playable or 
editable. I believe the main cause was a MediaMonkey plugin that 
automatically fetched album art and added it to the header. The plugin 
itself just uses the generic MediaMonkey metadata facility, but 
something happened -- perhaps when the album art bitmap image was too 
large -- that caused the files to no longer work. Unfortunately, I don't 
have backups.

I have noticed a handful of unresolved threads about ogg corruption on 
various message boards, so I suspect I am not alone in having, for one 
reason or another, unplayable oggs.

I have tried rewriting the files with oggz-sort (both last release and 
latest from git) and also with hogg reconstruct (including latest 
version built from source). I have also tried dumping the files with 
oggz-dump and swapping in either packetno 1 or 1,2 or 1,2,3 from a known 
good ogg file, replacing the serialnos, and then recreating the ogg with 
oggz-dump -r. None of these changes work. vlc will "play" the file, but 
all I hear is silence.

In a few instances, I have had ogg files in this state where they played 
but I couldn't edit the metadata with any tool. hogg reconstruct fixed 
those files so they seem to be fully working again, but most of my 
corrupted files don't fall into this category.

oggz-validate reports on an example file:

serialno 1225743615: Terminal header page contains non-header packet

after attempting to splice in good headers, on the same file:

serialno 1225743615: Terminal header page has non-zero granulepos

I have posted a couple of sample files, one before and one after running 
through oggz-sort, here:


I'm not sure if all of my files have the same problem, so I can share 
others if it would be helpful.

I'd appreciate any assistance/suggestions in fixing these files. I don't 
see any reason why the corruption should extend beyond just the metadata 
part of the file, but I could of course be wrong.

More information about the ogg-dev mailing list