2013-04-05 7 views
1

UISlider 컨트롤을 사용하여 볼륨 컨트롤을 구현하려는 경우 AVPlayer 클래스를 사용하는 사용자 정의 비디오 플레이어에서 작업 중입니다.AVPlayer 볼륨 컨트롤 비디오 재생 중

NSMutableArray *allAudioParams = [NSMutableArray array]; 
AVMutableAudioMixInputParameters *audioInputParams =[AVMutableAudioMixInputParameters audioMixInputParameters]; 
[audioInputParams setVolume:volumeSlider.value atTime:kCMTimeZero]; 
[allAudioParams addObject:audioInputParams]; 
AVMutableAudioMix *audioZeroMix = [AVMutableAudioMix audioMix]; 
[audioZeroMix setInputParameters:allAudioParams]; 
[self.playerItem setAudioMix:audioZeroMix]; 

을하지만 나를 이렇게 누군가가 나에게 내가 너무 많은 연구를 & D를 수행하지만 적절한 해결책을 찾을 수없는 한 이에 대한 다른 솔루션을 제안 해주십시오 수 있습니다 자사가 작동하지 :

내가 이런 짓을했는지.

감사합니다.

답변

0

당신은 볼륨을 변경하는 코드 아래 사용할 수 있습니다

NSArray *audioTracks = [asset tracksWithMediaType:AVMediaTypeAudio]; 

NSMutableArray *allAudioParams = [NSMutableArray array]; 
for (AVAssetTrack *track in audioTracks) { 
    AVMutableAudioMixInputParameters *audioInputParams = 
    [AVMutableAudioMixInputParameters audioMixInputParameters]; 
    [audioInputParams setVolume:volume atTime:kCMTimeZero]; 
    [audioInputParams setTrackID:[track trackID]]; 
    [allAudioParams addObject:audioInputParams]; 
} 

AVMutableAudioMix *audioMix = [AVMutableAudioMix audioMix]; 
[audioMix setInputParameters:allAudioParams]; 

[playerItem setAudioMix:audioMix]; 
+0

그것은 나 감사의 친구를 위해 작동합니다. –

+0

그러나이 방법은 Live Stream (playlist.m3u8)의 모든 솔루션에서 작동하지 않습니다. – Buntylm

0
-(void)doVolumeFade 
{ 
    if (self.player.volume > 0.1) { 
     self.player.volume = self.player.volume - 0.1; 
     [self performSelector:@selector(doVolumeFade) withObject:nil afterDelay:0.1];  
    } else { 
     // Stop and get the sound ready for playing again 
     [self.player stop]; 
     self.player.currentTime = 0; 
     [self.player prepareToPlay]; 
     self.player.volume = 1.0; 
    } 
}