最近项目中要简单用到一写在线播放和本地播放的技术,其中包括一段录音的定位精确播放:
//self.dianDuModel.audioStartPos:录音的起始播放时间毫秒单位
//toleranceBefore:从哪开始找
//toleranceAfter:找到哪儿结束,设置参数有利于快速查找
[self.player seekToTime:CMTimeMake(self.dianDuModel.audioStartPos/1000, 1) toleranceBefore:kCMTimeZero toleranceAfter:CMTimeMake(self.dianDuModel.audioStartPos/1000, 1) completionHandler:^(BOOL finished) {
//找到后播放
[weakSelf.player play];
}];
播放到什么时间停止:
@property (strong, nonatomic) id timeObser;
self.timeObser = [self.player addPeriodicTimeObserverForInterval:CMTimeMake(1, 1) queue:dispatch_get_main_queue() usingBlock:^(CMTime time) {
// CMTime timeEnd = CMTimeMake(dianDuModel.audioEndPos, 1000);
//当前播放的时间
CGFloat current = CMTimeGetSeconds(time);
NSLog(@"current:%f --- audioEndPos :%ld",current,self.dianDuModel.audioEndPos/1000);
if (current >= (self.dianDuModel.audioEndPos/1000)) {
[weakSelf.player pause];
}
}];
//页面退出时需要释放掉self.timeObser:[self.player removeTimeObserver:self.timeObser];