Я хотел изменить настройки громкости с помощью UISlider
.Объем AVQueuePlayer не изменен
Я использовал currentItem
внутри AVQueuePlayer
. ps0
является AVQueuePlayer
.
У меня нет ошибок и одинакового уровня звука, когда я использую мой UISlider
:
- (IBAction)volumeSliderMoved:(UISlider *)sender
{
AVMutableAudioMixInputParameters *audioInputParams = [AVMutableAudioMixInputParameters audioMixInputParameters];
AVPlayerItem *av = [ps0 currentItem];
CMTime currentTime = [av currentTime];
float volume = [sender value];
[audioInputParams setVolume:volume atTime:currentTime];
AVMutableAudioMix *audioMix = [AVMutableAudioMix audioMix];
audioMix.inputParameters = [NSArray arrayWithObject:audioInputParams];
av.audioMix = audioMix;
[ps0 replaceCurrentItemWithPlayerItem: av];
}
Редакция: Я попробовал другой solution от Apple, чтобы изменить настройки громкости.
Как вы можете видеть в этом решении, он создает новый playerItem
и новый плеер.
Но мой playerItem
является копией текущего, потому что я просто хочу изменить звук (а не элемент). И это автоматически связано со старым игроком.
Когда я пытаюсь использовать их решение. У меня есть сообщение об ошибке, говорящее:
AVPlayerItem не может быть связан с более чем одним экземпляром AVPlayer
Любое предложение?
EDITED снова
Чтобы изменить воспроизведение с AVQueuePlayer
У меня есть массив с каждым mp3 названием «textMissingTab»
У меня есть массив с AVPlayerItem «soundItems»
Создание:
textMissingTab = [[NSArray alloc] initWithObjects:@"cat",@"mouse",@"dog",@"shark",@"dolphin", @"eagle", @"fish", @"wolf", @"rabbit", @"person", @"bird", nil];
for (NSString *text in textMissingTab)
{
NSURL *soundFileURL = [[NSURL alloc] initFileURLWithPath: [[NSBundle mainBundle] pathForResource:text ofType:@"mp3"]];
AVPlayerItem *item = [AVPlayerItem playerItemWithURL:soundFileURL];
[soundItems addObject:item];
}
Init:
NSURL *soundFileURL = [[NSURL alloc] initFileURLWithPath: [[NSBundle mainBundle] pathForResource:@"dog" ofType:@"mp3"]];
ps0 = [[AVQueuePlayer alloc] initWithURL:soundFileURL];
Изменение воспроизводимого элемента,: текст NSString
int index = [textMissingTab indexOfObject:text];
[ps0 setActionAtItemEnd:AVPlayerActionAtItemEndNone];
CMTime newTime = CMTimeMake(0, 1);
[ps0 seekToTime:newTime];
[ps0 setRate:1.0f];
[ps0 replaceCurrentItemWithPlayerItem:[soundItems objectAtIndex:(index)]];
[ps0 play];
Спасибо, это большая идея использовать MPVolumeView для управления уровнем звука – 2013-04-24 07:39:17