AudioToolBox 播放噪音
来源:7-11 实现PCM播放器-3
慕妹8246037
2023-07-19
用C项目写Demo,重采样之后,可以使用SDL正常播放。
在iOS项目里写,重采样之后,用AudioToolBox播放,音频能播放,速度也正常,但是全程有噪音,不晓得老师可以看下不
for(int idx = 0; idx < arr.count; idx ++) { // arr 保存了解码后所有的音频帧
TestData *data = [arr objectAtIndex:idx];
AVFrame *frame = data.frame;
// 重采样(只是AV_SAMPLE_FMT_FLTP转成s16, 其他都保持不变,44100, 双声道)
int outCount = swr_get_out_samples(swrCtx, frame->nb_samples);
int length = swr_convert(swrCtx, &outBuffer, outCount, (const uint8_t **)frame->extended_data, frame->nb_samples);
int bytes = av_get_bytes_per_sample(AV_SAMPLE_FMT_S16) * length * 2;
// 将重采样之后的音频全放到音频队列中
AudioQueueBufferRef bufferRef;
status = AudioQueueAllocateBuffer(queue, bytes, &bufferRef);
bufferRef->mAudioDataByteSize = bytes;
memset(bufferRef->mAudioData, 0, bytes);
memcpy(bufferRef->mAudioData, outBuffer, bytes);
OSStatus status = AudioQueueEnqueueBuffer(queue, bufferRef, 0, NULL);
}
写回答
1回答
-
李超
2023-07-19
你要看一下Audio Toolbox,的API,看一下它对输入数据有什么要求,然后按照要求构造数据交给他。如果你提供的数据与它的API要求的数据不匹配就会出现你这种情况。我最近在出新课,抽不出时间给你看代码,你按照我提供的思路自己再研究一下吧
00
相似问题