を遊んでAVMutableAudioMixInputParametersに取り組んでいません。setVolumeは、私は現在、アプリケーションのコントローラを使用してというよりも、MPMusicPlayerController AVPlayer使用して携帯電話のローカルiPodのライブラリから音楽を再生しようとしている携帯電話からローカルのiPodライブラリー
ローカルのiPodライブラリからMPMediaQueryを使用してトラックを選択することができますが、AVMutableAudioMixInputParametersを使用して低レベルでオーディオを開始しようとすると、ボリュームがまったく低下しないようです。
私がAVPlayerを使用していてMPMusicPlayerControllerを使用していない理由は、私が同時にいくつかの他のオーディオをバックグラウンドで再生していることと、MPMusicPlayerControllerがAVPlayerを使用して既存のオーディオファイルを再生できないことです。私が今使っているコードは:
// just blindly select all music for now.
MPMediaQuery *everything = [[MPMediaQuery alloc] init];
NSArray *itemsFromGenericQuery = [everything items];
MPMediaItem *song;
NSMutableArray *array = [[NSMutableArray alloc] init];
for (song in itemsFromGenericQuery)
{
[array addObject:song];
}
です。この時点で、配列はmy libのトラックの配列です。
今1を取得し、使用してそれを再生するAVPlayer:
// grab the first song off the array
MPMediaItem *song = [array objectAtIndex:0];
NSURL *assetURL = [song valueForProperty:MPMediaItemPropertyAssetURL];
AVURLAsset *asset = [AVURLAsset URLAssetWithURL:assetURL options:nil];
NSArray *audioTracks = [asset tracksWithMediaType:AVMediaTypeAudio];
AVAssetTrack *track = [audioTracks objectAtIndex:0];
NSMutableArray *allAudioParams = [NSMutableArray array];
AVMutableAudioMixInputParameters *audioInputParams =
[AVMutableAudioMixInputParameters audioMixInputParameters];
// this is the key line - turn the volume down.
[audioInputParams setVolume:0.3 atTime:kCMTimeZero];
[audioInputParams setTrackID:[track trackID]];
[allAudioParams addObject:audioInputParams];
AVMutableAudioMix *audioZeroMix = [AVMutableAudioMix audioMix];
[audioZeroMix setInputParameters:allAudioParams];
// Create a player item
AVPlayerItem *playerItem = [AVPlayerItem playerItemWithAsset:asset];
[playerItem setAudioMix:audioZeroMix];
[playerItem seekToTime:CMTimeMake(30, 1)];
[self setLocalPlayer:[AVPlayer playerWithPlayerItem:playerItem]];
[localPlayer play];
私はAVPlayerを使用するときに音量を調整する作品URL(ストリーミング)からファイルを再生することを確認することができます。地元の図書館で遊んだときだけではありません。
私はここに任意のメモリ管理を行っていない実現します。最初にそれを働かせようとしているだけです。また、ローカルプレイヤーはプロパティであるため、明示的な保持はありません。
ご協力いただければ幸いです!
ありがとうございました。
私はiPhoneの開発者ではないんだけど、ISNその関数の名前...少し長すぎる? – aviraldg
heh、それはビットですが、stdlibのlib /関数です。 –
解決策を見つけることができましたか? –