Go to file
Stanisław Chmiela 7e360f4d99 Merge pull request #205 from bcalik/orientation-feature
[iOS] Added orientation to onLoad event.
2016-05-01 18:36:29 +02:00
android Merge pull request #126 from jpgarcia/master 2016-02-02 15:50:51 -08:00
Examples/VideoPlayer fix screenPhysicalPixels error 2016-04-19 16:33:27 +08:00
RCTVideo.xcodeproj Minor fixes 2016-04-01 11:13:01 +02:00
.eslintrc Example fix, test script, and some refactoring 2016-01-31 20:13:48 -08:00
.gitignore [git] Ignore .gradle/ 2015-12-08 02:45:37 -08:00
LICENSE Add license 2016-03-24 19:43:09 -07:00
package.json Beta release 2016-04-12 14:34:18 -04:00
RCTVideo.h Implement delegate in RCTVideo 2016-04-01 10:52:05 +02:00
RCTVideo.m coding style fixes 2016-05-01 18:26:56 +03:00
RCTVideoManager.h Initial commit 2015-03-30 22:07:55 -07:00
RCTVideoManager.m Add option for listening to fullscreen player events 2016-03-31 21:35:10 +02:00
RCTVideoPlayerViewController.h Minor fixes 2016-04-01 11:13:01 +02:00
RCTVideoPlayerViewController.m Use the delegate in controller 2016-04-01 10:51:31 +02:00
RCTVideoPlayerViewControllerDelegate.h Add new RCTVideoPlayerViewControllerDelegate protocol 2016-04-01 10:51:02 +02:00
react-native-video.podspec react-native-video works on iOS 7.0 2016-04-07 16:55:42 -07:00
README.md README: prevent blocking outside music 2016-04-28 21:40:46 -07:00
UIView+FindUIViewController.h Move View Controller retrieval to external UIView category 2016-03-31 20:51:22 +02:00
UIView+FindUIViewController.m Move View Controller retrieval to external UIView category 2016-03-31 20:51:22 +02:00
Video.js Use API instead of prop to show and hide fullscreen player 2016-04-01 11:12:50 +02:00
VideoResizeMode.js Example fix, test script, and some refactoring 2016-01-31 20:13:48 -08:00

react-native-video

A

Requires react-native >= 0.19.0

Add it to your project

Run npm install react-native-video --save

iOS

Install rnpm and run rnpm link react-native-video

If you would like to allow other apps to play music over your video component, add:

AppDelegate.m

#import <AVFoundation/AVFoundation.h>  // import

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
  ...
  [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryAmbient error:nil];  // allow
  ...
}

Android

First, copy your video file to android/app/src/main/res/raw/, then make the following additions to the given files:

android/settings.gradle

include ':RCTVideo', ':app'
project(':RCTVideo').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-video/android')

android/app/build.gradle

dependencies {
   ...
   compile project(':RCTVideo')
}

MainActivity.java

On top, where imports are:

import com.brentvatne.react.ReactVideoPackage;

Under .addPackage(new MainReactPackage()):

.addPackage(new ReactVideoPackage())

Usage

// 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.
<Video source={{uri: "background"}} // Can be a URL or a local file.
       rate={1.0}                   // 0 is paused, 1 is normal.
       volume={1.0}                 // 0 is muted, 1 is normal.
       muted={false}                // Mutes the audio entirely.
       paused={false}               // Pauses playback entirely.
       resizeMode="cover"           // Fill the whole screen at aspect ratio.
       repeat={true}                // Repeat forever.
       onLoadStart={this.loadStart} // Callback when video starts to load
       onLoad={this.setDuration}    // Callback when video loads
       onProgress={this.setTime}    // Callback every ~250ms with currentTime
       onEnd={this.onEnd}           // Callback when playback finishes
       onError={this.videoError}    // Callback when video cannot be loaded
       style={styles.backgroundVideo} />

// Later on in your styles..
var styles = StyleSheet.create({
  backgroundVideo: {
    position: 'absolute',
    top: 0,
    left: 0,
    bottom: 0,
    right: 0,
  },
});

Static Methods

seek(seconds)

Seeks the video to the specified time (in seconds). Access using a ref to the component

Examples

  • See an Example integration in react-native-login *note that this example uses an older version of this library, before we used export default -- if you use require you will need to do require('react-native-video').default as per instructions above.

  • Try the included VideoPlayer example yourself:

    git clone git@github.com:brentvatne/react-native-video.git
    cd react-native-video/Examples/VideoPlayer
    npm install
    open VideoPlayer.xcodeproj
    
    

    Then Cmd+R to start the React Packager, build and run the project in the simulator.

TODOS

  • Add support for captions
  • Add support for playing multiple videos in a sequence (will interfere with current repeat implementation)
  • Callback to get buffering progress for remote videos
  • Bring API closer to HTML5 <Video> reference

MIT Licensed