在objective-c中控制一个通道的音量

时间:2014-09-12 17:55:45

标签: ios objective-c avaudioplayer volume

我有一个非常简单的AVAudioPlayer音频播放器(此时)有一首歌。 可以很容易地同时控制两个通道(左和右)的音量。

但是,是否可以仅控制左声道或仅控制右声道?

通过这种方式,我可以将左扬声器设置为右声道,反之亦然。反之亦然。

1 个答案:

答案 0 :(得分:3)

应该咨询AVAudioPlayer reference来回答这个问题。

您可以从界面中看到您无法直接控制左/右声道,但您可以将声相设置为-1(全左)到1(全右)。也许这会实现你想要的目标?

使用核心音频会更加困难,但应该能够解决这个问题。使用AVAudioPlayer的另一种可能性是将声音分成单独的声道并单独播放。然后,您可以单独设置音量。文档中有一个例子,说明如何确保两个声音完全同时播放。 (并且,您将要分别为每个声音设置声相,以便每个声音正确播放。)

效率较低的方法是两次同时播放两个.mp3副本。 (警告:我还没有测试过这段代码。)

// assumes you have url for the file you want to play
AVAudioPlayer *first = [[AVAudioPlayer alloc] initWithContentsOfURL:myUrl error:nil];
AVAudioPlayer *second = [[AVAudioPlayer alloc] initWithContentsOfURL:myUrl error:nil];

first.pan = -1; // only play on left channel
second.pan = 1; // only play on right channel

first.volume = 0.6;
second.volume = 1.0;

NSTimeInterval shortStartDelay = 0.01;
NSTimeInterval now = player.deviceCurrentTime;

[first  playAtTime: now + shortStartDelay];
[second playAtTime: now + shortStartDelay];