0

我正在使用 AVPlayer 播放本地音频文件和音频流。

除音量外,在真实设备上一切正常。音量非常低。即使我设置了设备音量最大值。但耳机音量正常。我猜想扬声器的音量如何变成耳机的音量。

它也适用于模拟器。

我试过 MPMusicPlayerController 、 AVMutableAudioMix 来设置音量。但没有任何效果。

我完全糊涂了。谢谢你的帮助。

4

1 回答 1

0

您可以从开发者那里获得解决方案。Apple 技术问答 QA1716

AVPlayer 使用系统音量(由硬件音量开关控制)进行媒体播放。

使用MPVolumeView类在您的应用程序中向用户展示一个滑块控件,以设置系统音频输出音量

有关详细信息,请参阅MPVolumeView 类参考

您可以使用 AVPlayer 通过创建带有音量斜坡的 AVAudioMix 将音量设置为 0 来静音音频的播放,如下所示

通过创建一个具有零音量斜坡的 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 回答