2013-04-25 48 views
1

我正在Xcode中開發iOS應用程序。我仍然是編程新手。 我試圖在播放時使用AVPlayer設置音軌的音量。如果設置時間爲kCMTimeZero,但是我希望它在按下按鈕一秒後設置音量,它會很好用。AVMutableAudioMixInputParameters setVolume atTime不適用於kCMTimeZero

工作

- (IBAction)maxVolButtonPressed:(id)sender { 
    [audioInputParams1 setVolume:1 atTime:time1]; 
    [self applyAudioMix]; 
} 

工作

- (IBAction)minVolButtonPressed:(id)sender { 
    [audioInputParams1 setVolume:0 atTime:kCMTimeZero]; 
    [self applyAudioMix]; 
} 

我應該atTime後寫什麼,如果我想一秒鐘的延遲?

答案: 好吧,我想通了。您必須添加當前項目的時間。我使用setVolumeRampFromStartVolume來代替setVolume,而使用很短的時間間隔。由於某種原因,setVolume淡出到給定的音量,我還沒有弄清楚爲什麼。 它的工作對我來說是這樣的:

CMTime time1 = CMTimeMake(1000, 1000); //2s 
CMTime time2 = CMTimeMake(1001, 1000); //3s 
CMTime timeCurrent = [player currentTime]; 
CMTime time1Added = CMTimeAdd(timeCurrent, time1); 
CMTime time2Added = CMTimeAdd(timeCurrent, time2); 
CMTimeRange fadeInTimeRange = CMTimeRangeFromTimeToTime(time1Added, time2Added); 
[audioInputParams1 setVolumeRampFromStartVolume:0 toEndVolume:1 timeRange:fadeInTimeRange]; 
[self applyAudioMix]; 

回答

1

你應該做這樣的事情:

- (IBAction)maxVolButtonPressed:(id)sender { 
    [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(setVolume:) userInfo:nil repeats:NO]; 
} 

- (void)setVolume:(id)sender{ 
    [audioInputParams1 setVolume:1 atTime:kCMTimeZero]; 
    [self applyAudioMix]; 
} 

在你說的第一種方法:等待1秒鐘,然後調用方法setVolume:。

+0

是的,我想到了,但我只是不能解釋爲什麼它不是工作,如果我把例如:CMTime time1 = CMTimeMake(1000,1000);而不是kCMTimeZero。 – 2013-04-25 17:01:25

相關問題