PCM 中的音频帧样本类型?
Audio frame sample type in PCM?
所以我使用带有音频内容的 CMSampleBufferRef 缓冲区。
AudioStreamBasic说明如下
{
mSampleRate: 44100.000000
mFormatID: 'lpcm'
mFormatFlags: 0xe
mBytesPerPacket: 4
mFramesPerPacket: 1
mBytesPerFrame: 4
mChannelsPerFrame: 2
mBitsPerChannel: 16
}
显然这是一个交错视频,每个通道 2 个字节 = 样本大小。
这个样本大小的编码是什么?那是一个(短)整数吗?一个框架是否由 2 条短裤组成?还是一个整数?还是一个花车?我怎么知道的?
我猜是 32bpp 交错音频,对吗?
mFormatFlags
的 0xe
的值是 0b1110
,等于:
kAudioFormatFlagIsBigEndian = (1U << 1), // 0x2
kAudioFormatFlagIsSignedInteger = (1U << 2), // 0x4
kAudioFormatFlagIsPacked = (1U << 3), // 0x8
所以一个帧由两个交错的 big-endian int16_t
个样本组成。
所以我使用带有音频内容的 CMSampleBufferRef 缓冲区。
AudioStreamBasic说明如下
{
mSampleRate: 44100.000000
mFormatID: 'lpcm'
mFormatFlags: 0xe
mBytesPerPacket: 4
mFramesPerPacket: 1
mBytesPerFrame: 4
mChannelsPerFrame: 2
mBitsPerChannel: 16
}
显然这是一个交错视频,每个通道 2 个字节 = 样本大小。 这个样本大小的编码是什么?那是一个(短)整数吗?一个框架是否由 2 条短裤组成?还是一个整数?还是一个花车?我怎么知道的?
我猜是 32bpp 交错音频,对吗?
mFormatFlags
的 0xe
的值是 0b1110
,等于:
kAudioFormatFlagIsBigEndian = (1U << 1), // 0x2
kAudioFormatFlagIsSignedInteger = (1U << 2), // 0x4
kAudioFormatFlagIsPacked = (1U << 3), // 0x8
所以一个帧由两个交错的 big-endian int16_t
个样本组成。