Go to file
Baris Sencan 125b99deba [Video] Bind missing callbacks
Remove seek from state.
2015-11-11 13:34:41 -08:00
android [Android] Better code structure 2015-11-09 17:54:15 -08:00
Examples/VideoPlayer Absolute positioning of all 0s was with TouchableOpacity using Animated.View, need to also specify that the Animate.View is full screen as well. 2015-08-24 23:03:55 -07:00
RCTVideo.xcodeproj Add header search path for standalone build 2015-04-07 10:57:00 -07:00
.gitignore [npm][Android] Include RCTVideo.iml 2015-11-02 15:35:14 -08:00
package.json [npm] Typo fix 2015-11-02 15:36:46 -08:00
RCTVideo.h remove unused constants 2015-08-23 02:30:18 +02:00
RCTVideo.m remove unused constants 2015-08-23 02:30:18 +02:00
RCTVideoManager.h Initial commit 2015-03-30 22:07:55 -07:00
RCTVideoManager.m switch to returning an array from customDirectEventTypes, for RN 0.10.0 compatibility 2015-08-22 21:42:26 +02:00
README.md Merge pull request #64 from NishanthShankar/master 2015-06-26 10:46:16 -07:00
Video.android.js Fix imports and bump sample project to 0.8.0 2015-07-28 15:46:05 -07:00
Video.js [Video] Bind missing callbacks 2015-11-11 13:34:41 -08:00
VideoResizeMode.js Fix imports and bump sample project to 0.8.0 2015-07-28 15:46:05 -07:00

react-native-video

A

Requires react-native >= 0.4.4

Add it to your project

  1. Run npm install react-native-video --save
  2. Open your project in XCode, right click on Libraries and click Add Files to "Your Project Name"
    • Screenshot Screenshot (use the RCTVideo project rather than the one pictured in screenshot).
  3. Add libRTCVideo.a to Build Phases -> Link Binary With Libraries (Screenshot).
  4. Add .mp4 video file to project and to Build Phases -> Copy Bundle Resources
  5. Whenever you want to use it within React code now you can: var Video = require('react-native-video');

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.

  • 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 some way to interface with seekToTime
  • Add support for captions
  • Support require('video!...')
  • 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