Как следует из названия.
В Swift есть старое решение здесь. Но мне трудно конвертировать в Objective-C. Кажется, нет эквивалента Objective-C для UnsafeBufferPointer
Как следует из названия.
В Swift есть старое решение здесь. Но мне трудно конвертировать в Objective-C. Кажется, нет эквивалента Objective-C для UnsafeBufferPointer
В Objective-C небезопасные указатели встроены прямо в язык, поэтому преобразование просто выглядит так:
- (NSData *)bufferToNSData:(AVAudioPCMBuffer *)buffer {
return [[NSData alloc] initWithBytes:buffer.floatChannelData[0] length:buffer.frameLength * 4];
}
Н.Б. это предполагает моно 32-битные данные с плавающей запятой в буфере. Необходимо проделать дополнительную работу, чтобы сериализовать все поддерживаемые форматы AVAudioPCMBuffer
в NSData
.
int16ChannelData
вместо floatChannelData
. Но каковы критерии 4
в buffer.frameLength * 4
. Размер поплавка?
- person Harikrishnan R; 20.04.2018