Loading Video.js +15 −3 Changes for Video.js: 15 added lines, 3 removed lines. Original line number Diff line number Diff line import React, {Component} from 'react'; import PropTypes from 'prop-types'; import {StyleSheet, requireNativeComponent, NativeModules, View, ViewPropTypes, Image} from 'react-native'; import {StyleSheet, requireNativeComponent, NativeModules, View, ViewPropTypes, Image, Platform} from 'react-native'; import resolveAssetSource from 'react-native/Libraries/Image/resolveAssetSource'; import TextTrackType from './TextTrackType'; import VideoResizeMode from './VideoResizeMode.js'; Loading @@ -27,8 +27,17 @@ export default class Video extends Component { this._root.setNativeProps(nativeProps); } seek = (time) => { seek = (time, tolerance = 100) => { if (Platform.OS === 'ios') { this.setNativeProps({ seek: { time, tolerance } }); } else { this.setNativeProps({ seek: time }); } }; presentFullscreenPlayer = () => { Loading Loading @@ -250,7 +259,10 @@ export default class Video extends Component { Video.propTypes = { /* Native only */ src: PropTypes.object, seek: PropTypes.number, seek: PropTypes.oneOfType([ PropTypes.number, PropTypes.object ]), fullscreen: PropTypes.bool, onVideoLoadStart: PropTypes.func, onVideoLoad: PropTypes.func, Loading ios/RCTVideo.m +14 −7 Changes for ios/RCTVideo.m: 14 added lines, 7 removed lines. Original line number Diff line number Diff line Loading @@ -569,21 +569,28 @@ static NSString *const timedMetadata = @"timedMetadata"; - (void)setCurrentTime:(float)currentTime { [self setSeek: currentTime]; NSDictionary *info = @{ @"time": [NSNumber numberWithFloat:currentTime], @"tolerance": [NSNumber numberWithInt:100] }; [self setSeek:info]; } - (void)setSeek:(float)seekTime - (void)setSeek:(NSDictionary *)info { int timeScale = 10000; NSNumber *seekTime = info[@"time"]; NSNumber *seekTolerance = info[@"tolerance"]; int timeScale = 1000; AVPlayerItem *item = _player.currentItem; if (item && item.status == AVPlayerItemStatusReadyToPlay) { // TODO check loadedTimeRanges CMTime cmSeekTime = CMTimeMakeWithSeconds(seekTime, timeScale); CMTime cmSeekTime = CMTimeMakeWithSeconds([seekTime floatValue], timeScale); CMTime current = item.currentTime; // TODO figure out a good tolerance level CMTime tolerance = CMTimeMake(1000, timeScale); CMTime tolerance = CMTimeMake([seekTolerance floatValue], timeScale); BOOL wasPaused = _paused; if (CMTimeCompare(current, cmSeekTime) != 0) { Loading @@ -597,7 +604,7 @@ static NSString *const timedMetadata = @"timedMetadata"; } if(self.onVideoSeek) { self.onVideoSeek(@{@"currentTime": [NSNumber numberWithFloat:CMTimeGetSeconds(item.currentTime)], @"seekTime": [NSNumber numberWithFloat:seekTime], @"seekTime": seekTime, @"target": self.reactTag}); } }]; Loading @@ -608,7 +615,7 @@ static NSString *const timedMetadata = @"timedMetadata"; } else { // TODO: See if this makes sense and if so, actually implement it _pendingSeek = true; _pendingSeekTime = seekTime; _pendingSeekTime = [seekTime floatValue]; } } Loading ios/RCTVideoManager.m +1 −1 Changes for ios/RCTVideoManager.m: 1 added line, 1 removed line. Original line number Diff line number Diff line Loading @@ -32,7 +32,7 @@ RCT_EXPORT_VIEW_PROPERTY(playInBackground, BOOL); RCT_EXPORT_VIEW_PROPERTY(playWhenInactive, BOOL); RCT_EXPORT_VIEW_PROPERTY(ignoreSilentSwitch, NSString); RCT_EXPORT_VIEW_PROPERTY(rate, float); RCT_EXPORT_VIEW_PROPERTY(seek, float); RCT_EXPORT_VIEW_PROPERTY(seek, NSDictionary); RCT_EXPORT_VIEW_PROPERTY(currentTime, float); RCT_EXPORT_VIEW_PROPERTY(fullscreen, BOOL); RCT_EXPORT_VIEW_PROPERTY(progressUpdateInterval, float); Loading Loading
Video.js +15 −3 Changes for Video.js: 15 added lines, 3 removed lines. Original line number Diff line number Diff line import React, {Component} from 'react'; import PropTypes from 'prop-types'; import {StyleSheet, requireNativeComponent, NativeModules, View, ViewPropTypes, Image} from 'react-native'; import {StyleSheet, requireNativeComponent, NativeModules, View, ViewPropTypes, Image, Platform} from 'react-native'; import resolveAssetSource from 'react-native/Libraries/Image/resolveAssetSource'; import TextTrackType from './TextTrackType'; import VideoResizeMode from './VideoResizeMode.js'; Loading @@ -27,8 +27,17 @@ export default class Video extends Component { this._root.setNativeProps(nativeProps); } seek = (time) => { seek = (time, tolerance = 100) => { if (Platform.OS === 'ios') { this.setNativeProps({ seek: { time, tolerance } }); } else { this.setNativeProps({ seek: time }); } }; presentFullscreenPlayer = () => { Loading Loading @@ -250,7 +259,10 @@ export default class Video extends Component { Video.propTypes = { /* Native only */ src: PropTypes.object, seek: PropTypes.number, seek: PropTypes.oneOfType([ PropTypes.number, PropTypes.object ]), fullscreen: PropTypes.bool, onVideoLoadStart: PropTypes.func, onVideoLoad: PropTypes.func, Loading
ios/RCTVideo.m +14 −7 Changes for ios/RCTVideo.m: 14 added lines, 7 removed lines. Original line number Diff line number Diff line Loading @@ -569,21 +569,28 @@ static NSString *const timedMetadata = @"timedMetadata"; - (void)setCurrentTime:(float)currentTime { [self setSeek: currentTime]; NSDictionary *info = @{ @"time": [NSNumber numberWithFloat:currentTime], @"tolerance": [NSNumber numberWithInt:100] }; [self setSeek:info]; } - (void)setSeek:(float)seekTime - (void)setSeek:(NSDictionary *)info { int timeScale = 10000; NSNumber *seekTime = info[@"time"]; NSNumber *seekTolerance = info[@"tolerance"]; int timeScale = 1000; AVPlayerItem *item = _player.currentItem; if (item && item.status == AVPlayerItemStatusReadyToPlay) { // TODO check loadedTimeRanges CMTime cmSeekTime = CMTimeMakeWithSeconds(seekTime, timeScale); CMTime cmSeekTime = CMTimeMakeWithSeconds([seekTime floatValue], timeScale); CMTime current = item.currentTime; // TODO figure out a good tolerance level CMTime tolerance = CMTimeMake(1000, timeScale); CMTime tolerance = CMTimeMake([seekTolerance floatValue], timeScale); BOOL wasPaused = _paused; if (CMTimeCompare(current, cmSeekTime) != 0) { Loading @@ -597,7 +604,7 @@ static NSString *const timedMetadata = @"timedMetadata"; } if(self.onVideoSeek) { self.onVideoSeek(@{@"currentTime": [NSNumber numberWithFloat:CMTimeGetSeconds(item.currentTime)], @"seekTime": [NSNumber numberWithFloat:seekTime], @"seekTime": seekTime, @"target": self.reactTag}); } }]; Loading @@ -608,7 +615,7 @@ static NSString *const timedMetadata = @"timedMetadata"; } else { // TODO: See if this makes sense and if so, actually implement it _pendingSeek = true; _pendingSeekTime = seekTime; _pendingSeekTime = [seekTime floatValue]; } } Loading
ios/RCTVideoManager.m +1 −1 Changes for ios/RCTVideoManager.m: 1 added line, 1 removed line. Original line number Diff line number Diff line Loading @@ -32,7 +32,7 @@ RCT_EXPORT_VIEW_PROPERTY(playInBackground, BOOL); RCT_EXPORT_VIEW_PROPERTY(playWhenInactive, BOOL); RCT_EXPORT_VIEW_PROPERTY(ignoreSilentSwitch, NSString); RCT_EXPORT_VIEW_PROPERTY(rate, float); RCT_EXPORT_VIEW_PROPERTY(seek, float); RCT_EXPORT_VIEW_PROPERTY(seek, NSDictionary); RCT_EXPORT_VIEW_PROPERTY(currentTime, float); RCT_EXPORT_VIEW_PROPERTY(fullscreen, BOOL); RCT_EXPORT_VIEW_PROPERTY(progressUpdateInterval, float); Loading