我使用libsndfile读取音频文件,但MP3不可用。所以,我想用libmp 123来读取mp3文件。我很容易就找到了如何读取一个“short int”编码文件,然后将读取的数据转换为浮点数[-1.0..1.0]。我的问题是:“libmp 123可以像libsndfile一样自动执行此操作吗?”
8i9zcol21#
您是否查看了example program?您可以使用mpg123_format_none清除允许的格式/编码对列表,然后使用mpg123_format添加仅包含所需编码的新格式/编码对(例如,MPG123_ENC_FLOAT_32)。
mpg123_format_none
mpg123_format
mi7gmzs62#
对我有用。我在自己的程序中使用libmp123。我希望将mp3数据作为浮点数加载,但要使用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_编码= 208(已签名_16)总而言之,我希望有一个等同于“sf_readf_float”的http://www.mega-nerd.com/libsndfile/api.html#readf
watbbzwu3#
这对我很有效:
int ret; mpg123_handle *m = mpg123_new(NULL, &ret); mpg123_param(m, MPG123_ADD_FLAGS, MPG123_FORCE_FLOAT, 0.);
3条答案
按热度按时间8i9zcol21#
您是否查看了example program?您可以使用
mpg123_format_none
清除允许的格式/编码对列表,然后使用mpg123_format
添加仅包含所需编码的新格式/编码对(例如,MPG123_ENC_FLOAT_32)。mi7gmzs62#
对我有用。
我在自己的程序中使用libmp123。
我希望将mp3数据作为浮点数加载,但要使用mp3 'short int'编码。
titi是预分配的浮动表。
m_编码= 208(已签名_16)
总而言之,我希望有一个等同于“sf_readf_float”的http://www.mega-nerd.com/libsndfile/api.html#readf
watbbzwu3#
这对我很有效: