[libmpg123强制浮点输出,当我使用整数编码读取mp3时

问题描述 投票:0回答:2

我使用libsndfile读取音频文件,但无法使用MP3。

所以,我想使用libmp123读取mp3文件。

我很容易找到如何读取“短整数”编码文件,然后将读取的数据转换为浮点数[-1.0 ... 1.0]。

我的问题是:“ libmp123可以像libsndfile一样自动执行此操作吗?”

c++ mp3
2个回答
0
投票

您看过example program吗?您可以使用mpg123_format_none清除允许的格式/编码对列表,然后使用mpg123_format添加仅包含所需编码的新格式/编码对(例如,MPG123_ENC_FLOAT_32)。


0
投票

它确实对我有用。

我在自己的程序中使用libmp123。

[我希望将mp3数据加载为float格式,但例如以mp3'short int'编码。

int err;
err = mpg123_format_none(m_handle);
std::cout << err << std::endl;
err = mpg123_format(m_handle,m_rate,m_channels, MPG123_ENC_FLOAT_32);
std::cout << err << std::endl;

... 
if (mpg123_read(m_handle,
               (unsigned char*)titi,
               nb_framesToRead*mpg123_encsize(m_encoding),
               &nb_framesRead) != MPG123_OK) {
        std::cerr << mpg123_strerror(m_handle);
}

titi是一个预先分配的浮点表。

m_encoding = 208(SIGNED_16)

总而言之,我希望有一个等同于“ sf_readf_float” http://www.mega-nerd.com/libsndfile/api.html#readf

© www.soinside.com 2019 - 2024. All rights reserved.