Hello,
Personally I always use lame to encode and never have a problem.
Recently I started converting mp3 audios created by other people to Ogg Vorbis for html5 audio completeness (Opera and some Linux browsers do not decode MP3)
This is speech and my workflow basically was
lame --decode audio.mp3 && oggenc -q 3 audio.wav && rm -f audio.wav
Most of the time that worked perfectly.
In once case, lame could not decode the audio. I could play the audio just fine in GStreamer (w/ fluendo decoder, didn't try the libmad one) but lame could not decode it.
I was able to use a GStreamer pipe to transcode it to ogg vorbis, but clearly there is something odd about that MP3.
In another case, decoding with lame worked beautifully but I noticed that with GStreamer (again via fluendo plugin) the mp3 sounded really bad. Decoding with lame and re-encoding with lame fixed that.
Anyway what I want to do is build a web interface where service providers (it's a certain type of entertainment industry) can upload their MP3 and it will transcode to ogg for them as well as report potential errors in the MP3 file.
The transcoding part means detecting errors in MP3 and decoding with a decoder that compensates for those errors (like the GStreamer pipe in the case where lame could not decode) and I'm thinking this has likely already been done and that there is a shell script out there somewhere that will run on Linux and can detect certain types of known errors and knows what decoders can cope with them. Anyone know of one?
Thanks for suggestions.
Oh - yes I know lossy to lossy is not ideal, but this is just voice and it really doesn't matter.
mp3packer typically will detect errors.
You could try http://mp3val.sourceforge.net/ (http://mp3val.sourceforge.net/) ? It's old but then again I don't believe anything in the MP3 spec has changed since then?
Thank you, I will try mp3val on the two files that gave me issue and see how it does with them. From it's sourceforge page it looks like it may be able to repair which would probably be a better way to deal with one that fluendo gstreamer couldn't properly decode but lame could, rather than re-encode.
I used it primarily for fixing broke VBR headers which is does well, not sure about other fixes.
Oh yeah it doesn't like extended character sets in the filenames. Like Cyrillic/Chinese etc.