日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

html倒放播放器,AVPlayer 的无缝快进和倒放.

發(fā)布時間:2023/12/31 编程问答 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 html倒放播放器,AVPlayer 的无缝快进和倒放. 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

最近研究一個AVPlayer seekTime方法的 問題.這個方法雖然可以跳到指定的幀,但是如果你用拖動框去調(diào)動這個方法,你會發(fā)現(xiàn)這個方法會延遲.

我們查看系統(tǒng)的播放器,你會發(fā)現(xiàn)他是不會延遲.拖到哪就能顯示當前幀.

我們查找API發(fā)現(xiàn)seekTime 還有一個

- (void)seekToTime:(CMTime)time toleranceBefore:(CMTime)toleranceBefore toleranceAfter:(CMTime)toleranceAfter completionHandler:(void (^)(BOOL finished))completionHandler

這個方法發(fā)現(xiàn)官方的解釋是:

在指定的時間范圍內(nèi)移動回放光標,并在查找操作完成或中斷時調(diào)用指定的塊。

使用此方法可以查找當前播放器項目的指定時間,并在查找操作完成時收到通知。

要求的時間將在[時間容差前,時間+容差后]范圍內(nèi),并且可能與指定的效率時間不同。

將kCMTimeZero傳遞給toleranceBefore和toleranceAfter以請求采樣精確搜索,這可能會導致額外的解碼延遲。

使用beforeTolerance消息傳遞此方法:kCMTimePositiveInfinity和afterTolerance:kCMTimePositiveInfinity與消息傳遞seekToTime:直接相同。

任何之前正在處理的查找請求的完成處理程序?qū)⒘⒓凑{(diào)用,并將完成的參數(shù)設(shè)置為NO。如果新的

請求完成而不被另一個查找請求或任何其他操作中斷,指定的完成處理程序?qū)⒈徽{(diào)用

完成參數(shù)設(shè)置為YES。

沒錯這個就是我們要找個.但是當你換成這個方法的時候,你會發(fā)現(xiàn),沒什么**用.

我們深究官方的解釋我們要理解

任何之前正在處理的查找請求的完成處理程序?qū)⒘⒓凑{(diào)用,并將完成的參數(shù)設(shè)置為NO。如果新的

請求完成而不被另一個查找請求或任何其他操作中斷,指定的完成處理程序?qū)⒈徽{(diào)用

完成參數(shù)設(shè)置為YES。

這幾句話.是說completionHandler 沒有完成的情況下不調(diào)用這個方法.如果你不間斷調(diào)用seekTime的 話,則會造成前個seekTime操作的中斷.我們只需要加個BOOL值就可以了.

上代碼

- (void)processMovie:(NSURL*)assetURL{

AVAsset *asset = [AVAsset assetWithURL:assetURL];

float totalTime = CMTimeGetSeconds(asset.duration);

process = self.selectView.frame.origin.x / self.selectImageView.frame.size.width;

NSLog(@"%f",process);

[self.player pause];

CMTime newChaseTime = CMTimeMake(totalTime * process * asset.duration.timescale, asset.duration.timescale);

if (CMTIME_COMPARE_INLINE(newChaseTime, !=, chaseTime)) {

chaseTime = newChaseTime;

if (!isSeekInProgress) {

[self trySeekToChaseTime];

}

}

[self onVideoPlayerProgressUpdate];

}

- (void)trySeekToChaseTime{

if (_player.currentItem.status == AVPlayerItemStatusUnknown) {

} else if (_player.currentItem.status == AVPlayerItemStatusReadyToPlay){

[self actuallySeekToTime];

}

}

- (void)actuallySeekToTime{

isSeekInProgress = YES;

CMTime seekTimeInProgress = chaseTime;

[self.player seekToTime:seekTimeInProgress

toleranceBefore:kCMTimeZero

toleranceAfter:kCMTimeZero

completionHandler:^(BOOL finished) {

if (CMTIME_COMPARE_INLINE(seekTimeInProgress, ==, chaseTime)) {

isSeekInProgress = NO;

} else {

[self trySeekToChaseTime];

}

}];

}

效果:

原創(chuàng)文章轉(zhuǎn)載需獲授權(quán)并注明出處

請在后臺留言聯(lián)系轉(zhuǎn)載

總結(jié)

以上是生活随笔為你收集整理的html倒放播放器,AVPlayer 的无缝快进和倒放.的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。