1

当混合两个音频文件时,这段代码显示一个声音被视为立体声,另一个被视为单声道,这是为什么呢?为什么不能将它们都视为立体声?

 @property (readwrite)           AudioStreamBasicDescription stereoStreamFormat;
 @property (readwrite)           AudioStreamBasicDescription monoStreamFormat;

音频文件的检查是这样的。

 if ((inputDataFormat.mFormatID == kAudioFormatLinearPCM) &&
    (inputDataFormat.mSampleRate == 44100.0) &&
    (inputDataFormat.mChannelsPerFrame == 2) &&
    (inputDataFormat.mChannelsPerFrame == 2) &&
    (inputDataFormat.mBitsPerChannel == 16) &&
    (inputDataFormat.mFormatFlags == (kAudioFormatFlagsNativeEndian |
                                      kAudioFormatFlagIsPacked | kAudioFormatFlagIsSignedInteger))
    ) {
    // no-op when the expected data format is found
} else {
    status = kAudioFileUnsupportedFileTypeError;
    goto reterr;
}

为什么遇到该数据格式时会触发无操作条件?

4

1 回答 1

0

当混合两个音频时,这段代码显示一个声音被视为立体声,另一个被视为单声道,这是为什么呢?

这是您正在使用的任何库的实现细节。

为什么不能将它们都视为立体声?

好吧,如果您编写支持代码来复制信号/流的数据,他们当然可以。通常,您会这样做,而是保留区别(如原作者所做的那样),因此您的渲染链不会使渲染或文件大小加倍。

为什么遇到该数据格式时存在无操作条件?

这只是作者的写作风格。这个表达式可以写成几种方式。

于 2012-09-27T00:26:04.670 回答