0
Я пытаюсь получить доступ к mSampleRate и mChannelsPerFrame и присваивать значения глобальным переменным.Не удается получить AudioStreamBasicDescription из вывода вывода
Метод:
func setAudioFormat(format: CMFormatDescriptionRef) {
let asbd: UnsafePointer<AudioStreamBasicDescription> = CMAudioFormatDescriptionGetStreamBasicDescription(format)
sampleRate = asbd.memory.mSampleRate // breakpoint
channels = asbd.memory.mChannelsPerFrame
}
Вызов метода:
func captureOutput(captureOutput: AVCaptureOutput!, var didOutputSampleBuffer sampleBuffer: CMSampleBuffer!, fromConnection connection: AVCaptureConnection!) {
...
let format: CMFormatDescriptionRef = CMSampleBufferGetFormatDescription(sampleBuffer)!
self.setAudioFormat(format)
...
}
я делаю что-то не так? есть лучший способ получить AudioStreamBasicDescription от захвата выходного samplebuffer
Edit: формата
держит эти значения:
<CMAudioFormatDescription 0x14516150 [0x346c08a0]> {
mediaType:'soun'
mediaSubType:'lpcm'
mediaSpecific: {
ASBD: {
mSampleRate: 44100.000000
mFormatID: 'lpcm'
mFormatFlags: 0xc
mBytesPerPacket: 2
mFramesPerPacket: 1
mBytesPerFrame: 2
mChannelsPerFrame: 1
mBitsPerChannel: 16 }
cookie: {(null)}
ACL: {(null)}
}
extensions: {(null)}
}
является образцом Буфера действительно и существует ли формат? – Volker
@ Волькер сожалеет, что вы подразумеваете под «делает формат существует»? и я бы предположил, что samplebuffer действителен, поскольку все остальное работает, когда я комментирую вызов метода, есть ли что-то, что я должен проверять специально? –
Вы проверили, если sampleBuffer и формат не ноль/удержание полезных значений? Вы форсируете формат, чтобы существовать, используя! ... – Volker