我想用UISlider
.
我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];
}
已编辑: 我尝试了 Apple 的另一种解决方案来更改音量设置。
正如您在此解决方案中看到的,它创建了一个新的playerItem
和一个新的播放器。
但我playerItem
是当前的副本,因为我只想更改声音(而不是项目)。它会自动与旧播放器相关联。
当我尝试使用他们的解决方案时。我有一条错误消息说:
一个 AVPlayerItem 不能与多个 AVPlayer 实例关联
有什么建议吗?
再次编辑
使用 AVQueuePlayer 更改播放
我有一个包含每个 mp3 名称“textMissingTab”的数组</p>
我有一个带有 AVPlayerItem “soundItems”的数组</p>
创作:
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];
}
在里面 :
NSURL *soundFileURL = [[NSURL alloc] initFileURLWithPath: [[NSBundle mainBundle] pathForResource:@"dog" ofType:@"mp3"]];
ps0 = [[AVQueuePlayer alloc] initWithURL:soundFileURL];
更改 playItem :文本为 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];