Commit Graph

178 Commits

Author SHA1 Message Date
Nick Fujita
e27baeb065
VEX-5938: Update resource loader to handle encrypted local files (#12)
Adds offline decryption key and uses it to decrypt content during offline playback

Jira: VEX-5938
https://jira.tenkasu.net/browse/VEX-5938

- Update to accept scheme for key required to play offline playback
- Uses provided scheme to intercept call from player and return the key
- Fixes player item observer removal pattern

### Reviews
- Major reviewer (domain expert): @armadilio3
2021-10-28 10:34:05 +09:00
sdkcy
0f94a3d956 Custom skin support added for ios. onReceiveAdEvent prop added to catch ad events on ios. 2021-07-26 16:11:37 +03:00
Armands Malejev
93604b2c25
VEX-3245: Buffer Progress UI While Paused (#7)
Add support for onBufferProgress prop on Android to get buffer data even when the player is paused.
2021-07-07 18:59:55 +03:00
Adrian Mui
61e6535b2f
Feature/toggle buffering (#3)
This PR adds the property disableBuffering: boolean for android. The PR was initally created as a personal fork and referenced in crunchyroll/vilos#1227

also updated RNVLoadControl constructor and method to reflect new ExoPlayer.LoadControl api

related ticket: https://jira.tenkasu.net/browse/VEX-3776
2021-03-18 12:58:04 +02:00
Nick Fujita
88b636f158
iOS DRM Fixes for License Fetching (#2208) 2021-01-13 19:18:01 +09:00
Daniel Mariño
81b42e7ca7
Add iOS and Android basic DRM support (#1445)
This PR adds support for DRM streams on iOS (Fairplay) and Android (Playready, Widevine, Clearkey)

I am neither Android nor iOS developer, so feel free to provide feedback to improve this PR.

**Test stream for ANDROID:**
```
testStream = {
        uri: 'http://profficialsite.origin.mediaservices.windows.net/c51358ea-9a5e-4322-8951-897d640fdfd7/tearsofsteel_4k.ism/manifest(format=mpd-time-csf)',
        type: 'mpd',
        drm: {
            type: DRMType.PLAYREADY,
            licenseServer: 'http://test.playready.microsoft.com/service/rightsmanager.asmx?cfg=(persist:false,sl:150)'
        }
    };
```

or 
```
{
    uri: 'https://media.axprod.net/TestVectors/v7-MultiDRM-SingleKey/Manifest_1080p.mpd',
    drm: {
        type: 'widevine', //or DRMType.WIDEVINE
        licenseServer: 'https://drm-widevine-licensing.axtest.net/AcquireLicense',
        headers: {
            'X-AxDRM-Message': 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ2ZXJzaW9uIjoxLCJjb21fa2V5X2lkIjoiYjMzNjRlYjUtNTFmNi00YWUzLThjOTgtMzNjZWQ1ZTMxYzc4IiwibWVzc2FnZSI6eyJ0eXBlIjoiZW50aXRsZW1lbnRfbWVzc2FnZSIsImZpcnN0X3BsYXlfZXhwaXJhdGlvbiI6NjAsInBsYXlyZWFkeSI6eyJyZWFsX3RpbWVfZXhwaXJhdGlvbiI6dHJ1ZX0sImtleXMiOlt7ImlkIjoiOWViNDA1MGQtZTQ0Yi00ODAyLTkzMmUtMjdkNzUwODNlMjY2IiwiZW5jcnlwdGVkX2tleSI6ImxLM09qSExZVzI0Y3Iya3RSNzRmbnc9PSJ9XX19.FAbIiPxX8BHi9RwfzD7Yn-wugU19ghrkBFKsaCPrZmU'
        },
    }
}
```

**Test stream for iOS:**
Sorry but I can not provide free streams to test. If anyone can provide test streams, or found some we can use, please let me know to also test them.

It has been tested with a private provider and they work, at least with the `getLicense` override method. (An example implementation is provided in the README)
2020-08-12 18:56:21 -07:00
Jens Andersson
f395bd1d3d
Removed JS fullscreening for Android (#2013) 2020-06-11 16:44:13 +02:00
Param Aggarwal
0b914ef2b9
Expose currentPlaybackTime when live stream video (#1944)
* added trackId to exoplayer onLoad callback

* added trackInfo to bandwidth callback

* syntax fix

* syntax fix

* version update

* sending complete logcat for media playback exception ExoPlaybackException

* version bump

* package publish changes

* Live playback fix

* Version bump

* import fix

* version bump

* configurable preferredForwardBufferDuration

* configurable preferredForwardBufferDuration

* version update

* Exposing time

* exo player window current tsp

* return type

* Current window timestamp in epoch

* iOS changes

* version update

* Updated package.json

* updated version

* CurrentTime bug fix

* Updated package.json

* Updated currentPlaybackTime

* Updated currentPlayback logic

* Updated package.json

* Bug fix

* Added semicolon

* updated package.json

* Updated ReactVideoView

* updated verison

* Revert package.json changes

* Update ReactVideoView.java

* Use standard log

* Document preferredForwardBufferDuration (iOS)

* Document currentPlaybackTime

* Document trackId

* Update CHANGELOG.md

* Update CHANGELOG.md

* Update README.md

* Update CHANGELOG.md

Co-authored-by: anubansal <anu.bansal@curefit.com>
Co-authored-by: Sivakumar J <sivakumar@curefit.com>
Co-authored-by: parikshit <parikshit@curefit.com>
Co-authored-by: anubansal92 <40559524+anubansal92@users.noreply.github.com>
Co-authored-by: Rishu Agrawal <rishu.agrawal@v.curefit.com>
Co-authored-by: rishu-curefit <54575330+rishu-curefit@users.noreply.github.com>
2020-05-15 09:25:19 +02:00
Benoit Dion
4f07aab8b1
Bump javascript dependencies (#1914)
Also update linting rules to match other community repositories.
2020-02-22 13:56:31 -05:00
IbrahimSulai
9200dce1ae
Add full screen support to Android Exoplayer (#1730) 2020-01-28 17:21:21 -05:00
Learnyst
0df667692b Audio Poster issue fix (#1779) 2019-11-26 14:40:03 -05:00
Jovan Stanimirovic
e3782c4ec6 added support for automaticallyWaitsToMinimizeStalling property on iOS 2019-08-22 10:10:39 +02:00
Jens Andersson
6ea65833fe Make sure to hide poster for Windows, even though onReadyForDisplay is not implemented 2019-06-20 09:24:26 +01:00
Jens Andersson
b193baa802 Hide poster at the right time ie in onReadyForDisplay 2019-06-19 14:19:06 +01:00
Jens Andersson
cc7db91490 Improved handling of poster, fading it out on load 2019-06-19 12:00:57 +01:00
Jens Andersson
6d3936de0b Fixes bug where poster and video was displayed simultaneously 2019-06-19 10:39:35 +01:00
Laurin Quast
dc75d236c5
fix: access on undefined variable 2019-02-19 07:38:09 +01:00
Hampton Maxwell
d5fe47f238
Merge pull request #1325 from Khan/pip
Implement picture in picture for iOS
2019-02-18 22:13:02 -08:00
Hampton Maxwell
02851bb21f Display a warning when source is empty instead of throwing an error 2019-02-18 21:36:17 -08:00
Hampton Maxwell
98eb7a3137
Merge pull request #1478 from laurent22/master
Throw an error instead of crashing app when video source is empty
2019-02-18 21:27:40 -08:00
Nick
b448b30de6 fix: remove runtime warning by replacing UIManager.RCTVideo with UIManager.getViewManagerConfig('RCTVideo') (and ensuring backwards compat) (#1487)
* replaced UIManager.RCTVideo >  UIManager.getViewManagerConfig('RCTVideo')

* added requested changes

* updated changelog.md

* docs: adjust wording
2019-02-18 12:17:20 +01:00
Laurent Cozic
891add630f
Throw an error instead of crashing app when video source is empty
If an undefined source is accidentally loaded in react-native-video a fatal error SIGABRT will happen and crash the application. This is very difficult to debug since there's apparently no relation between this crash and react-native-video. So this change checks if the URI is empty and, if it is, it throws an error, allowing the user to find out early about the issue.

https://cloud.githubusercontent.com/assets/5795227/20283860/08223ba6-aabb-11e6-9fdc-d12d32b3aa9a.png
2019-02-11 15:24:28 +00:00
Hampton Maxwell
4424774ca3
Merge pull request #1448 from sridhard/master
Feature Implementation: Recovery from transient internet failures
2019-02-10 20:07:29 -08:00
Hampton Maxwell
77411f2d0f
Rename failureRetryCount to minLoadRetryCount 2019-02-10 19:21:02 -08:00
sridhar
172954de5a Feature implementation: Failure Retry Count
Feature implementation: Failure Retry Count
2019-01-24 18:49:37 +05:30
Laurin Quast
125d5dc9c5
fix: omit packager assets from caching (#1438) 2019-01-24 13:15:58 +01:00
Abdulrahman Alzenki
62dc913cb3 Address some of the feedback from the pull reqeust 2019-01-07 10:41:30 -08:00
Abdulrahman Alzenki
617b046789 Implement picture in picture for iOS
Test Plan:
 - Run on ipad
 - test out onIsPictureInPictureSupported, onIsPictureInPictureActive, restoreUserInterfaceForPictureInPictureStop, startPictureInPicture, stopPictureInPicture
2019-01-07 10:26:20 -08:00
Hampton Maxwell
45a851e79a
Merge branch 'master' into master 2018-12-31 21:36:49 -08:00
Nicolas Gonzalez
c2d9fb4301 merge 2018-12-13 21:38:32 -06:00
Nicolas Gonzalez
67a963328a updated basic example, added filterEnabled flag, check for HLS playlist before applying filter 2018-12-13 21:30:38 -06:00
Hampton Maxwell
a43f9c7ce1
Merge branch 'master' into maximumBitRate-adaptive-streaming 2018-12-12 22:30:52 -08:00
vadim
96c42844fe ExoPlayer - Add possibility to hide shutterView 2018-11-28 14:56:58 +02:00
Ash Mishra
5ab8165c3d renamed maximumBitRate to maxBitRate. Added applyModifiers support 2018-11-26 14:50:31 -08:00
Ash Mishra
11db343987 Support for HLS maximum bit rate adaptive streaming 2018-11-26 10:33:09 -08:00
Nicolas Gonzalez
0152db8f5a Fixed Conflict in CHANGELOG.md 2018-11-18 14:12:01 -06:00
Hampton Maxwell
cbf96c2bb0
Merge pull request #1283 from laurent22/patch-1
Make seek() throw an exception when using NaN value
2018-11-13 23:11:11 -08:00
Nicolas Gonzalez
22d65addd3 Added FilterType.js with all filters that do not require extra parameters 2018-11-06 08:38:28 -06:00
sridhar
5dce3e2161 Code cleanup
Code cleanup
2018-11-01 21:41:57 +05:30
sridhar
aa526206d2 Merge branch 'master' of git://github.com/react-native-community/react-native-video into react-native-community-master
Merge branch 'master' of git://github.com/react-native-community/react-native-video into react-native-community-master
2018-10-27 09:19:28 +05:30
Nicolas Gonzalez
16e45fc9f1 added ability to export video 2018-10-26 08:21:41 -05:00
Ash Mishra
67406b5e7b restored autorotate to fullscreen options 2018-10-25 14:56:59 -07:00
Nicolas Gonzalez
18e8895712 added video filter 2018-10-25 08:56:20 -05:00
Laurent Cozic
adf63e5fa0
Make seek() throw an exception when using NaN value 2018-10-12 16:59:36 +01:00
Ash Mishra
bbf37ed5cb Removed autoRotate from codebase; added TV_OS target check for
orientation; added tvOS target to examples/basic/ios project
2018-10-11 16:42:11 -07:00
Hampton Maxwell
0646dca071 Split fullscreen options into separate props 2018-10-07 20:24:50 -07:00
Hampton Maxwell
5336d4f866
Merge branch 'master' into master 2018-10-07 16:07:11 -07:00
Hampton Maxwell
777247907d Namespace onExternalPlaybackChange as onVideoExternalPlaybackChange 2018-10-07 15:59:10 -07:00
Hampton Maxwell
cacacd8b35
Merge branch 'master' into master 2018-10-07 15:58:32 -07:00
Hampton Maxwell
95cea768a1
Merge pull request #1167 from cmmartin/patch-2
Remove flash between poster and video
2018-09-27 13:55:18 -07:00
Artur Jaworski
d7efcf315f introducing onExternalPlaybackActiveChange 2018-09-13 15:49:49 +02:00
Ash Mishra
0580f2710f Merge branch 'master' of https://github.com/nfb-onf/react-native-video
# Conflicts:
#	ios/RCTVideoPlayerViewController.m
#	ios/Video/RCTVideo.m
2018-09-04 15:26:56 -07:00
Ash Mishra
77c48c9dfc added an onCaptionsDeviceSettings event 2018-09-04 15:19:32 -07:00
Ash Mishra
f45d6a2c3e Added fullscreen options for iOS Player 2018-09-04 15:15:30 -07:00
Hampton Maxwell
a0c196f4c9
Merge pull request #926 from ymuzi/master
add ipod-library support
2018-09-03 18:30:30 -07:00
Ash Mishra
7b8f79b36a added an onCaptionsDeviceSettings event 2018-08-27 10:42:49 -07:00
sridhar
6480a6462b Reporting estimatedBandwidth
Reporting estimatedBandwidth
2018-08-25 21:53:11 +05:30
sridhar
16688cef0f Youtube like video track selection
1. Loaded event will give the information about available video tracks
2. selectedVideoTrack prop will give the interface to select the video track. This prop will take the height of the video (Similar to youtube like 144p, 350p etc) and set the video track. If height is 0 then all video tracks will be added to list so that it will work like 'Auto' in youtube
2018-08-24 15:33:46 +05:30
Ash Mishra
5b3f08781e Merge branch 'upstream-master' 2018-08-09 09:58:57 -07:00
Ash Mishra
f41831ceac Added fullscreen options for iOS Player 2018-08-09 09:58:03 -07:00
Charlie Martin
55e0e4dcfa
Remove flash between poster and video
This resolves https://github.com/react-native-community/react-native-video/issues/1128
2018-08-04 17:28:33 -04:00
Bryan van Wijk
cd75e72180 Rename to bufferConfig and use stopPlayback 2018-08-02 09:20:08 +02:00
Bryan van Wijk
dde27a320e Pass loadControl parameters as video props 2018-08-01 15:58:02 +02:00
Bryan van Wijk
092ba33e95 Expose DefaultLoadControl parameters Android 2018-07-31 17:23:20 +02:00
Hampton Maxwell
06eb1c57d8 Support selecting audio tracks
Implements audio track selection on iOS & Android ExoPlayer. The prop mirrors the API for selectedTextTrack.
2018-07-17 14:14:21 -07:00
Hampton Maxwell
d003c87b57 Add onAudioBecomingNoisy for iOS 2018-07-12 21:48:58 -07:00
Hampton Maxwell
c67dd7b8ef
Merge branch 'master' into master 2018-06-22 18:57:58 -07:00
Hampton Maxwell
2649242178
Remove duplicate outdated stringsOnlyObject implementation 2018-06-22 18:46:48 -07:00
Hampton Maxwell
9401328d46 Support specifying an alternate seek tolerance on iOS 2018-06-20 22:09:45 -07:00
Hampton Maxwell
06fafc88bf
Merge branch 'master' into master 2018-06-20 17:03:52 -07:00
Hampton Maxwell
b785060b30
Add prop type for audioOnly 2018-06-20 16:52:48 -07:00
Hampton Maxwell
7793e00e9f Add TextTrackType export and textTracks prop 2018-06-12 21:04:15 -07:00
Hampton Maxwell
bd30454aea
Merge pull request #1057 from genglei01/master
Add allowsExternalPlayback Property for ios
2018-06-10 10:56:14 -07:00
Emrah
2d89a3fd54
Merge branch 'master' into master 2018-06-09 21:36:09 +02:00
Hampton Maxwell
066a0c9c16 Add support for using a TextureView in ExoPlayer 2018-06-08 00:01:13 -07:00
genglei01
7460df9edb
Merge branch 'master' into master 2018-06-08 11:18:26 +08:00
Rafael Pinto
41384e2adf
Merge branch 'master' into feature/audio-panning 2018-06-06 04:24:39 +01:00
LeoGeng
b83fda9838 Add allowsExternalPlayback to video for ios 2018-06-06 10:22:19 +08:00
Rafael Pinto
00fe87a2ab replaced channel with stereoPan attribute 2018-06-05 23:04:20 +01:00
Rafael Pinto
8b931cbc5d Added channel property to allow audio panning 2018-06-05 02:28:28 +01:00
Hampton Maxwell
9764fe3be4 First pass at text track selection, mostly complete 2018-06-02 02:24:13 -07:00
Hampton Maxwell
9cf2342c94
Merge pull request #595 from benlime/master
adds resizeMode to poster image
2018-05-29 16:23:58 -07:00
Hampton Maxwell
e47e2a969d
Maintain default poster resize mode
Set contain as the default mode when not specified
2018-05-29 16:22:46 -07:00
Hampton Maxwell
fefbe801ef
Merge branch 'master' into master 2018-05-29 15:08:24 -07:00
Shlok Amin
fc6244e440 adds audioOnly option that always displays poster image (if provided) on top of player 2018-05-29 16:01:06 -04:00
YasirYang
723df5d4ae add ipod-library support 2018-01-31 20:23:19 +08:00
Emrah Kaya
57a16b23c5 stringsOnlyObject does typechecking before coercion to string 2018-01-13 21:28:24 +01:00
thomasobrien99
1ba6b062e4 View.propTypes -> ViewPropTypes (#824) 2017-11-03 14:38:37 -04:00
Emrah Kaya
270fdfb657 added optional request headers for remote assests (android & ios) 2017-10-02 20:12:59 +02:00
Tim Gibadullin
961baedb26 Replace PropTypes from react with form prop-types package (#677) 2017-08-04 14:53:53 -04:00
chinloong
11735bed88 Fix nil string parameter error 2017-07-11 16:34:47 +08:00
benlime
e4da5c9773 adds resizeMode to poster image 2017-04-30 13:43:01 +02:00
Dom DiCicco
98c51f114b issue 310 - Added a new property, ignoreSilentSwitch. (#403)
* issue 310 - Added a new property, ignoreSilentSwitch. When true, audio will play even when the silent switch on an iOS device is set to silent. When false, the audio will toggle with the silent switch. Sets the AVAudioSession to either playback or ambient.

* Added ignoreSilentSwitch usage to example app and to readme

* Changed ignoreSilentSwitch to accept two string values, ignore and obey.
This accounts for the case where the user does not want to modify the audio session from a particular video instance. The user would not use the ignoreSilentSwitch property at all in that case.
Also, the audio session will only be updated when the video is unpaused, instead of whenever the video component has updated props. This allows for multiple videos to be on the screen, with the most recent video unpaused (aka played) being the video that has control over the audio session.
2017-04-20 14:10:06 -04:00
Andrea Cresta
d792427ce1 Added onTimedMetadata callback for iOS player and Exoplayer (#487)
* added listener for timedMetadata event.

* added callback in RCTVideo for the timed metadata

* exposing onTimedMetadata to JS

* added forgotten method declaration

* returning array of string values

* added metadata type to the array

* added onMetadata method

* overridden onMetadata method on exoplayer2

* added format of return value from onMetadata

* added function reference in README file
2017-02-13 21:38:02 -05:00
abrahambotros
201335f05c Fix src type=nil NSDictionary crash (#455)
- Use NSNull object in NSDictionary when type (or URI) missing from supplied
  src object.
- In addition, defensively supply valid strings for URI and type from JS.
2017-01-28 20:46:30 -05:00
Andrew Jack
9a936c9e8f ExoPlayer (#426) 2017-01-11 07:51:45 -05:00
James Hartt
9bcf70cbb5 Replace use of RCTBridge with RCTBubblingEventBlock (#381) 2016-12-12 19:16:11 -05:00
Linmic
0442061028 better judgement to remove poster (#412) 2016-12-08 09:43:11 -05:00
Linmic
7b95bae99a employ onPlaybackRateChange instead to smooth the poster disappearance (#411) 2016-12-08 09:12:34 -05:00
Linmic
5c2940f73d This is to provide a HTML5-like poster attribute for react-native-video component. (#400)
* offered html5-like poster attribute

* prevent unnecessary setState
2016-12-05 16:57:35 -05:00