2012-09-19 25 views
0

我正在使用AVPlayer播放本地音频文件和音频流。关于实际设备上的AVPlayer的音量

除了音量以外,一切都可以在实际设备上正常工作。 体积非常小。即使我将设备音量设置为最大。 但耳机音量正常。 我想一些扬声器的音量是如何变成耳机的音量。

它在模拟器中也可以正常工作。

我试过用MPMusicPlayerController,AVMutableAudioMix来设置音量。 但没有用。

我完全困惑。 感谢您的帮助。

回答

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]; 
+0

AVPlayer没有卷属性。这不是AVAudioPlayer。而我的音频文件的音量不低,它只出现在我的应用程序中。 – icefox

+0

我编辑了我的答案..它可能会帮助你 –

+0

谢谢。我发现了这个问题。它是AVAudioSession,如果我删除了关于我的AVAudioSession设置的所有代码,音量就会变得正常。但是我仍然不知道如何设置AVAudioSession。 – icefox