Commit Graph
1239 Commits
Author SHA1 Message Date
Armands Malejevs 0e3fe11b78 Fix runtime issues 2022-03-30 15:33:17 +03:00
Armands Malejevs edd3cc1698 Fix runtime issues 2022-03-30 15:27:09 +03:00
Armands Malejevs bd1f7f50cb Fix runtime issues 2022-03-30 15:19:50 +03:00
Armands Malejevs 7067afa609 Fix runtime crash 2022-03-30 15:04:49 +03:00
Armands Malejevs cca2744542 Fix typo 2022-03-30 14:49:40 +03:00
Armands Malejevs 142521bc0e Fix build issues 2022-03-30 14:43:04 +03:00
Armands Malejevs 2f77765fe2 Clean up 2022-03-30 14:35:48 +03:00
Armands Malejevs 88f32ae3c8 Move DRM init to a separate thread 2022-03-30 14:29:08 +03:00
Armands Malejevs b6f3652636 Capture more errors from DRM session manager 2022-03-29 15:21:39 +03:00
Gabriel RiveroandGitHub e6dd52a245 VEX-6540: Disable recording when playing local videos (#18)
This PR adds core actions to enable or disable screenshots

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

velocity PR: crunchyroll/velocity#2248

New core actions were added to control the player surface and mark it as secure. Sending the prop to react-native-video will recreate the surface of the player changing it to a SurfaceView and enabling security

Reviews
Major reviewer (domain expert): @nickfujita
Minor reviewer: @armadilio3
2022-02-15 15:20:01 -04:00
Gabriel 2af360a7bb add useSecureView prop to prevent screen recording 2022-02-14 21:17:22 -04:00
Armands MalejevandGitHub 2ab029995f VEX-6365: Improve memory management (#17)
Improve memory management to reduce pressure on low end devices.

JIRA: VEX-6365
2022-01-21 14:10:22 +02:00
Gabriel RiveroandGitHub aa63361695 VEX-6030: Further prevent memory crashes (#15)
This PR is intended to prevent memory crashes when the free memory runs out

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

Velocity PR: crunchyroll/velocity#2043

By forcefully calling the garbage collector the memory crashes, specially on lower resolutions (<720p) are gone on devices with 2GB of ram or less and Android 6, also testing 3GB Android 7 with this patch, so far is working as intended

Reviews
Major reviewer (domain expert): @nickfujita
Minor reviewer: @jctorresM
2021-11-17 14:58:27 -04:00
Gabriel Rivero ab202c96b6 typo 2021-11-16 21:40:38 -04:00
Gabriel Rivero 2b310cbf7e force garbage collector when free memory reaches 0 2021-11-16 20:35:30 -04:00
Gabriel RiveroandGitHub 292b53916a VEX-6030: Reduce buffer size based on heap (#13)
This PR changes the behavior on old devices that have poor memory management.

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

The solution implied customizing the method shouldContinueLoading from RNVLoadControl to use only the available heap, performing tests on an old Nexus 5 it was determined the ideal bytes allocation to half the reported heap, that provided some buffering during ads but smooth playback during the video with no crashes (23:39 of 23:39 at the moment of writing this, video kept playing as expected after 3 ad breaks)

The fix is only targeting Marshmallow as the reduction of buffer is substantial and other versions that work properly should not get affected.

Depending on the test result of VEX-5758, this same fix can be applied to Nougat

Reviews
Major reviewer (domain expert): @armadilio3
Minor reviewer: @nickfujita
2021-11-09 14:37:52 -04:00
Armands MalejevandGitHub f712eecb4f VEX-6011: Align AVOD resolutions with available resolutions on Content (#14)
Add support for content tracks and improve track selection to work even during ads playback.
2021-11-09 14:22:32 +02:00
Gabriel Rivero 7dbc5eb078 add config parameter maxHeapAllocationPercent 2021-11-04 13:54:43 -04:00
Gabriel Rivero 40e450b0b1 VEX-6030-reduce-buffer-size-based-on-heap 2021-11-03 19:35:27 -04:00
Gabriel Rivero 0ab7ff476b VEX-6030-reduce-buffer-size-based-on-heap 2021-11-03 19:14:19 -04:00
Nick FujitaandGitHub 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
Nick FujitaandGitHub 8b75438148 VEX-5682: iOS Swift Conversion (#11)
Converts ios implementation from objective-c to swift.
2021-10-27 10:35:07 +09:00
Armands MalejevandGitHub 3bcf2c6061 VEX-5798: Implement DRM L1 to L3 fallback (#9)
Add support for L1 to L3 Widevine fallback if playback fails initially.
2021-10-13 18:03:29 +03:00
Armands MalejevandGitHub 2fcc1de626 VEX-5825: Android player error handling improvements (#10)
Improve error handling.
2021-10-12 14:56:50 +03:00
Armands MalejevandGitHub a0b679cc07 VEX-5545: Some Android codecs don't support specific resolutions (#8)
Add support for detecting if format is supported and exclude unsupported resolutions from auto quality selection and video track info in RN.
2021-09-26 16:38:10 +03:00
Armands MalejevandGitHub 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
Nick FujitaandGitHub cba88fa9d8 VEX-5044: Allow exoplayer to preinit with empty source (#6)
- Allow player to be init before source is provided, and later update once a source is provided.
- Adds handling for providing a empty source in order to stop playback and clear out any existing content
2021-06-30 10:24:21 +09:00
Armands MalejevandGitHub 80873102a4 VEX-4579: Network loss handling (#5)
Add support for customizing back buffer duration and handle network errors gracefully to prevent releasing the player when network is lost.
2021-05-17 13:09:09 +03:00
Armands MalejevandGitHub f6cce0d819 VEX-4556: The app crashes when the premium episode is loaded (#4)
Fix player crashing when it is being cleared.
2021-05-07 11:37:57 +03:00
Adrian MuiandGitHub 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
Armands MalejevandGitHub 6100981760 Upgrade exoplayer to 2.13.2 (#2)
Upgrade ExoPlayer from 2.11.4 to 2.13.2 and fix any related issues related to the upgrade and deprecated method use.
2021-03-17 17:49:10 +02:00
Armands MalejevandGitHub 568971be77 Fix AudoFocus pausing video when attempting to play (#1)
Fix AudioFocus bug that could cause the player to stop responding to play/pause in some instances.

Fixes issue react-native-video#1945

This was caused by the player requesting audio focus on each play (un-pause) and that resulted in a small window of Audio focus loss and then gain. The focus loss results in the player being paused while the player was supposed to play at the time. The solution is to keep track of Audio focus and not request new focus if we already have it.
2021-03-15 16:51:16 +02:00
Nick 5adedb131b Update package.json version number to 5.1.1 2021-01-14 11:13:39 +09:00
Nick FujitaandGitHub 88b636f158 iOS DRM Fixes for License Fetching (#2208) 2021-01-13 19:18:01 +09:00
Tero PaananenandGitHub faf8aed29b Renaming Boolean etc to AsBoolean (#2119) 2020-09-30 14:27:39 -04:00
Radek CzemerysandGitHub f653589ecd fix: Xcode 12 compatibility (#2152)
Latest Xcode 12 fails to build while without a module to depend on React-Core directly hence this change is necessary for native modules on iOS. This change requires to React Native 0.60.2 or newer. For more details please check: facebook/react-native#29633 (comment)
2020-09-29 10:05:28 -04:00
IrwinandGitHub 4246016fb4 Update README.md (#2076)
You only need to perform linking for React Native < 0.60
2020-09-29 10:01:02 -04:00
Adam GormanandGitHub 408d3f720e Add ARM64 support for windows (#2137)
Adding arm64 support for RNW builds.

Nothing in this project is using anything that isn't already supported in arm64 windows libs. It was simply overlooked when RNW was originally added.

We have been using RNW and RNV in our project for 6+ months and just been using a patch-package to apply this change. Figured it was overdue to upstream this change.

You can see this similar code in the RNW repo.
https://github.com/microsoft/react-native-windows/blob/95935e008621778dbcec01363602c19abc060632/packages/microsoft-reactnative-sampleapps/windows/SampleLibraryCPP/SampleLibraryCPP.vcxproj#L28
and
https://github.com/microsoft/react-native-windows/blob/master/packages/microsoft-reactnative-sampleapps/windows/SampleLibraryCPP/SampleLibraryCPP.vcxproj#L44
2020-09-29 10:00:27 -04:00
Hampton Maxwell 5683167a3a Prepare 5.1.0-alpha8 2020-08-19 20:20:21 -07:00
Nick FujitaandGitHub f70c4294ff Merge pull request #2116 from nickfujita/id3-error-fix
Port over ID3 fix from 4.x branch
2020-08-20 12:16:02 +09:00
Nick Fujita 553fef02cc Port over fix from 4.x branch 2020-08-17 16:28:36 +09:00
Hampton Maxwell f3e6ce1058 Prepare 5.1.0-alpha7 2020-08-12 19:01:29 -07:00
Hampton Maxwell 90da768087 Ready 5.1.0-alpha6 for release 2020-08-12 19:00:48 -07:00
Daniel MariñoandGitHub 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
Jeferson DanielandGitHub dbf1a4e034 Fix exoplayer aspect ratio update on source changes (#2053)
* Fix exoplayer aspect ratio update on source changes

* Update CHANGELOG.md
2020-06-30 19:00:16 +02:00
8962720f56 Support preventsDisplaySleepDuringVideoPlayback (#2019)
* Add flag on iOS

* Add flag in Android

* Add documentation

* Add changelog entry

* Also set setKeepScreenOn

* Fix prop not being set

* add preventsDisplaySleepDuringVideoPlayback to exoplayer

* Update android-exoplayer/src/main/java/com/brentvatne/exoplayer/ReactExoplayerView.java

* Update android-exoplayer/src/main/java/com/brentvatne/exoplayer/ReactExoplayerView.java

Co-authored-by: Jens Andersson <jens@fritan.com>

Co-authored-by: Anton Tanderup <antontandrup@gmail.com>
Co-authored-by: Jens Andersson <jens@fritan.com>
2020-06-16 14:31:23 +02:00
Jens AnderssonandGitHub 9c31948dbf Always set headers for iOS (#2014) 2020-06-11 16:53:14 +02:00
Jens AnderssonandGitHub f395bd1d3d Removed JS fullscreening for Android (#2013) 2020-06-11 16:44:13 +02:00
limaAnicetoandGitHub 7c8c613a65 Upgrade exoplayer to 2.11.4 (#2034) 2020-06-11 09:17:33 -04:00
Jens AnderssonandGitHub 2dd5025190 Revert "[ios] Adaptive fullscreen in landscape by device orientation (#1862)" (#2043)
This reverts commit c9096d16f7.
2020-06-09 12:35:18 +02:00