0
40ms 단위로 오디오를 녹음하려고합니다. 오디오 대기열 인터페이스는 40ms 오디오 프레임을 처리 할 수 있습니까? '예'인 경우 어떻게 할 수 있습니까?오디오 대기열 인터페이스는 40ms 오디오 프레임을 처리 할 수 있습니까?
감사합니다. 이 주위에있을 것입니다, 그래서 그것의 가능한
40ms 단위로 오디오를 녹음하려고합니다. 오디오 대기열 인터페이스는 40ms 오디오 프레임을 처리 할 수 있습니까? '예'인 경우 어떻게 할 수 있습니까?오디오 대기열 인터페이스는 40ms 오디오 프레임을 처리 할 수 있습니까?
감사합니다. 이 주위에있을 것입니다, 그래서 그것의 가능한
예는, 당신은
int AQRecorder::ComputeRecordBufferSize(const AudioStreamBasicDescription *format, float seconds)
{
int packets, frames, bytes = 0;
try {
frames = (int)ceil(seconds * format->mSampleRate);
if (format->mBytesPerFrame > 0)
bytes = frames * format->mBytesPerFrame;
else {
UInt32 maxPacketSize;
if (format->mBytesPerPacket > 0)
maxPacketSize = format->mBytesPerPacket; // constant packet size
else {
UInt32 propertySize = sizeof(maxPacketSize);
XThrowIfError(AudioQueueGetProperty(mQueue, kAudioQueueProperty_MaximumOutputPacketSize, &maxPacketSize,
&propertySize), "couldn't get queue's maximum output packet size");
}
if (format->mFramesPerPacket > 0)
packets = frames/format->mFramesPerPacket;
else
packets = frames; // worst-case scenario: 1 frame in a packet
if (packets == 0) // sanity check
packets = 1;
bytes = packets * maxPacketSize;
}
} catch (CAXException e) {
char buf[256];
return 0;
}
return bytes;
}
및 설정, 기본적으로
AudioQueue 버퍼 크기
는 40ms로 설정해야하며, 따라서 AudioQueue를 구성 설정해야합니다 형식, 내 경우에 대한void AQRecorder::SetupAudioFormat(UInt32 inFormatID)
{
AudioStreamBasicDescription sRecordFormat;
FillOutASBDForLPCM (sRecordFormat,
SAMPLING_RATE,
1,
8*BYTES_PER_PACKET,
8*BYTES_PER_PACKET,
false,
false
);
memset(&mRecordFormat, 0, sizeof(mRecordFormat));
mRecordFormat.SetFrom(sRecordFormat);
}
,이 매크로의 값입니다
#define SAMPLING_RATE 16000
#define kNumberRecordBuffers 3
#define BYTES_PER_PACKET 2
안녕 Rohan, 답장을 보내 주셔서 감사합니다. 프로젝트를 적절하게 변경 했으므로 작업이 끝났습니다. 이 분야를 처음 접했을 때, 패킷 당 40ms 오디오 프레임에서 어떻게 작동하는지 어떻게 확인할 수 있습니까? 감사합니다, – Pravin
AudioQueue 프레임 워크는 대기열에 넣어 진 버퍼가 채워질 때 콜백을 throw하므로 최소 간격은 40ms가됩니다 ... – Amitg2k12
감사합니다. Rohan, 패킷 당 40ms 오디오 프레임에 대해 아이디어를 주시겠습니까? 매크로에 대한 계산/정의 즉 위의 함수에서 SAMPLING_RATE, kNumberRecordBuffers, BYTES_PER_PACKET – Pravin