Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Added the full screen support in Android Exoplayer #1730

Merged
merged 12 commits into from
Jan 28, 2020

Conversation

IbrahimSulai
Copy link
Contributor

Added support for full-screen functionality in Android Exoplayer.
Utilised the existing boolean prop 'fullscreen' to enable/disable the full-screen property from React native.

<Video
  source={
    {uri: 'https://www.w3schools.com/html/mov_bbb.mp4'}
  }
  fullscreen={true}
/>

Note: As an extension to the merged PR for Build in Support for displaying controls in Android Exoplayer (#1414), have added the support for fullscreen also in this new PR. Sorry for the delay in implementing the full-screen functionality.

@IbrahimSulai
Copy link
Contributor Author

@jonathangreco @datzun @shaunsantacruz @sherif-magdy @xstable @AndriiUhryn @mgezkaya

Sorry for the delay. No more wait. Here is the full-screen functionality.

@IbrahimSulai
Copy link
Contributor Author

@n1ru4l @cobarx - Could you please help to review this pull request.

@IbrahimSulai
Copy link
Contributor Author

IbrahimSulai commented Aug 29, 2019

@cobarx @n1ru4l
I have also tested the changes in the below test harness.
https://github.com/cobarx/react-native-video-test.

It's working fine as expected.

Could you please review and merge the same.

@jonathangreco
Copy link

jonathangreco commented Aug 29, 2019

Hi, @IbrahimSulai . With the native fullscreen button on iOS we have experienced some issues that have already been reported by #1441 and #1319 and #1645. It seems that's a bug related to the scrollView component which has not been fixed yet. But a fix was already provided for the react-native-video part by @ashnfb in the merge request I've linked.

Could you please tell me if you have tested your fullscreen functionnality when the video component is inside a ScrollView ?

@IbrahimSulai
Copy link
Contributor Author

@jonathangreco
I have tested the video component with fullscreen functionality inside the ScrollView. It's working fine as expected.

I have verified also using the test harness.
https://github.com/cobarx/react-native-video-test.

@IbrahimSulai
Copy link
Contributor Author

@cobarx @jenshandersson @CHaNGeTe @ashnfb
Could you please review and merge the same.

@ashnfb
Copy link
Contributor

ashnfb commented Aug 29, 2019

@IbrahimSulai for iOS, this does not fix the Scrollview issue with fullscreen controls on iOS (scrollview has a bug in formatting its dimensions after rotation in full-screen and exiting) - however that is a separate issue as @jonathangreco has mentioned, and doesn't affect your PR

@IbrahimSulai
Copy link
Contributor Author

IbrahimSulai commented Aug 29, 2019

@ashnfb this is not a PR to fix the Scrollview issue with fullscreen controls on iOS.

This is the PR - Added support for full-screen functionality in Android Exoplayer.
This is only for Android. This won't impact or effect iOS fullscreen features.

I can also able to successfully run the App both in iOS and Android with pointing to my latest master.
"react-native-video": "git+https://github.com/IbrahimSulai/react-native-video.git#master"

I think node modules not installed properly in your case. Please delete and re-install node modules.

@ashnfb
Copy link
Contributor

ashnfb commented Aug 29, 2019

@IbrahimSulai I am replying to your message to @jonathangreco:
"I have tested the video component with fullscreen functionality inside the ScrollView. It's working fine as expected."

I was hoping you had fixed the issue that we have been seeing on iOS with exiting fullscreen video on iOS. But your PR does not. That's fine, it's an unrelated issue.

I won't have time to test the Android change today.

@IbrahimSulai
Copy link
Contributor Author

@ashnfb Thanks.

I have tested for Android - video component with fullscreen functionality inside the ScrollView. It's working fine. Please test and confirm on your end in Android. Thanks!

@awitherow
Copy link
Contributor

Well done @IbrahimSulai

@jisao
Copy link

jisao commented Aug 30, 2019

good

@IbrahimSulai
Copy link
Contributor Author

@cobarx @jenshandersson @CHaNGeTe @ashnfb
Could you please review and merge the same.

@cboar
Copy link

cboar commented Sep 3, 2019

@IbrahimSulai The implementation has issues with a changing layout. Since getDimension() is called only upon construction, the size is outdated if/when the layout changes. In fact, the layout changes when going into fullscreen, as the device's navigation controls and notification bar disappear. The same bug occurs when switching from portrait to landscape, and vice versa.

@IbrahimSulai
Copy link
Contributor Author

IbrahimSulai commented Sep 3, 2019

@cboar
I have implemented this full-screen feature in such a way that the fullscreen mode by default goes into landscape mode and also other app-specific controls like navigation bar/notification bar won't appear similar to typical media players like YouTube. Changing orientation to portrait, will make the player goes off from full-screen mode.

For the same reason (Supporting full-screen mode in landscape mode alone), I used getDimension() in the constructor as a one-time calculation since the dimension info doesn't require for current implementation anywhere else.

@IbrahimSulai
Copy link
Contributor Author

Is there any way to turn off autoplay? Previously the videos weren't auto playing on Android

@chrissnape - Please set the prop value for the video component "paused" to true.

Please refer the link - https://github.com/react-native-community/react-native-video#paused

@chrissnape
Copy link

Is there any way to turn off autoplay? Previously the videos weren't auto playing on Android

@chrissnape - Please set the prop value for the video component "paused" to true.

Please refer the link - https://github.com/react-native-community/react-native-video#paused

The paused parameter was previously working, but once I installed 5.1.0-alpha2 it no longer paused.

@chrissnape chrissnape mentioned this pull request Feb 4, 2020
@JerakRus
Copy link

Hi, after the update, my pause also does not work. And, perhaps
to enable autorotate, otherwise it doesn’t work for me?

@benoitdion
Copy link
Collaborator

@IbrahimSulai are you able to look into these issues? I may need to revert the fullscreen change otherwise since we will generally favor stability over new features.

@IbrahimSulai
Copy link
Contributor Author

@benoitdion - Will have a look into this issue as high priority and solve this ASAP.

@IbrahimSulai
Copy link
Contributor Author

IbrahimSulai commented Feb 16, 2020

@chrissnape @JerakRus @benoitdion - Found the root cause for this issue. Will confirm and test the fix thoroughly and raise separate PR for the same in a couple of days.

@benoitdion
Copy link
Collaborator

Sounds great. Thanks @IbrahimSulai!

@jsunwoo
Copy link

jsunwoo commented Feb 18, 2020

Thank you so much @IbrahimSulai!
You are the best.

@IbrahimSulai
Copy link
Contributor Author

@chrissnape @JerakRus @benoitdion @jsunwoo
Resolved the play and pause issue with the full-screen functionality. I have raised PR for the same.
#1916

Please review the PR.

@jsunwoo
Copy link

jsunwoo commented Feb 19, 2020

@IbrahimSulai, thank you for your great effort.

@jsunwoo
Copy link

jsunwoo commented Feb 19, 2020

May I ask you one question @IbrahimSulai?
I'm trying to fill out the screen with a video fully, but there are still have some margins.

스크린샷 2020-02-19 오후 5 11 18 스크린샷 2020-02-19 오후 5 14 09
(I tested with Nexus 5X API 27 and Pixel 3 XL API 28)

I saw your mention you will take this over when PR merged.
Then can I get to know how to show status bar and action buttons rather than hide those(right after I entered fullscreen mode)?

I think some margins come from because of hiding the status bar and action buttons.

스크린샷 2020-02-19 오후 5 12 19 스크린샷 2020-02-19 오후 5 15 44

If I just show them it looks way better.

I was trying to find how to change it in your commit but couldn't find it.

Any helps would be grateful.

@IbrahimSulai
Copy link
Contributor Author

@jsunwoo - Yes I need to work on this separately. Since in some devices, particularly devices with top-notch is having some spacing issue. As intimated earlier, I will resolve this issue in separate PR.

Since the fix for "isPause" property is a high priority. Once this gets merged. I will start work on that issue. Thanks for your support and patient.

@JerakRus
Copy link

@IbrahimSulai
Thank you for your hard work! I will test your PR as soon as it is merged, and I will give feedback on performance for me.

@JerakRus
Copy link

JerakRus commented Feb 19, 2020

@jsunwoo
Hi, are you sure that you use styles correctly? I see your backgroundVideo style, but it’s not used. In my project with the same style with absolute positioning it works fine.

@jsunwoo
Copy link

jsunwoo commented Feb 19, 2020

Thank you so much @IbrahimSulai 🙏

@jsunwoo
Copy link

jsunwoo commented Feb 19, 2020

@JerakRus
In some devices seem working well. Did you test with the same devices I used above?

@JerakRus
Copy link

JerakRus commented Feb 19, 2020

@jsunwoo, @IbrahimSulai

No, I tested on another device, xiaomi redmi note 8 pro. And on the previous version of the master branch of Ibrahim. Now I made an update to fix the pause. The pause works well, but I also have white streaks on my sides. = (
photo_2020-02-19 14 31 36

left: 0,
width: this.width,
height: this.height,
backgroundColor: '#ffffff',

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@IbrahimSulai
Hello again, I decided to see your PR, and now I found why the background of the video is white. It is listed on this line! I think it's better to either make it black or transmit from props?
And I checked in my project, it will solve my problem.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah, black or from props makes more sense than white.

@CezarCobuz
Copy link

Toggling fullscreen only displays a white bar at the top (replacing default top bar) but the video stays the same. Is this stable?

@FinnGu
Copy link

FinnGu commented Mar 21, 2020

Is there a way to get this working with ReactNative v59.x?

@ayciceksahin
Copy link

@IbrahimSulai Can you please look at my code and tell me why the fullscreen is not working in my case?
https://github.com/psamd/react-native-video-fullscreen-test

@psamd - Resolved your problem to achieve the full-screen functionality in your app level. You have not handled the styles properly.
Provide me write access for the above repository. will commit my changes. so it will easy for you to find out the mistake you have did in the code.

@IbrahimSulai I have added you as collaborator to the repository.

Resolved your problem and committed the changes in above repo. Please have a look.

@IbrahimSulai Thanks a lot for helping me out. Is there any way to remove the left, right and bottom padding/margin and make the video cover the entire screen?

Untitled

I have same problem. How can i fix it ?

@helloworld-Andrew
Copy link

@IbrahimSulai Can you please look at my code and tell me why the fullscreen is not working in my case?
https://github.com/psamd/react-native-video-fullscreen-test

@psamd - Resolved your problem to achieve the full-screen functionality in your app level. You have not handled the styles properly.
Provide me write access for the above repository. will commit my changes. so it will easy for you to find out the mistake you have did in the code.

@IbrahimSulai I have added you as collaborator to the repository.

Resolved your problem and committed the changes in above repo. Please have a look.

@IbrahimSulai Thanks a lot for helping me out. Is there any way to remove the left, right and bottom padding/margin and make the video cover the entire screen?
Untitled

I have same problem. How can i fix it ?

I also have the same problem. but I find the reason. It because the Dimensions.get('window').height does not work well for a Full-screen mobile phone which has a Virtual button navigation bar.

@jenshandersson
Copy link
Contributor

Guys I'm just seeing this PR and not happy with the code quality here, especially in video.js. This is a very specific use case and we shouldn't lower the quality in the JS-codebase because if it. I'm already seeing unmounted state update warning in Video. We're also updating state on iOS even though this feature is not used. Would love to hear the reasoning here. Ping @CHaNGeTe @benoitdion

@IbrahimSulai
Copy link
Contributor Author

Guys I'm just seeing this PR and not happy with the code quality here, especially in video.js. This is a very specific use case and we shouldn't lower the quality in the JS-codebase because if it. I'm already seeing unmounted state update warning in Video. We're also updating state on iOS even though this feature is not used. Would love to hear the reasoning here. Ping @CHaNGeTe @benoitdion

@jenshandersson
There is a limitation in the android native bridge to change the size of the view. So we can't directly implement the full-screen functionality in Android Native.

So I have implemented the full-screen functionality in the react-native layer based on the platform.

Hope I answered your concern! Thanks!

@IbrahimSulai
Copy link
Contributor Author

IbrahimSulai commented May 6, 2020

@IbrahimSulai Can you please look at my code and tell me why the fullscreen is not working in my case?
https://github.com/psamd/react-native-video-fullscreen-test

@psamd - Resolved your problem to achieve the full-screen functionality in your app level. You have not handled the styles properly.
Provide me write access for the above repository. will commit my changes. so it will easy for you to find out the mistake you have did in the code.

@IbrahimSulai I have added you as collaborator to the repository.

Resolved your problem and committed the changes in above repo. Please have a look.

@IbrahimSulai Thanks a lot for helping me out. Is there any way to remove the left, right and bottom padding/margin and make the video cover the entire screen?
Untitled

I have same problem. How can i fix it ?

I also have the same problem. but I find the reason. It because the Dimensions.get('window').height does not work well for a Full-screen mobile phone which has a Virtual button navigation bar.

Agreed...we need to consider this "Virtual button navigation bar" height also to cover the full screen in specific android devices. I will handle this issue ASAP. Thanks for the observation...

@jenshandersson
Copy link
Contributor

@IbrahimSulai I would suggest we expose callbacks and let each develop handle the resizing of the JS view. I don't like having this very specific use case in the code of a massively used library. The JS code feels very hacky to me. If Exoplayer doesn't support a native solution then I say this lib shouldn't either. An absolute positioned view will be relative to its parent, won't be relative to screen. The margin hack you have is not ideal.

Maybe you can write some example code on how to handle the fullscreen view in Android without having the code within video.js? @IbrahimSulai @benoitdion

MeenuDhanoa added a commit to railroadmedia/react-native-video that referenced this pull request Aug 13, 2024
* 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.

* Added details to readme and changelog

* update for androidX

* change minSdkVersion back to 16

* update readme

* remove duplicate ReactVideoPackage()

* add readme to migrating to AndroidX

* add read me

* fix read me

* pre androidX, upgrade to 28

* remove duplicated line in example

* change dead code in  example

* Remove calls to [super observe] to fix crash

* Add TheWidlarzGroup#1646 to changelog

* bring back super KVO with selector check

* Fix memory leak when using AVPlayerViewController, make sure to release player

* Updated changelog

* changelog for TheWidlarzGroup#1629

* bump version

* chang maven to google

* fix when controls & muted

* update changelog

* handle racing conditions when props are setted on exoplayer

* fix for setControls

* fix repeat

* comment why postDelayed

* remove extra whitespace

* remove rnpm

* 4.4.4

* Update README.md

Make installation parts easier to link

* Update README.md

fix typo

* Update README.md

Make more obvious the changes needed via using diff

* Update MainApplication.java

fix indent

* remove matchingfallbacks in example

* prepare 5.0.0 version

* cpck androidx

* change minSdkVersion back to 16

(cherry picked from commit a96fa33)

* update readme

(cherry picked from commit 3ddcba3)

* add readme to migrating to AndroidX

(cherry picked from commit 976ebcc)

* cpck readme

* fix read me

(cherry picked from commit ed25b3f)

* chang maven to google

(cherry picked from commit 8a8f215)

* cpck

* ad platform installation to TOC

(cherry picked from commit b0737bd)

* More update info

(cherry picked from commit 2f23cc0)

* 5.0.1

* Fixed Exoplayer doesn't work with mute=true TheWidlarzGroup#1696

* Updated README.md to include instructions for React Native 0.60 and above

* Removing the call to observeValueForKeyPath:ofObject:change:context: on super from RCTVideo.
If the super class is not actually observing the key, the app will crash. Checking to see if
the super class responds to this selector doesn't solve this issue.

react-native-video github issue: TheWidlarzGroup#1515

Discussion about this particular problem: https://stackoverflow.com/questions/6574714/whats-wrong-with-this-observevalueforkeypathofobjectchangecontext-implement

* Updated CHANGELOG to reflect bug fix in PR 1720

* added support for automaticallyWaitsToMinimizeStalling property on iOS

* update readme

* fix invert boolean property

* bumped version & updated changelog

* fix formatting issues

* fix formatting
fix crash iOS9

* changelog for TheWidlarzGroup#1696

* Update issue templates

* Update bug_report.md

* Update bug_report.md

* Fix indent and respect previous rate

* Bring the basic example back to a runnable state

* 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

* Update changelog with Exoplayer update (TheWidlarzGroup#1766)

* update package json version

* update changelog version

* Add disableFocus to TOC

* fix typo in README

* Clear progress messages on STATE_IDLE and STATE_BUFFERING (TheWidlarzGroup#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.

* fix README about reportBandwidth (TheWidlarzGroup#1816)

* Fixes a situation when exiting fullscreen, where observed keypath values have not been released

* add try catch block around removal of observer keypaths on playerViewController

* Audio Poster issue fix (TheWidlarzGroup#1779)

* Add full screen support to Android Exoplayer (TheWidlarzGroup#1730)

* Bump version to 5.1.0-alpha

* Fix readme grammar (TheWidlarzGroup#1888)

* Improve Android Audio Focus (TheWidlarzGroup#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.

* Update changelog (TheWidlarzGroup#1913)

* docs(video): fix bufferConfig property name (TheWidlarzGroup#1855)

* Fix play/pause regression after added fullscreen support. (TheWidlarzGroup#1916)

* v5.1.0-alpha4

* Bump javascript dependencies (TheWidlarzGroup#1914)

Also update linting rules to match other community repositories.

* Add support for react-native Windows Cpp/WinRT (TheWidlarzGroup#1893)

This also deprecates the old react-native windows implementation

* Fix the `ref` sample code to remove the syntax error

* Update changelog

* v5.1.0-alpha5

* Don't set reactViewController view frame to whole screen (TheWidlarzGroup#1931)

this fixes the case on any time you have a react view that displays the video, but it's being rendered with controls but not as a full screen (ie. easily reproducible when you have a tabbar for instance - the reactViewController.view frame shouldnt be the whole screen bounds).

* Update onLoad event to include videoTracks info

* add mixWithOthers prop

* Update README.md

* Update index.ios.js

* Fix video dimensions for HLS streams

* Changelog

* Compare CGFloats instead

* Update CHANGELOG.md

* Update CHANGELOG, alpha-6 hasn't been released yet

* Implement pending seek

* Recommend npx pod-install for setup instructions

# Summary

We've been recommending devs use `npx pod-install` since it will attempt to install CocoaPods CLI if it's not available on the computer (cite [React Navigation setup guide](https://reactnavigation.org/docs/getting-started/#installing-dependencies-into-a-bare-react-native-project)). This has proved very useful for Expo users who are now migrating to the bare workflow and want to use community packages in their projects.

## Checklist

- [x] I have tested this on a device and a simulator
- [x] I added the documentation in `README.md`

* Expose currentPlaybackTime when live stream video (TheWidlarzGroup#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>

* [ios] Adaptive fullscreen in landscape by device orientation (TheWidlarzGroup#1862)

* update UIInterfaceOrientation in fullscreen

* update code

* Revert "[ios] Adaptive fullscreen in landscape by device orientation (TheWidlarzGroup#1862)" (TheWidlarzGroup#2043)

This reverts commit c9096d1.

* Upgrade exoplayer to 2.11.4 (TheWidlarzGroup#2034)

* Removed JS fullscreening for Android (TheWidlarzGroup#2013)

* Always set headers for iOS (TheWidlarzGroup#2014)

* Support preventsDisplaySleepDuringVideoPlayback (TheWidlarzGroup#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>

* Fix exoplayer aspect ratio update on source changes (TheWidlarzGroup#2053)

* Fix exoplayer aspect ratio update on source changes

* Update CHANGELOG.md

* Add iOS and Android basic DRM support (TheWidlarzGroup#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)

* Ready 5.1.0-alpha6 for release

* Prepare 5.1.0-alpha7

* Port over fix from 4.x branch

* Prepare 5.1.0-alpha8

* Bugfix: TheWidlarzGroup#1930

* Add ARM64 support for windows (TheWidlarzGroup#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

* Update README.md (TheWidlarzGroup#2076)

You only need to perform linking for React Native < 0.60

* fix: Xcode 12 compatibility (TheWidlarzGroup#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)

* Renaming Boolean etc to AsBoolean (TheWidlarzGroup#2119)

* Resolved an issue where setting a video to paused would ignore the “silent switch” setting

* iOS DRM Fixes for License Fetching (TheWidlarzGroup#2208)

* Update package.json version number to 5.1.1

* Update ReactNativeVideoCPP.vcxproj (TheWidlarzGroup#2288)

* Exoplayer: Use okhttp version specified in gradle.properties (TheWidlarzGroup#2340)

Because React Native uses okhttp, including exoplayer causes apps to use two different versions of okhttp.  This results in some unpredictable behavior.  Clients of `react-native-video` should be able to specify the same OKHTTP version to react-native and react-native video.

See where it's specified in react-native trunk: 
- https://github.com/facebook/react-native/blob/master/ReactAndroid/gradle.properties#L15
- https://github.com/facebook/react-native/blob/e1b6cd3f756aa034b11af6bf9960efb42bde8692/ReactAndroid/build.gradle#L452-L453

* React Native Windows updates (TheWidlarzGroup#2206)

Various updates for React Native Windows

**Docs**
* Fixed windows installation in readme
* Added local dev setup instructions

**Build**
* Added VS solutions for RNW 0.61, 0.62, and 0.63+
* Added clang-formatting definition

**Features**
* Fixed autolinking for RNW 0.63+
* Added support for `rate` property

**Examples**
* Upgraded examples/basic to RN 0.61 and replaced broken windows app

* Update README.md (TheWidlarzGroup#2292)

Fix broken link for ignoresilentswitch

* Fix AudoFocus pausing video when attempting to play (TheWidlarzGroup#2311)

Fix AudioFocus bug that could cause the player to stop responding to play/pause in some instances.

Fixes issue TheWidlarzGroup#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.

* Upgrade ExoPlayer to 2.13.2 (TheWidlarzGroup#2317)

Upgrade ExoPlayer from 2.11.4 to 2.13.2 and fix any issues related to the upgrade and deprecated method use.

* update exoplayer to allow pre-init and content clear

* Fix for tvOS native audio menu language selector

* Release 5.2.0-alpha1

* Typo

* Release 5.2.0

* Use prop types from `deprecated-react-native-prop-types`

Starting with React Native 0.68, using Prop Types from `react-native` emits a warning.

* Update Video.js

Co-authored-by: Elliott Kember <elliott.kember@gmail.com>
# Conflicts:
#	Video.js

* Replace Image.propTypes with ImagePropTypes.
# Conflicts:
#	Video.js

* fix(Exoplayer): fix exoplayer version tà 2.13.3

* chore: fix build without exoplayer

* v5.2.1

* docs: update Android installation

* * removed duplicate method

* * fix onRemotePlayPause in android

* * remove duplicate code

* * fix cannot find symbol after RN update

---------

Co-authored-by: Kurt Johnson <kurt.johnson@lightmaker.com>
Co-authored-by: Kurt Johnson <kurtjohnson8@gmail.com>
Co-authored-by: vok <admin@MacOnes-MacBook-Pro-2.local>
Co-authored-by: Zaid Daghestani <zaid.daghestani@gmail.com>
Co-authored-by: Jens Andersson <jens@fritan.com>
Co-authored-by: Daniel Mariño Ruiz <1237997+CHaNGeTe@users.noreply.github.com>
Co-authored-by: Daniel Mariño <daniel.marino@24imedia.com>
Co-authored-by: Ash Mishra <a.mishra@nfb.ca>
Co-authored-by: Andrew Chae <asjchae@gmail.com>
Co-authored-by: Jamie Halvorson <jamie@halvorson.co.uk>
Co-authored-by: Nahuel Marisi <nahuel.marisi@klarna.com>
Co-authored-by: Jovan Stanimirovic <jovan@netlog.com>
Co-authored-by: Benoit Dion <unknown>
Co-authored-by: Benoit Dion <573574+benoitdion@users.noreply.github.com>
Co-authored-by: Bader Serhan <baderserhan@gmail.com>
Co-authored-by: Tsukasa Setoguchi <tsukasa.setoguchi@gmail.com>
Co-authored-by: Learnyst <shankar@karaokegarage.com>
Co-authored-by: IbrahimSulai <33604125+IbrahimSulai@users.noreply.github.com>
Co-authored-by: Benoit Dion <benoit@eliteness.app>
Co-authored-by: Mohammed Salman <msal4@outlook.com>
Co-authored-by: Michael Tintiuc <michaeltintiuc@users.noreply.github.com>
Co-authored-by: Piotr Błażejewicz (Peter Blazejewicz) <peterblazejewicz@users.noreply.github.com>
Co-authored-by: Benoit Dion <benoitdion@gmail.com>
Co-authored-by: Di Da <dida@microsoft.com>
Co-authored-by: Brandon Faulkner <college.bfaulk96@yahoo.com>
Co-authored-by: Marlon Andrade <marlonmandrade@gmail.com>
Co-authored-by: Hampton Maxwell <me@hamptonmaxwell.com>
Co-authored-by: Harrison Mendonça <harrisonmendonca@gmail.com>
Co-authored-by: Evan Bacon <baconbrix@gmail.com>
Co-authored-by: Param Aggarwal <paramaggarwal@gmail.com>
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>
Co-authored-by: Tuan Luong <tuanluong.it@gmail.com>
Co-authored-by: limaAniceto <lima.aniceto@gmail.com>
Co-authored-by: Anders Lemke <mail@anderslemke.dk>
Co-authored-by: Anton Tanderup <antontandrup@gmail.com>
Co-authored-by: Jeferson Daniel <contato@jefersondaniel.com>
Co-authored-by: Daniel Mariño <35027703+danielmarino24i@users.noreply.github.com>
Co-authored-by: Hampton Maxwell <hmaxwell@ellation.com>
Co-authored-by: Nick Fujita <nickfujita@gmail.com>
Co-authored-by: redspear <willkoia@gmail.com>
Co-authored-by: Adam Gorman <namrog84@users.noreply.github.com>
Co-authored-by: Irwin <irwinwilliams@users.noreply.github.com>
Co-authored-by: Radek Czemerys <7029942+radko93@users.noreply.github.com>
Co-authored-by: Tero Paananen <54746036+tero-paananen@users.noreply.github.com>
Co-authored-by: Cameron Perry <cameron.perry@valtech.com>
Co-authored-by: Alexander Sklar <asklar@microsoft.com>
Co-authored-by: Sean Holbert <sdholbs@gmail.com>
Co-authored-by: Jon Thysell <thysell@gmail.com>
Co-authored-by: Milan Susnjar <milanrs@gmail.com>
Co-authored-by: Armands Malejev <armands.malejevs@gmail.com>
Co-authored-by: Jonas Dalesjö <jonas.dalesjo@gmail.com>
Co-authored-by: Shane Mckenna <shanemckennadev@gmail.com>
Co-authored-by: Renaud Chaput <renchap@gmail.com>
Co-authored-by: olivier bouillet <olivier.bouillet@ifeelsmart.com>
Co-authored-by: Omar Diop <accounts@omardiop.com>
Co-authored-by: Olivier Bouillet <62574056+freeboub@users.noreply.github.com>
Co-authored-by: ARTSOFT\csillaj <jenei_csilla@yahoo.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.