Swift 理解音频流基本描述

Swift 理解音频流基本描述,swift,core-audio,Swift,Core Audio,我正在努力理解音频流基本描述结果。实际上,我所能得到的对我来说毫无意义。例如: 音频流基本描述(M采样率:44100.0,M格式:1819304813,M格式:41,M字节数据包:4,M帧数据包:1,M字节数据包:4,M通道数据包:2,M字节数据包:32,M保留:0) 我所期望的是: “每个数据包的字节数”和“每个帧的字节数”应为8而不是4: 4(32位浮点大小)x2(每帧两个通道)x1(每包一帧)=8字节 为什么是4 import CoreAudio import AudioUnit var

我正在努力理解音频流基本描述结果。实际上,我所能得到的对我来说毫无意义。例如:

音频流基本描述(M采样率:44100.0,M格式:1819304813,M格式:41,M字节数据包:4,M帧数据包:1,M字节数据包:4,M通道数据包:2,M字节数据包:32,M保留:0)

我所期望的是: “每个数据包的字节数”和“每个帧的字节数”应为8而不是4:

4(32位浮点大小)x2(每帧两个通道)x1(每包一帧)=8字节

为什么是4

import CoreAudio
import AudioUnit

var inputUnitDescription = AudioComponentDescription(componentType: kAudioUnitType_Output,
                                                     componentSubType: kAudioUnitSubType_HALOutput,
                                                     componentManufacturer: kAudioUnitManufacturer_Apple,
                                                     componentFlags: 0,
                                                     componentFlagsMask: 0)
let defaultInput = AudioComponentFindNext(nil, &inputUnitDescription)

var inputUnit: AudioUnit?
AudioComponentInstanceNew(defaultInput!, &inputUnit)

var asbd = AudioStreamBasicDescription()
var propertySize = UInt32(MemoryLayout<AudioStreamBasicDescription>.size)
AudioUnitGetProperty(inputUnit!,
                     kAudioUnitProperty_StreamFormat,
                     kAudioUnitScope_Output,
                     1,
                     &asbd,
                     &propertySize)

dump(asbd)
导入核心音频
进口音频单元
var inputUnitDescription=AudioComponentDescription(componentType:kAudioUnitType\U输出,
组件子类型:kAudioUnitSubType_HALOutput,
组件制造商:考迪奥尼特苹果制造商,
组件标志:0,
componentFlagsMask:0)
设defaultInput=AudioComponentFindNext(无,&inputUnitDescription)
var输入单元:音频单元?
AudioComponentInstanceNew(默认输入!,&inputUnit)
var asbd=AudioStreamBasicDescription()
var propertySize=UInt32(MemoryLayout.size)
AudioUnitGetProperty(inputUnit!,
kAudioUnitProperty_StreamFormat,
考迪翁镜输出,
1.
&asbd,
&房地产证券化)
转储(asbd)

您的ABSD的mFormatFlags==41

如果(mFormatFlags&32)!=0,这意味着该格式包含KaudioFormatFlagIsNonInterleave位

非交错格式每帧仅返回一个数据通道,而不是2个。 取而代之的是多个缓冲区,每个缓冲区每帧只有一个通道,或者4个字节(对于Float32格式),而不是8个字节