最近发现新版32位的libav不支持单通道wav转mp3,原因不详,于是用lame库做一个转码的。
以前一直用lame_encode_buffer_interleaved将wav数据转为mp3数据,但是仅仅适合双通道的情况,我一直以为mp3不支持单通道(实际上是可以的,2019年32位的ffmpeg就可以做到),直到我看到一篇文章提到lame_encode_buffer_interleaved适合混音的,lame_encode_buffer则是分别处理左右声道,那么单通道吗,不就是将右声道或左声道干掉就完事了吗?一试便成功:
if (_wav_hd.channels == 1)
{
write = lame_encode_buffer(lame, pcm_buffer, NULL, read, mp3_buffer, MP3_SIZE);
}
else
{
write = lame_encode_buffer_interleaved(lame, pcm_buffer, read, mp3_buffer, MP3_SIZE);
}
特记录下来,免得以后再犯此低级错误。
需要基础知识:lame库转码的一般常识(自行搜索,网上很多)