Go to file
Jason Brown b499d9e0b3 Absolute positioning of all 0s was with TouchableOpacity using Animated.View, need to also specify that the Animate.View is full screen as well.
Upgraded to .10rc and .60, also added RCTWebSocket to the Xcode project since it wasn't there.
2015-08-24 23:03:55 -07: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 Fix imports and bump sample project to 0.8.0 2015-07-28 15:46:05 -07:00
package.json Bump version for 0.10.0-rc compat 2015-08-23 20:24:15 -07: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.ios.js breaks on react native 0.9.0-rc if you modify props, instead create a new object 2015-08-07 22:35:57 -07: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