3

IOSのサウンドファイル内で指定された時間を再生したい。AVAudioPlayerで再生の開始を求めるメソッド(playAtTime :)を見つけましたが、サウンドファイルの終了前に終了時間を指定する直接的な方法が見つかりません。

これを達成する方法はありますか?

4

1 に答える 1

12

あまり精度を必要とせず、固執したい場合はAVAudioPlayer、これが1つのオプションです。

- (void)playAtTime:(NSTimeInterval)time withDuration:(NSTimeInterval)duration {
    NSTimeInterval shortStartDelay = 0.01;
    NSTimeInterval now = player.deviceCurrentTime;

    [self.audioPlayer playAtTime:now + shortStartDelay];
    self.stopTimer = [NSTimer scheduledTimerWithTimeInterval:shortStartDelay + duration 
                                                      target:self 
                                                    selector:@selector(stopPlaying:)
                                                    userInfo:nil
                                                     repeats:NO];
}

- (void)stopPlaying:(NSTimer *)theTimer {
    [self.audioPlayer pause];
}

stopTimerこれはスレッドの実行ループで発生するため、アプリがその時点で他に何をしているかによって、オーディオの再生時間に多少のばらつきがあることに注意してください。より高いレベルの精度が必要な場合は、のAVPlayer代わりにを使用することを検討してAVAudioPlayerください。 オブジェクトをAVPlayer再生します。これにより、を指定できます。AVPlayerItemforwardPlaybackEndTime

于 2011-07-05T03:47:07.400 に答える