关于AVPlayer在真实设备上的音量

时间:2012-09-19 08:24:35

标签: iphone objective-c ios avplayer

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

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

它也适用于模拟器。

我已经尝试了MPMusicPlayerController,AVMutableAudioMix来设置音量。 但没有任何作用。

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

1 个答案:

答案 0 :(得分:0)

您可以从developer.Apple Technical Q&A QA1716

获取解决方案

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

使用 MPVolumeView 类在应用程序中向用户显示用于设置系统音频输出音量的滑块控件

有关详细信息,请参阅MPVolumeView Class Reference

您可以通过创建带音量斜坡的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];