diff --git a/.github/actions/setup-bun/action.yml b/.github/actions/setup-bun/action.yml new file mode 100644 index 00000000..91390992 --- /dev/null +++ b/.github/actions/setup-bun/action.yml @@ -0,0 +1,34 @@ +name: setup bun +description: Setup bun and install dependencies + +inputs: + working-directory: + description: 'working directory for action' + default: ./ + required: false + +runs: + using: composite + steps: + - name: Setup Bun + uses: oven-sh/setup-bun@v1 + with: + bun-version: 1.0.4 + + - name: Cache dependencies + id: bun-cache + uses: actions/cache@v3 + with: + path: | + **/node_modules + key: ${{ runner.os }}-bun-${{ hashFiles('**/bun.lockb') }}-${{ hashFiles('**/package.json') }} + restore-keys: | + ${{ runner.os }}-bun-${{ hashFiles('**/bun.lockb') }} + ${{ runner.os }}-bun- + + - name: Install dependencies + working-directory: github.event.inputs.working-directory + if: steps.bun-cache.outputs.cache-hit != 'true' + run: bun install + shell: bash + \ No newline at end of file diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 4ade3875..4f0b43f3 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -3,6 +3,7 @@ on: [push, pull_request] jobs: build: runs-on: ubuntu-latest + steps: - uses: actions/checkout@v3 - uses: actions/setup-node@v3 diff --git a/.github/workflows/deploy-docs.yml b/.github/workflows/deploy-docs.yml new file mode 100644 index 00000000..76f55f9e --- /dev/null +++ b/.github/workflows/deploy-docs.yml @@ -0,0 +1,46 @@ + +name: deploy docs +on: + workflow_dispatch: + push: + branches: + - master + paths: + - '.github/workflows/deploy-docs.yml' + - 'docs/**' + +jobs: + deploy-docs: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v3 + + - name: Setup + uses: ./.github/actions/setup-bun + with: + working-directory: ./docs + + - name: Cache build + uses: actions/cache@v3 + with: + path: | + docs/.next/cache + key: ${{ runner.os }}-nextjs-${{ hashFiles('**/bun.lockb') }}-${{ hashFiles('**/package.json') }} + restore-keys: | + ${{ runner.os }}-nextjs-${{ hashFiles('**/bun.lockb') }} + ${{ runner.os }}-nextjs- + + - name: Build docs + run: | + bun --cwd docs build + touch docs/out/.nojekyll + + - name: Deploy docs to GitHub Pages + uses: JamesIves/github-pages-deploy-action@v4 + with: + branch: gh-pages + folder: docs/out + +permissions: + contents: write \ No newline at end of file diff --git a/API.md b/API.md deleted file mode 100644 index b1b25899..00000000 --- a/API.md +++ /dev/null @@ -1,1947 +0,0 @@ -## Table of Contents - -* [Installation](#installation) - * [iOS](#ios-installation) - * [tvOS](#tvos-installation) - * [Android](#android-installation) - * [Windows](#windows-installation) -* [Examples](#examples) - * [iOS](#ios-example) - * [Android](#android-example) - * [Windows](#windows-example) -* [Usage](#usage) -* [iOS App Transport Security](#ios-app-transport-security) -* [Audio Mixing](#audio-mixing) -* [Android Expansion File Usage](#android-expansion-file-usage) -* [Updating](#updating) -* [Contributing](#contributing) - -## Installation - -Using npm: - -```shell -npm install --save react-native-video -``` - -or using yarn: - -```shell -yarn add react-native-video -``` - -Then follow the instructions for your platform to link react-native-video into your project: - -### iOS installation -
- iOS details - -#### Standard Method - -**React Native 0.60 and above** - -Run `npx pod-install`. Linking is not required in React Native 0.60 and above. - -**React Native 0.59 and below** - -Run `react-native link react-native-video` to link the react-native-video library. - -#### Enable Static Linking for dependencies in your ios project Podfile - -Add `use_frameworks! :linkage => :static` just under `platform :ios` in your ios project Podfile. - -[See the example ios project for reference](examples/basic/ios/Podfile#L5) - -#### Using CocoaPods (required to enable caching) - -Setup your Podfile like it is described in the [react-native documentation](https://facebook.github.io/react-native/docs/integration-with-existing-apps#configuring-cocoapods-dependencies). - -Depending on your requirements you have to choose between the two possible subpodspecs: - -Video only: - -```diff - pod 'Folly', :podspec => '../node_modules/react-native/third-party-podspecs/Folly.podspec' -+ `pod 'react-native-video', :path => '../node_modules/react-native-video/react-native-video.podspec'` -end -``` - -Video with caching ([more info](docs/caching.md)): - -```diff - pod 'Folly', :podspec => '../node_modules/react-native/third-party-podspecs/Folly.podspec' -+ `pod 'react-native-video/VideoCaching', :path => '../node_modules/react-native-video/react-native-video.podspec'` -end -``` - -#### Enable custom feature in podfile file - -##### Google IMA - -Google IMA is the google SDK to support Client Side Ads Integration (CSAI), see [google documentation](https://developers.google.com/interactive-media-ads/docs/sdks/ios/client-side) for more informations. - -To enable google IMA usage define add following line in your podfile: -```podfile -$RNVideoUseGoogleIMA=true -``` - -
- -### tvOS installation -
- tvOS details - -`react-native link react-native-video` doesn’t work properly with the tvOS target so we need to add the library manually. - -First select your project in Xcode. - - - -After that, select the tvOS target of your application and select « General » tab - - - -Scroll to « Linked Frameworks and Libraries » and tap on the + button - - - -Select RCTVideo-tvOS - - -
- -### Android installation -
- Android details - -Linking is not required in React Native 0.60 and above. -If your project is using React Native < 0.60, run `react-native link react-native-video` to link the react-native-video library. - -Or if you have trouble, make the following additions to the given files manually: - -#### **android/settings.gradle** - -Add player source in build configuration - -```gradle -include ':react-native-video' -project(':react-native-video').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-video/android') -``` - -#### **android/app/build.gradle** - -From version >= 5.0.0, you have to apply these changes: - -```diff -dependencies { - ... - compile project(':react-native-video') -+ implementation "androidx.appcompat:appcompat:1.0.0" -- implementation "com.android.support:appcompat-v7:${rootProject.ext.supportLibVersion}" - -} -``` - -#### **android/gradle.properties** - -Migrating to AndroidX (needs version >= 5.0.0): - -```gradle.properties -android.useAndroidX=true -android.enableJetifier=true -``` - -#### **MainApplication.java** - -If using com.facebook.react.PackageList to auto import native dependencies, there are no updates required here. Please see the android example project for more details. -/examples/basic/android/app/src/main/java/com/videoplayer/MainApplication.java - -##### For manual linking - -On top, where imports are: - -```java -import com.brentvatne.react.ReactVideoPackage; -``` - -Add the `ReactVideoPackage` class to your list of exported packages. - -```java -@Override -protected List getPackages() { - return Arrays.asList( - new MainReactPackage(), - new ReactVideoPackage() - ); -} -``` - -#### Enable custom feature in gradle file - -##### Enable client side ads insertion -To enable client side ads insertion CSAI with google IMA SDK, you need to enable it in your gradle file. - -```gradle -buildscript { - ext { - ... - RNVUseExoplayerIMA = true - ... - } -} -``` -
- -### Windows installation -
- Windows RNW C++/WinRT details - -#### Autolinking - -**React Native Windows 0.63 and above** - -Autolinking should automatically add react-native-video to your app. - -#### Manual Linking - -**React Native Windows 0.62** - -Make the following additions to the given files manually: - -##### **windows\myapp.sln** - -Add the _ReactNativeVideoCPP_ project to your solution (eg. `windows\myapp.sln`): - -1. Open your solution in Visual Studio 2019 -2. Right-click Solution icon in Solution Explorer > Add > Existing Project... -3. Select `node_modules\react-native-video\windows\ReactNativeVideoCPP\ReactNativeVideoCPP.vcxproj` - -##### **windows\myapp\myapp.vcxproj** - -Add a reference to _ReactNativeVideoCPP_ to your main application project (eg. `windows\myapp\myapp.vcxproj`): - -1. Open your solution in Visual Studio 2019 -2. Right-click main application project > Add > Reference... -3. Check _ReactNativeVideoCPP_ from Solution Projects - -##### **pch.h** - -Add `#include "winrt/ReactNativeVideoCPP.h"`. - -##### **app.cpp** - -Add `PackageProviders().Append(winrt::ReactNativeVideoCPP::ReactPackageProvider());` before `InitializeComponent();`. - -**React Native Windows 0.61 and below** - -Follow the manual linking instuctions for React Native Windows 0.62 above, but substitute _ReactNativeVideoCPP61_ for _ReactNativeVideoCPP_. - -
- -## Examples - -Run `yarn xbasic install` in the root directory before running any of the examples. - -### iOS Example -``` -yarn xbasic ios -``` - -### Android Example -``` -yarn xbasic android -``` - -### Windows Example -``` -yarn xbasic windows -``` - -## Usage - -```javascript -// Load the module - -import Video from 'react-native-video'; - -// Within your render function, assuming you have a file called -// "background.mp4" in your project. You can include multiple videos -// on a single screen if you like. - -