Commit Graph

202 Commits

Author SHA1 Message Date
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
Tuan Luong
4951c2e13c Merge https://github.com/react-native-video/react-native-video into feature/android-fullscreen 2021-07-04 15:18:38 +07:00
Nick
b5b5da0684 update exoplayer to allow pre-init and content clear 2021-06-30 11:34:02 +09:00
Nick Fujita
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 Malejev
141192a56d
Upgrade ExoPlayer to 2.13.2 (#2317)
Upgrade ExoPlayer from 2.11.4 to 2.13.2 and fix any issues related to the upgrade and deprecated method use.
2021-06-24 14:01:11 +09:00
Armands Malejev
fcc66df945
Fix AudoFocus pausing video when attempting to play (#2311)
Fix AudioFocus bug that could cause the player to stop responding to play/pause in some instances.

Fixes issue #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-06-24 14:00:38 +09:00
Tuan Luong
d094886087 keep screen on when in fullscreen mode 2021-06-13 12:06:37 +07:00
Tuan Luong
c89649b513 Merge https://github.com/react-native-video/react-native-video into feature/android-fullscreen 2021-06-13 11:06:05 +07:00
Dan Levy
adf895dcdf
Fix for issue #2153 2021-05-18 09:20:32 -06:00
Armands Malejev
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 Malejev
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 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
Armands Malejev
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 Malejev
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
Alec Winograd
5f1ec04cef
Fix default behavior for captions in ExoPlayer 2020-10-15 11:17:49 -05:00
Nick Fujita
553fef02cc Port over fix from 4.x branch 2020-08-17 16:28:36 +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
Tuan Luong
4d35511fb9 add delay when hideSystemUI 2020-07-13 14:50:09 +07:00
Tuan Luong
0aa9a5901e do not hide fullscreen in stopPlayback 2020-07-13 14:41:38 +07:00
Tuan Luong
5fe76574bb add fullscreenOrientation 2020-07-10 10:45:41 +07:00
Tuan Luong
0b7ea71d77 update fullscreen activity 2020-07-05 11:00:25 +07:00
Tuan Luong
32880544e5 update manifest and import 2020-07-04 22:08:57 +07:00
Tuan Luong
94bceb472b add fullscreen activity 2020-07-04 17:41:15 +07:00
Jeferson Daniel
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
Anders Lemke
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 Andersson
f395bd1d3d
Removed JS fullscreening for Android (#2013) 2020-06-11 16:44:13 +02:00
limaAniceto
7c8c613a65
Upgrade exoplayer to 2.11.4 (#2034) 2020-06-11 09:17:33 -04: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
IbrahimSulai
fd8ac76e4d
Fix play/pause regression after added fullscreen support. (#1916) 2020-02-20 09:23:23 -05:00
Michael Tintiuc
82c191d97f
Improve Android Audio Focus (#1897)
Implement audio focus as per android docs:
https://developer.android.com/guide/topics/media-apps/audio-focus
https://medium.com/androiddevelopers/audio-focus-3-cdc09da9c122

AUDIOFOCUS_LOSS should abandon focus and not try resuming audio, this is done with AUDIOFOCUS_LOSS_TRANSIENT

This fixes at least:
- Audio not being paused after focus being taken by some voip applications
- Content resuming and pausing instantly sporadically (some race condition perhaps) when activity was resumed from background.
2020-02-17 11:53:56 -05:00
IbrahimSulai
9200dce1ae
Add full screen support to Android Exoplayer (#1730) 2020-01-28 17:21:21 -05:00
Benoit Dion
b97663e092
Clear progress messages on STATE_IDLE and STATE_BUFFERING (#1768)
The progress message handler will duplicate recursions of the `onProgressMessage` handler on change of player state from any state to STATE_READY with `playWhenReady` is true (when video is not paused). This clears the messages on STATE_IDLE and STATE_BUFFERING to break the recursion.
2019-09-30 13:27:08 -04:00
Benoit Dion
3e38f88869 Remove Exoplayer deprecations
- Bump Exoplayer to 2.10.4
- Remove deprecated usages of Exoplayer methdos
- Add `ReactExoplayerConfig` as extension points to configure the Exoplayer instance
2019-09-23 08:52:05 -04:00
Daniel Mariño Ruiz
b954a4f01a
Merge pull request #1699 from andrewchae/mute
Fixed Exoplayer doesn't work with mute=true #1696
2019-09-21 09:52:00 +02:00
Andrew Chae
3012b81701 Fixed Exoplayer doesn't work with mute=true #1696 2019-08-01 15:08:47 -07:00
Daniel Mariño
88d3a4a0ba cpck androidx 2019-07-28 15:42:32 +02:00
Daniel Mariño
f58ae349e8 remove extra whitespace 2019-07-09 11:41:03 +02:00
Daniel Mariño
f60aff7989 comment why postDelayed 2019-07-09 11:40:23 +02:00
Daniel Mariño
cde2432804 Merge branch 'rnv-master' into feature/handle-props-racing-conditions-on-expplayer
# Conflicts:
#	CHANGELOG.md
2019-07-09 11:39:30 +02:00
Daniel Mariño
cb3cff7772 fix repeat 2019-07-08 12:47:05 +02:00
Daniel Mariño
40c7371b3e fix for setControls 2019-07-07 22:17:15 +02:00
Daniel Mariño
466c004837 handle racing conditions when props are setted on exoplayer 2019-07-07 10:21:23 +02:00
Kurt Johnson
2b067f1978
Merge branch 'master' into bugfix/android-disablefocus-audio 2019-07-03 16:43:37 -04:00
Hampton Maxwell
da8a202a0f
Make video auto track selection more readable 2019-04-03 23:24:02 -07:00
Jacob
2072793ae3
Fix Android audio crash
Why:

* There is a case where groupIndex may be unset

This change addresses the need by:

* Don't chain check for INDEX_UNSET to previous conditional
2019-03-19 13:46:01 -04:00
Kurt Johnson
3d80bfd236
Merge branch 'master' into bugfix/android-disablefocus-audio 2019-03-15 15:57:00 -04: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
2898f8cb5a
Revert changes to video group index unset code
I'm guessing this change was made to cleanup the code, however it is not functionally identical and may cause issues. Revert until those can be discussed.
2019-02-10 19:56:56 -08:00
Hampton Maxwell
e4763c9d10
Rename failureRetryCount to minLoadRetryCount 2019-02-10 19:47:07 -08:00
Hampton Maxwell
35250fa8c4
Rename failureRetryCount to minLoadRetryCount 2019-02-10 19:45:31 -08:00
Hampton Maxwell
40803496f9
Code formatting cleanups for controls 2019-02-10 18:15:30 -08:00
Kurt Johnson
739a6362bf Fix so background audio from other apps can play when disableFocus is true. requestAudioFocus was being run regardless of there being a src, so I made it so that only gets requested when a src exists. 2019-02-07 11:02:10 -05:00
Ibrahim Sulaiman
bd8aa99645 Changed the execution order of initializePlayerControl method in order to align with player state 2019-02-06 03:22:06 +05:30
Ibrahim Sulaiman
1430dc7fea Fix for play and pause button UI issue 2019-02-04 19:18:29 +05:30
sridhar
938cfd64a5 Defect fix for issue #1460
Defect fix: https://github.com/react-native-community/react-native-video/issues/1460
2019-01-30 22:43:12 +05:30
Ibrahim Sulaiman
c156550518 Used default playerControlView's API to show and hide controls 2019-01-28 14:50:51 +05:30
Ibrahim Sulaiman
debc0cb3c6 Resolved the playercontrol UI issue and also handled the controls prop state 2019-01-25 15:54:53 +05:30
sridhar
172954de5a Feature implementation: Failure Retry Count
Feature implementation: Failure Retry Count
2019-01-24 18:49:37 +05:30
Ibrahim Sulaiman
e05c1c3c64 Resolved the review comments 2019-01-16 23:47:32 +05:30
Ibrahim Sulaiman
4cc9a4d374 Support for controls in android exoplayer 2019-01-04 14:58:32 +05:30
Hampton Maxwell
2d016e7e6a Fix Array Out of Bounds crash if no video tracks present 2019-01-03 22:02:58 -08:00
Hampton Maxwell
9a809e22d8 Fix mismatched bitrate vars 2018-12-31 22:08:18 -08:00
Hampton Maxwell
45a851e79a
Merge branch 'master' into master 2018-12-31 21:36:49 -08:00
Hampton Maxwell
d148c3f9f9
Change field to bitrate for bandwidth update 2018-12-31 21:35:15 -08:00
Hampton Maxwell
d5168af211
Cleanups to video track handling.
This also fixes a bug that compared track type & renderer index
2018-12-31 21:33:02 -08:00
Hampton Maxwell
7837c39df0
Merge pull request #1373 from reime005/android-subtitle-fix
[WIP] Fix android subtitle issue caused by using rawdatasource
2018-12-31 13:37:02 -08:00
sridhar
756bbc96f0 Defect fix
Defect fix
2018-12-20 11:01:13 +05:30
Hampton Maxwell
5a053a7469 Fix bug where useTextureView wasn't defaulting to true 2018-12-13 10:05:09 -08:00
Hampton Maxwell
00dac26a63
Always convert maxBitRate of 0 to Integer.MAX_VALUE 2018-12-13 09:50:43 -08:00
Hampton Maxwell
a43f9c7ce1
Merge branch 'master' into maximumBitRate-adaptive-streaming 2018-12-12 22:30:52 -08:00
Marius Reimer
bf4a7df0e7 Fix android subtile issue caused by using rawdatasource 2018-12-09 00:40:05 +01:00
vadim
96c42844fe ExoPlayer - Add possibility to hide shutterView 2018-11-28 14:56:58 +02:00
Hampton Maxwell
413a7b87c6 Only fire onSeek once we've completed the seek operation 2018-11-27 19:48:41 -08: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
Daniel Dudek
5c7da30ddb Fixed volume change when audio focus change 2018-11-14 12:33:28 +01:00
sridhar
5dce3e2161 Code cleanup
Code cleanup
2018-11-01 21:41:57 +05:30
sridhar
9dead2fefc Some log functions removed
Some log functions removed
2018-11-01 16:58:27 +05:30
sridhar
41cbf073c7 Bandwidth is reported as enevts when download happens. Not by timer method
Bandwidth is reported as enevts when download happens. Not by timer method
2018-11-01 15:18:59 +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
Hampton Maxwell
3eb8515461 Don't pause when detaching 2018-10-13 20:36:12 -07:00
Hampton Maxwell
2d76e491d3
Switch useTextureView to default to true (#1286)
A number of people run into SurfaceView layering issues. It seems better to default to the more compatible option and let people reconfigure if they need the extra SurfaceView performance.
2018-10-13 20:23:30 -07:00
Hampton Maxwell
5e360608af Return unset track index when there are no track available (#1190) 2018-09-12 19:38:11 -07:00
sridhar
654a76d6ef named parameter added for exception. Otherwise this cannot be used in JS
named parameter added for exception. Otherwise this cannot be used in JS
2018-09-06 14:25:44 +05:30
sridhar
6480a6462b Reporting estimatedBandwidth
Reporting estimatedBandwidth
2018-08-25 21:53:11 +05:30
sridhar
ff31bd1772 reverted deprecated API
reverted deprecated API
2018-08-25 11:24:08 +05:30
sridhar
4ea926e137 Bandwidth reporting
To show the current bandwidth to user and for debugging purposes current bandwidth is required to be reported. This pull request adds the bandwidth estimate in the progress event.

Also the bandwidth details are added in the audio track in load event. There is another pull request which reports the video track information
2018-08-25 11:21:01 +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
Hampton Maxwell
40cafdcb2e Upgrade to ExoPlayer 2.8.2 2018-08-07 23:10:03 -07:00
Hampton Maxwell
a60a1277b7
Remove extra space 2018-08-03 15:54:55 -07:00
Hampton Maxwell
725497e149
Don't set isPaused when releasing the player
I'm guessing this was a bug as it doesn't make sense that we would set paused to true if the video is playing, and not paused if it wasn't. I believe this is a safe change since we only release the player when the app is closing or we detach (which is going away shortly). We need this since we release the player in order to apply new bufferConfig settings.
2018-08-03 15:54:18 -07: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
2d5ef8cfd2 Update name of onAudioBecomingNoisy 2018-07-12 21:49:14 -07:00
Ash Mishra
6339b9ac08 isPaused reverted
clearSelectionOverride is still required for "default" and "disabled" case as it otherwise continues to show a selected track if it was previously selected
2018-07-09 16:18:42 -07:00
Ash Mishra
572c11a1dc Android device locale support for captions 2018-07-09 11:36:35 -07:00
Ash Mishra
05d4be2d9c Merge remote-tracking branch 'upstream/master'
# Conflicts:
#	ios/RCTVideo.m
#	package.json
2018-07-06 16:01:02 -07:00
Ash Mishra
3e2e16ef44 iOS Sidecar loading for captions and offline support (isAsset). Android
fix to respect User settings for captions.
2018-07-05 13:36:36 -07:00