Question

Am currently working on the encoding of pcm to mp3 using LAME but the length of the resulting mp3 is longer (and was able to isolate the part of the code causing this). The pcm is about 4:45 but when I encode with settings

///cbr settings
lame_set_VBR(gfp, vbr_off);
lame_set_quality(gfp, 5);
lame_set_preset(gfp, 128);

the resulting mp3 length was about 11:30. When I encode with settings

//vbr settings
lame_set_VBR(gfp, vbr_mtrh);
lame_set_VBR_quality(gfp, 5);

the resulting mp3 length was about 14:18. But when I encoded with settings

//abr settings
lame_set_VBR(gfp, vbr_abr);
lame_set_VBR_min_bitrate_kbps(gfp, 128);

the resulting mp3 length was correctly 4:45 (but I noticed when I increased the bitrate to 188, the length jumped up about 5sec to 4:50)

I dont really know what am doning wrong but it seems only abr is resulting the right length vbr and cbr are not!

UPDATE:::: When these mp3 are played, they played normal and stopped at 4:45 but the windows media player and their properties(on windows) still reads those above lengths

UPDATE::: got the cbr settings working by removing the lame_set_preset settings. It's only the vbr settings that is returning incorrect length.

Was it helpful?

Solution

Learnt I have to write the lametag (which is gotten from lame_get_lametag_frame) to the file immediately after the id3v2 tags. This solved the challenge!

NOTE: lame_get_lametag_frame is to be called after calling lame_encode_flush, so you have to seek back to the end of the id3v2 tag to write the lametag.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top