IOSのサウンドファイル内で指定された時間を再生したい。AVAudioPlayerで再生の開始を求めるメソッド(playAtTime :)を見つけましたが、サウンドファイルの終了前に終了時間を指定する直接的な方法が見つかりません。
これを達成する方法はありますか?
IOSのサウンドファイル内で指定された時間を再生したい。AVAudioPlayerで再生の開始を求めるメソッド(playAtTime :)を見つけましたが、サウンドファイルの終了前に終了時間を指定する直接的な方法が見つかりません。
これを達成する方法はありますか?
あまり精度を必要とせず、固執したい場合は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
再生します。これにより、を指定できます。AVPlayerItem
forwardPlaybackEndTime