1

我正在 Xcode 中开发一个 iOS 应用程序。我还是编程新手。我正在尝试设置音轨的音量,同时使用AVPlayer. 如果将时间设置为很好,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];
4

1 回答 1

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:。

于 2013-04-25T14:54:50.887 回答