で音量設定を変更したかったのUISlider
です。
currentItem
中で使用しAVQueuePlayer
ました。
ps0
ですAVQueuePlayer
。
my を使用すると、エラーは発生せず、サウンドレベルも同じです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];