3

AVPlayer の音量を動的に変更するにはどうすればよいですか? つまり、ボタンを押すたびに音量をミュートしたいのです。指定されたコードは、コンパイル時にのみ変更されるようです。実行時にそれを行う方法???

AVURLAsset *asset = [AVURLAsset URLAssetWithURL:[self myAssetURL] options:nil];
NSArray *audioTracks = [asset tracksWithMediaType:AVMediaTypeAudio];
NSMutableArray *allAudioParams = [NSMutableArray array];
for (AVAssetTrack *track in audioTracks) {
    AVMutableAudioMixInputParameters *audioInputParams =[AVMutableAudioMixInputParameters audioMixInputParameters];
    [audioInputParams setVolume:0.0 atTime:kCMTimeZero];
    [audioInputParams setTrackID:[track trackID]];
    [allAudioParams addObject:audioInputParams];
}
AVMutableAudioMix *audioZeroMix = [AVMutableAudioMix audioMix];
[audioZeroMix setInputParameters:allAudioParams];
AVPlayerItem *playerItem = [AVPlayerItem playerItemWithAsset:asset];
[playerItem setAudioMix:audioZeroMix]; 
AVPlayer *player = [AVPlayer playerWithPlayerItem:playerItem];
self.mPlayer = player;
[mPlayer play];
4

1 に答える 1

2

playerItem再生中にAVMutableAudioMixの新しいインスタンスを送信して、レベルを動的に変更できます。ボタンを、適切な値で新しいAVMutableAudioMixインスタンスを作成するアクションメソッドにリンクし(上記で行ったように)、playerItemのsetAudioMix:メソッドを使用して新しいミックス値を設定するだけです。(メソッド間で作業している場合は、後でアクセスするために、playerItemインスタンスへの参照を保存することを忘れないでください。)

(NBはプロパティの合成セッターであるため、 AVPlayerItemドキュメントsetAudioMix:では明示的に言及されていません。)audioMix

于 2012-04-18T21:05:57.533 に答える