对AVPlayer的一些简单应用

431 阅读1分钟

最近项目中要简单用到一写在线播放和本地播放的技术,其中包括一段录音的定位精确播放:

//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];