本文共 1353 字,大约阅读时间需要 4 分钟。
buf_sizePCM = frame_info.samples * frame_info.channels;
memcpy(bufferPCM,pcm_data,buf_sizePCM);
//采样率变成8000HZ
float in[4096] = { 0 };
float out[4096] = { 0 };
int j = 0;
for (j = 0; j < 4096 && j < buf_sizePCM; j++)
{
in[j] = pcm_data[j];
}
SRC_DATA dataResample;
dataResample.data_in = in;
dataResample.data_out = out;
dataResample.input_frames = frame_info.samples;
dataResample.output_frames = frame_info.samples;
dataResample.src_ratio = 8000.0/frame_info.samplerate;
int nRetResample = src_simple(&dataResample, SRC_LINEAR, frame_info.channels);
/*
buf_sizePCM = dataResample.output_frames_gen * frame_info.channels;
for (j = 0; j < 4096 && j < buf_sizePCM; j++)
{
bufferPCM[j] = Float2UChar(dataResample.data_out[j]);
}
*/
//声道变成单声道
buf_sizePCM = dataResample.output_frames_gen * frame_info.channels;
if(frame_info.channels == 2)
{
//从双声道的数据中提取单通道
int i = 0;
for (i = 0, j = 0; i<4096 && i
{
bufferPCM[j] = Float2UChar(out[i]);
bufferPCM[j + 1] = Float2UChar(out[i + 1]);
}
buf_sizePCM = buf_sizePCM/2;
}
else
{
memcpy(bufferPCM,out,buf_sizePCM);
}
/*
//声道变成单声道
if(frame_info.channels == 2)
{
//从双声道的数据中提取单通道
for (int i = 0, j = 0; i<4096 && i
{
bufferPCM[j] = pcm_data[i];
bufferPCM[j + 1] = pcm_data[i + 1];
}
buf_sizePCM = buf_sizePCM/2;
memcpy(bufferPCM,bufferPCM,buf_sizePCM);
}
else
{
memcpy(bufferPCM,pcm_data,buf_sizePCM);
}
*/
return 0;
}
转载地址:https://blog.csdn.net/weixin_39861823/article/details/114561809 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!