From f73b7a04843fb5b17fb4fbedbe593c225594ab3b Mon Sep 17 00:00:00 2001 From: Alexander Nazarov Date: Thu, 7 Sep 2017 04:12:34 +0300 Subject: [PATCH] Fixed seekableDuration for time ranges with non-numeric duration (#709) (#728) --- ios/RCTVideo.m | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/ios/RCTVideo.m b/ios/RCTVideo.m index 16174add..9962c2bb 100644 --- a/ios/RCTVideo.m +++ b/ios/RCTVideo.m @@ -195,7 +195,7 @@ static NSString *const timedMetadata = @"timedMetadata"; @"atValue": [NSNumber numberWithLongLong:currentTime.value], @"atTimescale": [NSNumber numberWithInt:currentTime.timescale], @"target": self.reactTag, - @"seekableDuration": [NSNumber numberWithFloat:CMTimeGetSeconds([self playerItemSeekableTimeRange].duration)], + @"seekableDuration": [self calculateSeekableDuration], }); } } @@ -225,6 +225,16 @@ static NSString *const timedMetadata = @"timedMetadata"; return [NSNumber numberWithInteger:0]; } +- (NSNumber *)calculateSeekableDuration +{ + CMTimeRange timeRange = [self playerItemSeekableTimeRange]; + if (CMTIME_IS_NUMERIC(timeRange.duration)) + { + return [NSNumber numberWithFloat:CMTimeGetSeconds(timeRange.duration)]; + } + return [NSNumber numberWithInteger:0]; +} + - (void)addPlayerItemObservers { [_playerItem addObserver:self forKeyPath:statusKeyPath options:0 context:nil];