Вопрос по avaudioplayer, volume, avplayer, iphone – AVPlayer Регулятор громкости

7

Я хочу создать кнопку, которая отключает звук от AVPlayer.

Почему не могуt Я использую .volume с AVPlayer, только с AVAudioPlayer? Есть ли другой способ изменить громкость?

напримерmusic.volume = 0.0;

Спасибо за ваши ответы.

Ваш Ответ

5   ответов
2

лучший способ заключается в следующем

  AVAssetTrack* assetTrackAudio = [arrayTracks objectAtIndex:0];

    AVMutableAudioMixInputParameters* audioInputParams = [AVMutableAudioMixInputParameters audioMixInputParameters];
    [audioInputParams setVolume:currentVolume atTime:playerCursorStartPosition];
    [audioInputParams setTrackID:[assetTrackAudio trackID]];

    NSArray* audioParams = [NSArray arrayWithObject:audioInputParams];
    AVMutableAudioMix* audioMix = [AVMutableAudioMix audioMix];
    [audioMix setInputParameters:audioParams];

    AVPlayerItem* item = [player currentItem];
    [item setAudioMix:audioMix];
Нет, это также работа с AVPlayer. Я делал это раньше Saurabh Singh
@ user2196602: Конечно, он работает с AVPlayer. Пожалуйста, проверьтеяблочная документация execv
Я думаю этоРаботает только с AVAudioPlayer. Когда я использую это с AVPlayer, ничего не происходит. Lorenz Wöhr
0

Apple документация для отключения звука

Ниже приведен код

 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];
13

Начиная с iOS 7, просто позвоните:

myAvPlayer.volume = 0;

Иначе тыпридется использовать раздражающийsetAudioMix решение. Я'm обнаруживает поддержку для этого в моем приложении следующим образом:

if ([mPlayer respondsToSelector:@selector(setVolume:)]) {
    mPlayer.volume = 0.0;
 } else {
     NSArray *audioTracks = mPlayerItem.asset.tracks;

     // 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];

     [mPlayerItem setAudioMix:audioZeroMix]; // Mute the player item
 }
Идеальный, простой, красивый ответ! Ashley Mills
@CupawnTae вау это отличный вопрос. Да, я был очень сонный и сделал ложную коррекцию. Я изменил это обратно. Doug
Спасибо, Даг! Я искал это пару часов. К счастью этопросто установить одно свойство на AVPLayer: D Mapedd
@doug почему ты изменил это на1.0 - просто опечатка? CupawnTae
3

Я использовал код ниже, чтобы отключить AVPlayer.

 float volSet = 0 ;
 AVAsset *avAsset = [[avPlayer currentItem] asset] ;
NSArray *audioTracks = [avAsset tracksWithMediaType:AVMediaTypeAudio] ;

 NSMutableArray *allAudioParams = [NSMutableArray array] ;
for(AVAssetTrack *track in audioTracks){
 AVMutableAudioMixInputParameters *audioInputParams = [AVMutableAudioMixInputParameters audioMixInputParameters] ;
[audioInputParams setVolume:volSet atTime:kCMTimeZero] ;
 [audioInputParams setTrackID:[track trackID]] ;
 [allAudioParams addObject:audioInputParams];
}
 AVMutableAudioMix *audioVolMix = [AVMutableAudioMix audioMix] ;
[audioVolMix setInputParameters:allAudioParams];
 [[avPlayer currentItem] setAudioMix:audioVolMix];
У меня работает спасибо. Clive Jefferies
и это не AVPlayer, я думаю ... BhushanVU
эта работа! но ты нене нужно делать цикл! user1628700
Это работает: [[MPMusicPlayerController applicationMusicPlayer] setVolume: 0.0]; Lorenz Wöhr
это все еще работает, но это устанавливает системный объем kezi
0

Начиная с iOS 7 также естьmuted недвижимость на:AVPlayer

@property (nonatomic, getter=isMuted) BOOL muted NS_AVAILABLE(10_7, 7_0);

Похожие вопросы