|
@@ -7,6 +7,8 @@
|
|
|
|
|
|
#import "KSVideoPlayerView.h"
|
|
#import "KSVideoPlayerView.h"
|
|
#import <AVFoundation/AVFoundation.h>
|
|
#import <AVFoundation/AVFoundation.h>
|
|
|
|
+#import <CloudAccompanyLibrary/AVPlayer+KSSeekSmoothly.h>
|
|
|
|
+
|
|
|
|
|
|
@interface KSVideoPlayerView ()
|
|
@interface KSVideoPlayerView ()
|
|
|
|
|
|
@@ -97,10 +99,11 @@
|
|
[_videoPlayer pause];
|
|
[_videoPlayer pause];
|
|
}
|
|
}
|
|
_isPlaying = YES;
|
|
_isPlaying = YES;
|
|
- MJWeakSelf;
|
|
|
|
|
|
+ @weakObj(self);
|
|
CMTime toleranceTime = kCMTimeZero;
|
|
CMTime toleranceTime = kCMTimeZero;
|
|
- [_videoPlayer seekToTime:kCMTimeZero toleranceBefore:toleranceTime toleranceAfter:toleranceTime completionHandler:^(BOOL finished) {
|
|
|
|
- [weakSelf.videoPlayer play];
|
|
|
|
|
|
+ [_videoPlayer ss_seekToTime:kCMTimeZero toleranceBefore:toleranceTime toleranceAfter:toleranceTime completionHandler:^(BOOL finished) {
|
|
|
|
+ @strongObj(self);
|
|
|
|
+ [self.videoPlayer play];
|
|
}];
|
|
}];
|
|
}
|
|
}
|
|
|
|
|
|
@@ -130,7 +133,7 @@
|
|
|
|
|
|
- (void)seekToStart {
|
|
- (void)seekToStart {
|
|
CMTime toleranceTime = CMTimeMake(1, 1000);
|
|
CMTime toleranceTime = CMTimeMake(1, 1000);
|
|
- [_videoPlayer seekToTime:kCMTimeZero toleranceBefore:toleranceTime toleranceAfter:toleranceTime completionHandler:^(BOOL finished) {
|
|
|
|
|
|
+ [_videoPlayer ss_seekToTime:kCMTimeZero toleranceBefore:toleranceTime toleranceAfter:toleranceTime completionHandler:^(BOOL finished) {
|
|
|
|
|
|
}];
|
|
}];
|
|
}
|
|
}
|
|
@@ -141,20 +144,26 @@
|
|
[_videoPlayer pause];
|
|
[_videoPlayer pause];
|
|
}
|
|
}
|
|
_isPlaying = YES;
|
|
_isPlaying = YES;
|
|
- MJWeakSelf;
|
|
|
|
|
|
+
|
|
CMTime offsetCTTime = CMTimeMake(labs(time), 1000);
|
|
CMTime offsetCTTime = CMTimeMake(labs(time), 1000);
|
|
CMTime toleranceTime = CMTimeMake(1, 1000);
|
|
CMTime toleranceTime = CMTimeMake(1, 1000);
|
|
- [_videoPlayer seekToTime:offsetCTTime toleranceBefore:toleranceTime toleranceAfter:toleranceTime completionHandler:^(BOOL finished) {
|
|
|
|
- [weakSelf.videoPlayer play];
|
|
|
|
-
|
|
|
|
|
|
+ @weakObj(self);
|
|
|
|
+ [_videoPlayer ss_seekToTime:offsetCTTime toleranceBefore:toleranceTime toleranceAfter:toleranceTime completionHandler:^(BOOL finished) {
|
|
|
|
+ @strongObj(self);
|
|
|
|
+ [self.videoPlayer play];
|
|
}];
|
|
}];
|
|
}
|
|
}
|
|
|
|
|
|
- (void)seekOffsetTime:(NSInteger)offsetTime {
|
|
- (void)seekOffsetTime:(NSInteger)offsetTime {
|
|
CMTime newTime = CMTimeMake(offsetTime, 1000);
|
|
CMTime newTime = CMTimeMake(offsetTime, 1000);
|
|
CMTime toleranceTime = CMTimeMake(1, 1000);
|
|
CMTime toleranceTime = CMTimeMake(1, 1000);
|
|
- [_videoPlayer seekToTime:newTime toleranceBefore:toleranceTime toleranceAfter:toleranceTime completionHandler:^(BOOL finished) {
|
|
|
|
-
|
|
|
|
|
|
+ [self.videoPlayer pause];
|
|
|
|
+ @weakObj(self);
|
|
|
|
+ [self.videoPlayer ss_seekToTime:newTime toleranceBefore:toleranceTime toleranceAfter:toleranceTime completionHandler:^(BOOL finished) {
|
|
|
|
+ @strongObj(self);
|
|
|
|
+ if (self.isPlaying) {
|
|
|
|
+ [self.videoPlayer play];
|
|
|
|
+ }
|
|
}];
|
|
}];
|
|
}
|
|
}
|
|
|
|
|
|
@@ -240,6 +249,7 @@
|
|
case AVPlayerStatusReadyToPlay:{
|
|
case AVPlayerStatusReadyToPlay:{
|
|
NSLog(@"准备完毕,可以播放");
|
|
NSLog(@"准备完毕,可以播放");
|
|
dispatch_main_sync_safe(^{
|
|
dispatch_main_sync_safe(^{
|
|
|
|
+ self.isReady = YES;
|
|
if (self.delegate && [self.delegate respondsToSelector:@selector(videoPlayerIsReadyPlay:)]) {
|
|
if (self.delegate && [self.delegate respondsToSelector:@selector(videoPlayerIsReadyPlay:)]) {
|
|
[self.delegate videoPlayerIsReadyPlay:self.videoPlayer];
|
|
[self.delegate videoPlayerIsReadyPlay:self.videoPlayer];
|
|
}
|
|
}
|