From 7026ca7e51253673bb3ccdc4cfc6f5aada00d81f Mon Sep 17 00:00:00 2001 From: Ash Mishra Date: Thu, 18 Oct 2018 15:21:46 -0700 Subject: [PATCH 01/17] disable airplay when sideloaded captions --- ios/Video/RCTVideo.m | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/ios/Video/RCTVideo.m b/ios/Video/RCTVideo.m index 61b87578..949bee0d 100644 --- a/ios/Video/RCTVideo.m +++ b/ios/Video/RCTVideo.m @@ -397,10 +397,13 @@ static int const RCTVideoUnset = -1; - (void)playerItemPrepareText:(AVAsset *)asset assetOptions:(NSDictionary * __nullable)assetOptions withCallback:(void(^)(AVPlayerItem *))handler { - if (!_textTracks) { + if (!_textTracks || _textTracks.count==0) { handler([AVPlayerItem playerItemWithAsset:asset]); return; } + + // AVPlayer can't airplay AVMutableCompositions + _allowsExternalPlayback = NO; // sideload text tracks AVMutableComposition *mixComposition = [[AVMutableComposition alloc] init]; From 29826fc98f6715b7f7c66c6ff4f63b6d5cc7b7d0 Mon Sep 17 00:00:00 2001 From: Ash Mishra Date: Mon, 26 Nov 2018 10:16:19 -0800 Subject: [PATCH 02/17] readme update for disabled video on airplay --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 74438362..79d50610 100644 --- a/README.md +++ b/README.md @@ -603,6 +603,8 @@ uri | URL for the text track. Currently, only tracks hosted on a webserver are s On iOS, sidecar text tracks are only supported for individual files, not HLS playlists. For HLS, you should include the text tracks as part of the playlist. +NOTE: Due to iOS limitations, sidecar textTracks are not available for Airplay. If textTracks are specified for video that is airplayed, the visual content of the video is disabled (only audio will stream). + Example: ``` import { TextTrackType }, Video from 'react-native-video'; From 977877f529524f6abe5f5cf71e6ed4b047daecb9 Mon Sep 17 00:00:00 2001 From: Hampton Maxwell Date: Tue, 27 Nov 2018 18:51:03 -0800 Subject: [PATCH 03/17] Remove unused onVideoSaved event --- ios/Video/RCTVideoManager.m | 1 - 1 file changed, 1 deletion(-) diff --git a/ios/Video/RCTVideoManager.m b/ios/Video/RCTVideoManager.m index 3dd157b4..9823dcfb 100644 --- a/ios/Video/RCTVideoManager.m +++ b/ios/Video/RCTVideoManager.m @@ -59,7 +59,6 @@ RCT_EXPORT_VIEW_PROPERTY(onPlaybackStalled, RCTBubblingEventBlock); RCT_EXPORT_VIEW_PROPERTY(onPlaybackResume, RCTBubblingEventBlock); RCT_EXPORT_VIEW_PROPERTY(onPlaybackRateChange, RCTBubblingEventBlock); RCT_EXPORT_VIEW_PROPERTY(onVideoExternalPlaybackChange, RCTBubblingEventBlock); -RCT_EXPORT_VIEW_PROPERTY(onVideoSaved, RCTBubblingEventBlock); RCT_REMAP_METHOD(save, options:(NSDictionary *)options reactTag:(nonnull NSNumber *)reactTag From 413a7b87c6ed71c09b0e73f25bd55b9270141cff Mon Sep 17 00:00:00 2001 From: Hampton Maxwell Date: Tue, 27 Nov 2018 19:48:41 -0800 Subject: [PATCH 04/17] Only fire onSeek once we've completed the seek operation --- .../exoplayer/ReactExoplayerView.java | 6 ++++-- .../com/brentvatne/react/ReactVideoView.java | 18 ++++++++++++------ 2 files changed, 16 insertions(+), 8 deletions(-) diff --git a/android-exoplayer/src/main/java/com/brentvatne/exoplayer/ReactExoplayerView.java b/android-exoplayer/src/main/java/com/brentvatne/exoplayer/ReactExoplayerView.java index 7d69368e..dc49402d 100644 --- a/android-exoplayer/src/main/java/com/brentvatne/exoplayer/ReactExoplayerView.java +++ b/android-exoplayer/src/main/java/com/brentvatne/exoplayer/ReactExoplayerView.java @@ -110,6 +110,7 @@ class ReactExoplayerView extends FrameLayout implements private boolean isBuffering; private float rate = 1f; private float audioVolume = 1f; + private long seekTime = C.TIME_UNSET; private int minBufferMs = DefaultLoadControl.DEFAULT_MIN_BUFFER_MS; private int maxBufferMs = DefaultLoadControl.DEFAULT_MAX_BUFFER_MS; @@ -605,7 +606,8 @@ class ReactExoplayerView extends FrameLayout implements @Override public void onSeekProcessed() { - // Do nothing. + eventEmitter.seek(player.getCurrentPosition(), seekTime); + seekTime = C.TIME_UNSET; } @Override @@ -892,7 +894,7 @@ class ReactExoplayerView extends FrameLayout implements public void seekTo(long positionMs) { if (player != null) { - eventEmitter.seek(player.getCurrentPosition(), positionMs); + seekTime = positionMs; player.seekTo(positionMs); } } diff --git a/android/src/main/java/com/brentvatne/react/ReactVideoView.java b/android/src/main/java/com/brentvatne/react/ReactVideoView.java index 3ff17a1f..0be1a3ad 100644 --- a/android/src/main/java/com/brentvatne/react/ReactVideoView.java +++ b/android/src/main/java/com/brentvatne/react/ReactVideoView.java @@ -47,6 +47,7 @@ public class ReactVideoView extends ScalableVideoView implements MediaPlayer.OnPreparedListener, MediaPlayer.OnErrorListener, MediaPlayer.OnBufferingUpdateListener, + MediaPlayer.OnSeekCompleteListener, MediaPlayer.OnCompletionListener, MediaPlayer.OnInfoListener, LifecycleEventListener, @@ -127,6 +128,7 @@ public class ReactVideoView extends ScalableVideoView implements private float mProgressUpdateInterval = 250.0f; private float mRate = 1.0f; private float mActiveRate = 1.0f; + private long mSeekTime = 0; private boolean mPlayInBackground = false; private boolean mBackgroundPaused = false; private boolean mIsFullscreen = false; @@ -213,6 +215,7 @@ public class ReactVideoView extends ScalableVideoView implements mMediaPlayer.setOnErrorListener(this); mMediaPlayer.setOnPreparedListener(this); mMediaPlayer.setOnBufferingUpdateListener(this); + mMediaPlayer.setOnSeekCompleteListener(this); mMediaPlayer.setOnCompletionListener(this); mMediaPlayer.setOnInfoListener(this); if (Build.VERSION.SDK_INT >= 23) { @@ -606,15 +609,18 @@ public class ReactVideoView extends ScalableVideoView implements mVideoBufferedDuration = (int) Math.round((double) (mVideoDuration * percent) / 100.0); } + public void onSeekComplete(MediaPlayer mp) { + WritableMap event = Arguments.createMap(); + event.putDouble(EVENT_PROP_CURRENT_TIME, getCurrentPosition() / 1000.0); + event.putDouble(EVENT_PROP_SEEK_TIME, mSeekTime / 1000.0); + mEventEmitter.receiveEvent(getId(), Events.EVENT_SEEK.toString(), event); + mSeekTime = 0; + } + @Override public void seekTo(int msec) { - if (mMediaPlayerValid) { - WritableMap event = Arguments.createMap(); - event.putDouble(EVENT_PROP_CURRENT_TIME, getCurrentPosition() / 1000.0); - event.putDouble(EVENT_PROP_SEEK_TIME, msec / 1000.0); - mEventEmitter.receiveEvent(getId(), Events.EVENT_SEEK.toString(), event); - + mSeekTime = msec; super.seekTo(msec); if (isCompleted && mVideoDuration != 0 && msec < mVideoDuration) { isCompleted = false; From fcee7b662b928042f20a76294dcc6d5d8198960e Mon Sep 17 00:00:00 2001 From: Hampton Maxwell Date: Tue, 27 Nov 2018 19:48:57 -0800 Subject: [PATCH 05/17] Document onSeek --- README.md | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 96c17151..a7c8430e 100644 --- a/README.md +++ b/README.md @@ -295,6 +295,7 @@ var styles = StyleSheet.create({ * [onLoad](#onload) * [onLoadStart](#onloadstart) * [onProgress](#onprogress) +* [onSeek](#onseek) * [onTimedMetadata](#ontimedmetadata) ### Methods @@ -848,6 +849,29 @@ Example: Platforms: all +#### onSeek +Callback function that is called when a seek completes. + +Payload: + +Property | Type | Description +--- | --- | --- +currentTime | number | The current time after the seek +seekTime | number | The requested time + +Example: +``` +{ + currentTime: 100.5 + seekTime: 100 +} +``` + +Both the currentTime & seekTime are reported because the video player may not seek to the exact requested position in order to improve seek performance. + + +Platforms: Android ExoPlayer, Android MediaPlayer, iOS, Windows UWP + #### onTimedMetadata Callback function that is called when timed metadata becomes available @@ -941,7 +965,7 @@ Platforms: iOS Seek to the specified position represented by seconds. seconds is a float value. -`seek()` can only be called after the `onLoad` event has fired. +`seek()` can only be called after the `onLoad` event has fired. Once completed, the [onSeek](#onseek) event will be called. Example: ``` From ecf89f6d7970a82544c51faa2cc212cca65b7a9c Mon Sep 17 00:00:00 2001 From: Hampton Maxwell Date: Tue, 27 Nov 2018 19:55:10 -0800 Subject: [PATCH 06/17] Fix Android onSeek --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index de721463..4a67ea33 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ ## Changelog +### Version 4.0.2 +* Generate onSeek on Android ExoPlayer & MediaPlayer after seek completes [#1351](https://github.com/react-native-community/react-native-video/pull/1351) +* Remove unneeded onVideoSaved event [#1350](https://github.com/react-native-community/react-native-video/pull/1350) + ### Version 4.0.1 * Add missing files to package.json [#1342](https://github.com/react-native-community/react-native-video/pull/1342) From 96c42844fea4e7a1b364b6cfb94d16248246a3a8 Mon Sep 17 00:00:00 2001 From: vadim Date: Wed, 28 Nov 2018 14:56:58 +0200 Subject: [PATCH 07/17] ExoPlayer - Add possibility to hide shutterView --- README.md | 8 ++++++++ Video.js | 1 + .../java/com/brentvatne/exoplayer/ExoPlayerView.java | 10 ++++++++++ .../com/brentvatne/exoplayer/ReactExoplayerView.java | 5 +++++ .../exoplayer/ReactExoplayerViewManager.java | 6 ++++++ 5 files changed, 30 insertions(+) diff --git a/README.md b/README.md index a7c8430e..103cd470 100644 --- a/README.md +++ b/README.md @@ -693,6 +693,14 @@ useTextureView can only be set at same time you're setting the source. Platforms: Android ExoPlayer +#### hideShutterView +Controls ExoPlayer shutterView(black screen while loading) visibility + +* **false (default)** - Show shutterView +* **true** - Hide shutterView + +Platforms: Android ExoPlayer + #### volume Adjust the volume. * **1.0 (default)** - Play at full volume diff --git a/Video.js b/Video.js index 77b02f0a..60dd3f54 100644 --- a/Video.js +++ b/Video.js @@ -383,6 +383,7 @@ Video.propTypes = { fullscreenOrientation: PropTypes.oneOf(['all','landscape','portrait']), progressUpdateInterval: PropTypes.number, useTextureView: PropTypes.bool, + hideShutterView: PropTypes.bool, onLoadStart: PropTypes.func, onLoad: PropTypes.func, onBuffer: PropTypes.func, diff --git a/android-exoplayer/src/main/java/com/brentvatne/exoplayer/ExoPlayerView.java b/android-exoplayer/src/main/java/com/brentvatne/exoplayer/ExoPlayerView.java index 85876709..35d56512 100644 --- a/android-exoplayer/src/main/java/com/brentvatne/exoplayer/ExoPlayerView.java +++ b/android-exoplayer/src/main/java/com/brentvatne/exoplayer/ExoPlayerView.java @@ -39,6 +39,7 @@ public final class ExoPlayerView extends FrameLayout { private ViewGroup.LayoutParams layoutParams; private boolean useTextureView = false; + private boolean hideShutterView = false; public ExoPlayerView(Context context) { this(context, null); @@ -106,6 +107,10 @@ public final class ExoPlayerView extends FrameLayout { } } + private void updateShutterViewVisibility() { + shutterView.setVisibility(this.hideShutterView ? View.INVISIBLE : View.VISIBLE); + } + /** * Set the {@link SimpleExoPlayer} to use. The {@link SimpleExoPlayer#setTextOutput} and * {@link SimpleExoPlayer#setVideoListener} method of the player will be called and previous @@ -161,6 +166,11 @@ public final class ExoPlayerView extends FrameLayout { updateSurfaceView(); } + public void setHideShutterView(boolean hideShutterView) { + this.hideShutterView = hideShutterView; + updateShutterViewVisibility(); + } + private final Runnable measureAndLayout = new Runnable() { @Override public void run() { diff --git a/android-exoplayer/src/main/java/com/brentvatne/exoplayer/ReactExoplayerView.java b/android-exoplayer/src/main/java/com/brentvatne/exoplayer/ReactExoplayerView.java index dc49402d..033329b7 100644 --- a/android-exoplayer/src/main/java/com/brentvatne/exoplayer/ReactExoplayerView.java +++ b/android-exoplayer/src/main/java/com/brentvatne/exoplayer/ReactExoplayerView.java @@ -131,6 +131,7 @@ class ReactExoplayerView extends FrameLayout implements private float mProgressUpdateInterval = 250.0f; private boolean playInBackground = false; private boolean useTextureView = false; + private boolean hideShutterView = false; private Map requestHeaders; // \ End props @@ -954,6 +955,10 @@ class ReactExoplayerView extends FrameLayout implements exoPlayerView.setUseTextureView(useTextureView); } + public void setHideShutterView(boolean hideShutterView) { + exoPlayerView.setHideShutterView(hideShutterView); + } + public void setBufferConfig(int newMinBufferMs, int newMaxBufferMs, int newBufferForPlaybackMs, int newBufferForPlaybackAfterRebufferMs) { minBufferMs = newMinBufferMs; maxBufferMs = newMaxBufferMs; diff --git a/android-exoplayer/src/main/java/com/brentvatne/exoplayer/ReactExoplayerViewManager.java b/android-exoplayer/src/main/java/com/brentvatne/exoplayer/ReactExoplayerViewManager.java index 4d1ec286..fb72f434 100644 --- a/android-exoplayer/src/main/java/com/brentvatne/exoplayer/ReactExoplayerViewManager.java +++ b/android-exoplayer/src/main/java/com/brentvatne/exoplayer/ReactExoplayerViewManager.java @@ -51,6 +51,7 @@ public class ReactExoplayerViewManager extends ViewGroupManager Date: Wed, 28 Nov 2018 15:00:27 +0200 Subject: [PATCH 08/17] Add hideShutterView to configurable props --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 103cd470..65a3418c 100644 --- a/README.md +++ b/README.md @@ -282,6 +282,7 @@ var styles = StyleSheet.create({ * [stereoPan](#stereopan) * [textTracks](#texttracks) * [useTextureView](#usetextureview) +* [hideShutterView](#hideshutterview) * [volume](#volume) ### Event props From 2caf713857898f39bc964690e4c76cd92099ae6e Mon Sep 17 00:00:00 2001 From: vadim Date: Fri, 30 Nov 2018 18:42:22 +0200 Subject: [PATCH 09/17] Update changelog and documentation --- CHANGELOG.md | 1 + README.md | 18 +++++++++--------- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index de721463..18f920be 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,7 @@ ### Version 4.0.1 * Add missing files to package.json [#1342](https://github.com/react-native-community/react-native-video/pull/1342) +* Add possibility to remove black screen while video is loading in Exoplayer [#1355](https://github.com/react-native-community/react-native-video/pull/1355) ### Version 4.0.0 * Partial support for timed metadata on Android MediaPlayer [#707](https://github.com/react-native-community/react-native-video/pull/707) diff --git a/README.md b/README.md index 65a3418c..4986cd91 100644 --- a/README.md +++ b/README.md @@ -264,6 +264,7 @@ var styles = StyleSheet.create({ * [fullscreenAutorotate](#fullscreenautorotate) * [fullscreenOrientation](#fullscreenorientation) * [headers](#headers) +* [hideShutterView](#hideshutterview) * [id](#id) * [ignoreSilentSwitch](#ignoresilentswitch) * [muted](#muted) @@ -282,7 +283,6 @@ var styles = StyleSheet.create({ * [stereoPan](#stereopan) * [textTracks](#texttracks) * [useTextureView](#usetextureview) -* [hideShutterView](#hideshutterview) * [volume](#volume) ### Event props @@ -418,6 +418,14 @@ headers={{ Platforms: Android ExoPlayer +#### hideShutterView +Controls ExoPlayer shutterView(black screen while loading) visibility + +* **false (default)** - Show shutterView +* **true** - Hide shutterView + +Platforms: Android ExoPlayer + #### id Set the DOM id element so you can use document.getElementById on web platforms. Accepts string values. @@ -694,14 +702,6 @@ useTextureView can only be set at same time you're setting the source. Platforms: Android ExoPlayer -#### hideShutterView -Controls ExoPlayer shutterView(black screen while loading) visibility - -* **false (default)** - Show shutterView -* **true** - Hide shutterView - -Platforms: Android ExoPlayer - #### volume Adjust the volume. * **1.0 (default)** - Play at full volume From 97ac68745b455fbc381bce09bb9e256e0e0c69e5 Mon Sep 17 00:00:00 2001 From: Nicolas Gonzalez Date: Sat, 1 Dec 2018 21:58:12 -0600 Subject: [PATCH 10/17] only apply filter if filter is set --- ios/Video/RCTVideo.m | 24 ++++++++++-------------- 1 file changed, 10 insertions(+), 14 deletions(-) diff --git a/ios/Video/RCTVideo.m b/ios/Video/RCTVideo.m index a56b08a2..741ac671 100644 --- a/ios/Video/RCTVideo.m +++ b/ios/Video/RCTVideo.m @@ -1274,27 +1274,23 @@ static int const RCTVideoUnset = -1; CIFilter *filter = [CIFilter filterWithName:filterName]; - _playerItem.videoComposition = [AVVideoComposition - videoCompositionWithAsset:asset - applyingCIFiltersWithHandler:^(AVAsynchronousCIImageFilteringRequest *_Nonnull request) { + if (filter != nil) { - if (filter == nil) { + _playerItem.videoComposition = [AVVideoComposition + videoCompositionWithAsset:asset + applyingCIFiltersWithHandler:^(AVAsynchronousCIImageFilteringRequest *_Nonnull request) { - [request finishWithImage:request.sourceImage context:nil]; + CIImage *image = request.sourceImage.imageByClampingToExtent; - } else { + [filter setValue:image forKey:kCIInputImageKey]; - CIImage *image = request.sourceImage.imageByClampingToExtent; + CIImage *output = [filter.outputImage imageByCroppingToRect:request.sourceImage.extent]; - [filter setValue:image forKey:kCIInputImageKey]; + [request finishWithImage:output context:nil]; - CIImage *output = [filter.outputImage imageByCroppingToRect:request.sourceImage.extent]; - [request finishWithImage:output context:nil]; - - } - - }]; + }]; + } } From 06b5d50f5ba6aa977268d567710a3ecc7bce66f3 Mon Sep 17 00:00:00 2001 From: Hampton Maxwell Date: Wed, 5 Dec 2018 17:36:35 -0800 Subject: [PATCH 11/17] Slightly clean up AirPlay / textTracks message --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 79d50610..9d19db44 100644 --- a/README.md +++ b/README.md @@ -603,7 +603,7 @@ uri | URL for the text track. Currently, only tracks hosted on a webserver are s On iOS, sidecar text tracks are only supported for individual files, not HLS playlists. For HLS, you should include the text tracks as part of the playlist. -NOTE: Due to iOS limitations, sidecar textTracks are not available for Airplay. If textTracks are specified for video that is airplayed, the visual content of the video is disabled (only audio will stream). +Note: Due to iOS limitations, sidecar text tracks are not compatible with Airplay. If textTracks are specified, AirPlay support will be automatically disabled. Example: ``` From a34f6e7b8a32648e878cab1dce1ef6fd4c186a1d Mon Sep 17 00:00:00 2001 From: Hampton Maxwell Date: Wed, 5 Dec 2018 17:39:20 -0800 Subject: [PATCH 12/17] Add disable AirPlay if side car text tracks enabled --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4a67ea33..90281fd5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ ### Version 4.0.2 * Generate onSeek on Android ExoPlayer & MediaPlayer after seek completes [#1351](https://github.com/react-native-community/react-native-video/pull/1351) * Remove unneeded onVideoSaved event [#1350](https://github.com/react-native-community/react-native-video/pull/1350) +* Disable AirPlay if sidecar text tracks are enabled [#1304](https://github.com/react-native-community/react-native-video/pull/1304) ### Version 4.0.1 * Add missing files to package.json [#1342](https://github.com/react-native-community/react-native-video/pull/1342) From 308aa4aea9650dc9473fc55ce96acdd2c6af7675 Mon Sep 17 00:00:00 2001 From: Hampton Maxwell Date: Wed, 5 Dec 2018 20:05:48 -0800 Subject: [PATCH 13/17] Tweak comment for hideShutterView --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 4986cd91..4d5df1a3 100644 --- a/README.md +++ b/README.md @@ -419,10 +419,10 @@ headers={{ Platforms: Android ExoPlayer #### hideShutterView -Controls ExoPlayer shutterView(black screen while loading) visibility +Controls whether the ExoPlayer shutter view (black screen while loading) is enabled. -* **false (default)** - Show shutterView -* **true** - Hide shutterView +* **false (default)** - Show shutter view +* **true** - Hide shutter view Platforms: Android ExoPlayer From af07f8553ef2b9b366e264797abccbc0312111cf Mon Sep 17 00:00:00 2001 From: Hampton Maxwell Date: Wed, 5 Dec 2018 20:10:50 -0800 Subject: [PATCH 14/17] Move hideShutterView to 4.0.2 --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5bdbcd3c..35bc2272 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,10 +4,10 @@ * Generate onSeek on Android ExoPlayer & MediaPlayer after seek completes [#1351](https://github.com/react-native-community/react-native-video/pull/1351) * Remove unneeded onVideoSaved event [#1350](https://github.com/react-native-community/react-native-video/pull/1350) * Disable AirPlay if sidecar text tracks are enabled [#1304](https://github.com/react-native-community/react-native-video/pull/1304) +* Add possibility to remove black screen while video is loading in Exoplayer [#1355](https://github.com/react-native-community/react-native-video/pull/1355) ### Version 4.0.1 * Add missing files to package.json [#1342](https://github.com/react-native-community/react-native-video/pull/1342) -* Add possibility to remove black screen while video is loading in Exoplayer [#1355](https://github.com/react-native-community/react-native-video/pull/1355) ### Version 4.0.0 * Partial support for timed metadata on Android MediaPlayer [#707](https://github.com/react-native-community/react-native-video/pull/707) From b2aa8c4e383047475fe6ad794fdf40f058bdec9b Mon Sep 17 00:00:00 2001 From: Hampton Maxwell Date: Wed, 5 Dec 2018 20:12:55 -0800 Subject: [PATCH 15/17] Version 4.1.0 --- CHANGELOG.md | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 35bc2272..6bacf4b5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,6 @@ ## Changelog -### Version 4.0.2 +### Version 4.1.0 * Generate onSeek on Android ExoPlayer & MediaPlayer after seek completes [#1351](https://github.com/react-native-community/react-native-video/pull/1351) * Remove unneeded onVideoSaved event [#1350](https://github.com/react-native-community/react-native-video/pull/1350) * Disable AirPlay if sidecar text tracks are enabled [#1304](https://github.com/react-native-community/react-native-video/pull/1304) diff --git a/package.json b/package.json index 3392e479..c73f6124 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "react-native-video", - "version": "4.0.1", + "version": "4.1.0", "description": "A