0

AVPlayer を使用してローカル オーディオ ファイルとオーディオ ストリームを再生しています。

ボリュームを除いて、すべてが実際のデバイスで正常に動作します。音量は非常に小さいです。デバイスの音量を最大に設定しても。イヤホンの音量は正常です。スピーカーの音量がイヤホンの音量になっていると思います。

また、シミュレーターでも問題なく動作します。

MPMusicPlayerController 、 AVMutableAudioMix を試して音量を設定しました。しかし、何も機能しません。

私は完全に混乱しています。助けてくれてありがとう。

4

1 に答える 1

0

解決策は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];
于 2012-09-19T12:04:07.370 に答える