AVPlayer seekToTime 跳到某一时刻

要使用 CMTime 数据结构

CMTimeMake(a, b)   a是当前播放的 第几帧,b表示每秒播放多少帧(fps)。  播放时间就是:a/b  

CMTimeMakeWithSeconds(a, b)  a是当前时间,b表示每秒播放的帧数(fps)。 即 timeScale。

CMTime算是一个对于time实际时间关于音视频处理的一个时间结构体。

获取当前视频的 timeScale。playerItem.asset.duration 获取的总时长,返回 CMTime结构,里面有timeScale。

First, get the timescale value and pass it to the CMTime struct. Second, use the seekToTime:toleranceBefore:toleranceAfter:completionHandler: method for more accurate seeking. For example, your code would look like:

- (IBAction)progressBarDraggindStop:(id)sender {
    int32_t timeScale = self.audioPlayer.currentItem.asset.duration.timescale;

    [self.audioPlayer seekToTime: CMTimeMakeWithSeconds(self.progressBar.value, timeScale)
                 toleranceBefore: kCMTimeZero
                  toleranceAfter: kCMTimeZero
               completionHandler: ^(BOOL finished) {
                   [self.audioPlayer play];
               }];
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值