diff --git a/android/src/main/java/com/greatdroid/reactnative/media/player/ReactMediaPlayerViewManager.java b/android/src/main/java/com/greatdroid/reactnative/media/player/ReactMediaPlayerViewManager.java index cee5746..c669df5 100644 --- a/android/src/main/java/com/greatdroid/reactnative/media/player/ReactMediaPlayerViewManager.java +++ b/android/src/main/java/com/greatdroid/reactnative/media/player/ReactMediaPlayerViewManager.java @@ -48,6 +48,10 @@ protected ReactMediaPlayerView createViewInstance(ThemedReactContext reactContex @ReactProp(name = "src") public void setSrc(ReactMediaPlayerView view, @Nullable String uri) { Log.d(TAG, "setSrc...src=" + uri); + String resourcePrefix = "resource:"; + if (uri.startsWith(resourcePrefix)) { + uri = "asset:///" + uri.substring(resourcePrefix.length()); + } view.setUri(uri); } diff --git a/ios/react-native-media-kit/RCTMediaPlayerView.m b/ios/react-native-media-kit/RCTMediaPlayerView.m index ba1725b..2c88312 100644 --- a/ios/react-native-media-kit/RCTMediaPlayerView.m +++ b/ios/react-native-media-kit/RCTMediaPlayerView.m @@ -49,7 +49,17 @@ - (void)willMoveToSuperview:(UIView *)newSuperview { - (void)initPlayerIfNeeded { if(!player) { - player = [AVPlayer playerWithURL:[NSURL URLWithString:self.src]]; + NSURL *url; + NSString *resourcePrefix = @"resource:"; + if ([self.src hasPrefix:resourcePrefix]) { + NSString *resource = [self.src substringFromIndex:[resourcePrefix length]]; + NSBundle *mainBundle = [NSBundle mainBundle]; + NSString *file = [mainBundle pathForResource:resource ofType:nil]; + url = [NSURL fileURLWithPath:file]; + } else { + url = [NSURL URLWithString:self.src]; + } + player = [AVPlayer playerWithURL:url]; [self setPlayer:player]; [self addProgressObserver]; [self addObservers]; diff --git a/library/MediaPlayerView.js b/library/MediaPlayerView.js index 4da4964..c0e6191 100644 --- a/library/MediaPlayerView.js +++ b/library/MediaPlayerView.js @@ -37,7 +37,7 @@ export default class MediaPlayerView extends React.Component { static propTypes = { ...RCTMediaPlayerView.propTypes, controls: PropTypes.bool, - poster: PropTypes.string + poster: PropTypes.any } static defaultProps = { @@ -70,6 +70,10 @@ export default class MediaPlayerView extends React.Component { render() { let posterView; if(this.props.poster && this.state.width && this.state.height && this.state.showPoster) { + let posterSource = this.props.poster; + if (typeof(posterSource) === 'string') { + posterSource = {uri: posterSource}; + } posterView = ( + source={posterSource}/> ); }