gpt4 book ai didi

c++ - 将 unsigned char 音频转换为 short

转载 作者:太空宇宙 更新时间:2023-11-04 02:25:47 25 4
gpt4 key购买 nike

尝试转换 unsigned char到一个简短的。数据是音频。我的系统是 Little Endian。我正在做的是:

    short buf1[audio_size / 2];
for(size_t i = 0; i < audio_size; i += 2) {
if(i > audio_size) {
break;
}

if(i + 1 > audio_size) {
buf1[i] = audio_data[i] << 8;
} else {
buf1[i] = audio_data[i] << 8|audio_data[i + 1];
}
}

结果是糟糕的音频和EXC_BAD_ACCESSbuf1[i] = info.data[i] << 8|info.data[i + 1];

更新:

音频采样率为 8000。1 channel 。 16 位 PCMU 规则。

最佳答案

缓冲区的大小为 audio_size/2,但您将其索引到 audio_size-1 索引,因此会遇到缓冲区溢出。

您应该使用i/2 作为索引而不是i

此外,此循环中的另一个错误是

if(i + 1 > audio_size)

应该替换为

if(i + 1 >= audio_size)

这是缓冲区溢出的另一个原因,但这次是在另一个(源)缓冲区中

关于c++ - 将 unsigned char 音频转换为 short,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51453133/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com