0

で音量設定を変更したかったの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];
4

3 に答える 3

0

あなたは正しいと思います。MPVolumeView は、サウンド レベルを管理するための最良の方法です。

このチュートリアルで説明されています: http://www.littlereddoor.co.uk/ios/controlling-system-output-volume-by-adding-an-mpvolumeview-object-to-an-ios-application/

「デバイスに設定されている現在の着信音の音量によってユーザーがつまずきにぶつかるまで、すべてが期待どおりに機能します。AVAudioPlayer プロパティの最大値は 1.0 で、1.0 は現在の着信音の音量設定に等しくなります。簡単に言えば、デバイスの着信音の音量が 50% に設定されている場合、AVAudioPlayer の音量の 100% は、既に設定されている 50% の着信音に相当するだけです。

AVQueuePlayer でいくつかの曲を管理する方法を示すために、投稿を再度編集しました。コードのこの部分は機能しています。

于 2013-04-24T07:26:01.397 に答える
0

AVQueuePlayer の使用と再生パラメータの変更にいくつか問題がありました。ボリューム調整にスライダーを使用することが目標の場合、ストーリーボードで UISlider を空白の UIView に置き換えてから、そのビュー内で MPVolumeView をインスタンス化します。これは私にとって確実に機能します。MPVolumeView はシミュレーターには表示されないことに注意してください。

于 2013-04-23T17:14:10.603 に答える