2015-03-30 22:07:55 -07:00
## react-native-video
A < Video > component for react-native, as seen in
2015-06-25 12:47:57 -07:00
[react-native-login ](https://github.com/brentvatne/react-native-login )!
2015-03-30 22:51:58 -07:00
2016-03-24 19:40:04 -07:00
Requires react-native >= 0.19.0
2015-06-10 10:28:51 -07:00
2015-03-30 22:51:58 -07:00
### Add it to your project
2015-12-08 02:37:15 -08:00
Run `npm install react-native-video --save`
#### iOS
1. Open your project in XCode, right click on `Libraries` and click `Add Files to "Your Project Name"`
2015-06-01 20:16:59 +09:00
*   (use the RCTVideo project rather than the one pictured in screenshot).
2015-12-08 02:37:15 -08:00
2. Add `libRTCVideo.a` to `Build Phases -> Link Binary With Libraries`
2015-06-25 11:39:36 +09:00
.
2015-12-08 02:37:15 -08:00
3. Add `.mp4` video file to project and to `Build Phases -> Copy Bundle Resources`
4. Whenever you want to use it within React code now you can: `var Video =
2016-03-24 19:40:04 -07:00
require('react-native-video').default;` or just ` import Video from 'react-native-video'`.
2015-03-30 22:51:58 -07:00
2015-12-08 02:37:15 -08:00
#### Android
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:
```java
import com.brentvatne.react.ReactVideoPackage;
```
Under `.addPackage(new MainReactPackage())` :
```java
.addPackage(new ReactVideoPackage())
```
2015-03-30 22:51:58 -07:00
2015-05-12 18:11:14 -05:00
## Usage
2015-03-30 22:51:58 -07:00
```javascript
// Within your render function, assuming you have a file called
2015-04-04 17:57:35 -07:00
// "background.mp4" in your project. You can include multiple videos
// on a single screen if you like.
2015-04-08 12:05:46 -07:00
< 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.
2015-06-25 19:24:47 +05:30
onLoadStart={this.loadStart} // Callback when video starts to load
2015-04-11 14:38:42 -07:00
onLoad={this.setDuration} // Callback when video loads
onProgress={this.setTime} // Callback every ~250ms with currentTime
onEnd={this.onEnd} // Callback when playback finishes
2015-06-25 19:24:47 +05:30
onError={this.videoError} // Callback when video cannot be loaded
2015-04-07 20:44:06 -07:00
style={styles.backgroundVideo} />
2015-03-30 22:51:58 -07:00
// Later on in your styles..
2016-02-28 11:50:45 -05:00
var styles = StyleSheet.create({
2015-03-30 22:51:58 -07:00
backgroundVideo: {
position: 'absolute',
top: 0,
left: 0,
bottom: 0,
right: 0,
},
});
2015-03-30 22:57:04 -07:00
```
2015-12-08 02:37:15 -08:00
2015-06-25 19:24:47 +05:30
## Static Methods
`seek(seconds)`
Seeks the video to the specified time (in seconds). Access using a ref to the component
2015-03-30 22:51:58 -07:00
2015-05-12 18:11:14 -05:00
## Examples
2016-03-24 19:40:04 -07:00
- See an [Example integration][1] 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.
2015-05-12 18:11:14 -05:00
- Try the included [VideoPlayer example][2] yourself:
```sh
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.
2015-03-30 23:06:54 -07:00
## TODOS
2015-04-05 10:26:40 -07:00
- [ ] Add support for captions
2015-04-05 10:25:04 -07:00
- [ ] Add support for playing multiple videos in a sequence (will interfere with current `repeat` implementation)
2015-04-10 09:26:49 -07:00
- [ ] Callback to get buffering progress for remote videos
2015-04-11 14:40:49 -07:00
- [ ] Bring API closer to HTML5 `<Video>` [reference ](http://www.w3schools.com/tags/ref_av_dom.asp )
2015-05-12 18:11:14 -05:00
[1]: https://github.com/brentvatne/react-native-login/blob/56c47a5d1e23781e86e19b27e10427fd6391f666/App/Screens/UserInfoScreen.js#L32 -L35
[2]: https://github.com/brentvatne/react-native-video/tree/master/Examples/VideoPlayer
2015-05-17 11:40:23 -07:00
---
**MIT Licensed**