我想在 IOS 上播放声音文件中指定的持续时间。我在 AVAudioPlayer 中找到了一种方法,该方法寻求播放的开始(playAtTime:),但我找不到直接的方法来指定声音文件结束之前的结束时间。
有办法实现这一点吗?
如果您不需要太精确并且想坚持使用AVAudioPlayer
,这是一种选择:
- (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
plays AVPlayerItem
对象,它可以让你指定一个forwardPlaybackEndTime
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)