我正在使用 AVPlayer 播放本地音频文件和音频流。
除音量外,在真实设备上一切正常。音量非常低。即使我设置了设备音量最大值。但耳机音量正常。我猜想扬声器的音量如何变成耳机的音量。
它也适用于模拟器。
我试过 MPMusicPlayerController 、 AVMutableAudioMix 来设置音量。但没有任何效果。
我完全糊涂了。谢谢你的帮助。
我正在使用 AVPlayer 播放本地音频文件和音频流。
除音量外,在真实设备上一切正常。音量非常低。即使我设置了设备音量最大值。但耳机音量正常。我猜想扬声器的音量如何变成耳机的音量。
它也适用于模拟器。
我试过 MPMusicPlayerController 、 AVMutableAudioMix 来设置音量。但没有任何效果。
我完全糊涂了。谢谢你的帮助。
您可以从开发者那里获得解决方案。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];