我有一个AudioBuffer来自AVCaptureSession CMSampleBuffer,比如:
Sample Rate: 44100
Format ID: lpcm
Format Flags: C
Bytes per Packet: 2
Frames per Packet: 1
Bytes per Frame: 2
Channels per Frame: 1
Bits per Channel: 16
kAudioFormatFlagIsSignedInteger
kAudioFormatFlagIsPacked
kLinearPCMFormatFlagIsSignedInteger
kLinearPCMFormatFlagIsPacked
kLinearPCMFormatFlagsSampleFractionShift
kAppleLosslessFormatFlag_32BitSourceData 如何正确地转换/枚举示例?(为了进行一些处理),我应该使用上面的配置来转换mData类型吗?
我是否完全正确地解析格式标志?上面的输出是由https://gist.github.com/eppz/11272305制作的。
发布于 2014-04-24 23:02:52
一旦我在上面解析了标志,kAudioFormatFlagIsSignedInteger似乎就是答案,每个通道有16位。
到目前为止,情况如下:
// Enumerate audio buffers (probably faceing a sole buffer handling mono PCM anyway).
for (int audioBufferIndex = 0; audioBufferIndex <= audioBufferList.mNumberBuffers; audioBufferIndex++)
{
AudioBuffer eachAudioBuffer = audioBufferList.mBuffers[audioBufferIndex];
// Enumerate samples.
SInt16 *samples;
samples = (SInt16*)eachAudioBuffer.mData;
for (int sampleIndex = 0; sampleIndex <= sampleCount; sampleIndex++)
{
SInt16 eachSample = samples[sampleIndex];
printf("%i \n", eachSample);
}
}https://stackoverflow.com/questions/23281081
复制相似问题