解決策はdeveloper.Apple Technical Q&A QA1716から入手できます。
AVPlayer は、メディアの再生にシステム ボリューム (ハードウェアのボリューム スイッチで制御) を使用します。
MPVolumeViewクラスを使用して、システム オーディオ出力ボリュームを設定するためのスライダー コントロールをアプリケーションでユーザーに提示します。
詳細については、MPVolumeView クラス リファレンスを参照してください。
以下に示すように、音量ランプを使用して AVAudioMix を作成し、音量を 0 に設定することにより、AVPlayer でオーディオの再生をミュートできます。
ボリューム ランプがゼロの AVAudioMix を作成して、AVPlayer でオーディオの再生をミュートします。
AVURLAsset *asset = [AVURLAsset URLAssetWithURL:[self myAssetURL] options:nil];
NSArray *audioTracks = [asset tracksWithMediaType:AVMediaTypeAudio];
// Mute all the audio tracks
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];
// Create a player item
AVPlayerItem *playerItem = [AVPlayerItem playerItemWithAsset:asset];
[playerItem setAudioMix:audioZeroMix]; // Mute the player item
// Create a new Player, and set the player to use the player item
// with the muted audio mix
AVPlayer *player = [AVPlayer playerWithPlayerItem:playerItem];
// assign player object to an instance variable
self.mPlayer = player;
// play the muted audio
[mPlayer play];