查看avaudioplayer的当前播放时间
Posted
技术标签:
【中文标题】查看avaudioplayer的当前播放时间【英文标题】:check avaudioplayer's current playback time 【发布时间】:2012-03-01 22:41:07 【问题描述】:这是检查AVAudioPlayer's
当前播放时间的正确方法吗?
[audioPlayer play];
float seconds = audioPlayer.currentTime;
float seconds = CMTimeGetSeconds(duration);
之后我如何编码
[audioPlayer play];
当 currentTime 等于 11 秒时
[self performSelector:@selector(firstview) withObject:nil];
当 currentTime 等于 23 秒时在 firstview 之后
[self performSelector:@selector(secondview) withObject:nil];
【问题讨论】:
安排一个检查时间的并行计时器。currentTime
返回一个 NSTimeInterval 变量,所以 double seconds = audioPlayer.currentTime;
是正确的。
【参考方案1】:
您可以设置NSTimer
来定期检查时间。你需要一个类似的方法:
- (void) checkPlaybackTime:(NSTimer *)theTimer
float seconds = audioPlayer.currentTime;
if (seconds => 10.5 && seconds < 11.5)
// do something
else if (seconds >= 22.5 && seconds < 23.5)
// do something else
然后设置 NSTimer 对象以每秒(或您喜欢的任何间隔)调用此方法:
NSTimer *myTimer = [NSTimer scheduledTimerWithTimeInterval:1.0
target:self
selector:@selector(checkPlaybackTime:)
userInfo:nil
repeats:YES];
查看 NSTimer 文档了解更多详情。您确实需要在正确的时间停止(无效)计时器:
https://developer.apple.com/documentation/foundation/nstimer
编辑:seconds
可能不会正好是 11 或 23;您将不得不摆弄粒度。
【讨论】:
我不喜欢 1 秒的边界围栏。他们似乎不可靠。就说if (seconds => 11) .. performSelector:, then set some flag indicating that even already happened.
以上是关于查看avaudioplayer的当前播放时间的主要内容,如果未能解决你的问题,请参考以下文章
触发 AVAudioPlayer 以停止所有声音并播放选定的声音,除非单击播放(选定)按钮
Swift AVAudioPlayer (Xcode) - 在应用程序包外播放音频文件
AVAudioPlayer 重置当前播放的声音并从头开始播放