Merge pull request #52 from isair/feature/playable-duration
Add playableDuration property to onProgress event
This commit is contained in:
commit
330b5a93fc
22
RCTVideo.m
22
RCTVideo.m
@ -69,6 +69,7 @@ static NSString *const statusKeyPath = @"status";
|
|||||||
(([_prevProgressUpdateTime timeIntervalSinceNow] * -1000.0) >= _progressUpdateInterval)) {
|
(([_prevProgressUpdateTime timeIntervalSinceNow] * -1000.0) >= _progressUpdateInterval)) {
|
||||||
[_eventDispatcher sendInputEventWithName:RNVideoEventProgress body:@{
|
[_eventDispatcher sendInputEventWithName:RNVideoEventProgress body:@{
|
||||||
@"currentTime": [NSNumber numberWithFloat:CMTimeGetSeconds(video.currentTime)],
|
@"currentTime": [NSNumber numberWithFloat:CMTimeGetSeconds(video.currentTime)],
|
||||||
|
@"playableDuration": [self calculatePlayableDuration],
|
||||||
@"target": self.reactTag
|
@"target": self.reactTag
|
||||||
}];
|
}];
|
||||||
|
|
||||||
@ -76,6 +77,27 @@ static NSString *const statusKeyPath = @"status";
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* Calculates and returns the playable duration of the current player item using its loaded time ranges.
|
||||||
|
*
|
||||||
|
* \returns The playable duration of the current player item in seconds.
|
||||||
|
*/
|
||||||
|
- (NSNumber *)calculatePlayableDuration {
|
||||||
|
AVPlayerItem *video = _player.currentItem;
|
||||||
|
if (video.status == AVPlayerItemStatusReadyToPlay) {
|
||||||
|
__block CMTimeRange effectiveTimeRange;
|
||||||
|
[video.loadedTimeRanges enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
|
||||||
|
CMTimeRange timeRange = [obj CMTimeRangeValue];
|
||||||
|
if (CMTimeRangeContainsTime(timeRange, video.currentTime)) {
|
||||||
|
effectiveTimeRange = timeRange;
|
||||||
|
*stop = YES;
|
||||||
|
}
|
||||||
|
}];
|
||||||
|
return [NSNumber numberWithFloat:CMTimeGetSeconds(CMTimeRangeGetEnd(effectiveTimeRange))];
|
||||||
|
}
|
||||||
|
return [NSNumber numberWithFloat:CMTimeGetSeconds(kCMTimeInvalid)];
|
||||||
|
}
|
||||||
|
|
||||||
- (void)stopProgressTimer
|
- (void)stopProgressTimer
|
||||||
{
|
{
|
||||||
[_progressUpdateTimer invalidate];
|
[_progressUpdateTimer invalidate];
|
||||||
|
Loading…
Reference in New Issue
Block a user