2015-03-30 23:07:55 -06:00
|
|
|
## react-native-video
|
|
|
|
|
|
|
|
A <Video> component for react-native, as seen in
|
|
|
|
[react-native-login](https://github.com/brentvatne/react-native-login).
|
2015-03-30 23:51:58 -06:00
|
|
|
|
|
|
|
### Add it to your project
|
|
|
|
|
2015-04-23 12:55:42 -06:00
|
|
|
1. Run `npm install react-native-video --save`
|
2015-03-30 23:51:58 -06:00
|
|
|
2. Open your project in XCode, right click on `Libraries` and click `Add
|
2015-04-23 12:55:42 -06:00
|
|
|
Files to "Your Project Name"`
|
|
|
|
[(Screenshot)](http://url.brentvatne.ca/jQp8) then
|
|
|
|
[(Screenshot)](http://url.brentvatne.ca/1gqUD) (use the RCTVideo project
|
|
|
|
rather than the one pictured in screenshot).
|
2015-03-30 23:51:58 -06:00
|
|
|
3. Add `libRTCVideo.a` to `Build Phases -> Link Binary With Libraries`
|
|
|
|
[(Screenshot)](http://url.brentvatne.ca/g9Wp).
|
2015-05-12 17:11:14 -06:00
|
|
|
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 =
|
2015-03-30 23:51:58 -06:00
|
|
|
require('react-native-video');`
|
|
|
|
|
|
|
|
|
2015-05-12 17:11:14 -06:00
|
|
|
## Usage
|
2015-03-30 23:51:58 -06:00
|
|
|
|
|
|
|
```javascript
|
|
|
|
// Within your render function, assuming you have a file called
|
2015-04-04 18:57:35 -06:00
|
|
|
// "background.mp4" in your project. You can include multiple videos
|
|
|
|
// on a single screen if you like.
|
2015-04-08 13:05:46 -06: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-04-11 15:38:42 -06:00
|
|
|
onLoad={this.setDuration} // Callback when video loads
|
|
|
|
onProgress={this.setTime} // Callback every ~250ms with currentTime
|
|
|
|
onEnd={this.onEnd} // Callback when playback finishes
|
2015-04-07 21:44:06 -06:00
|
|
|
style={styles.backgroundVideo} />
|
2015-03-30 23:51:58 -06:00
|
|
|
|
|
|
|
// Later on in your styles..
|
|
|
|
var styles = Stylesheet.create({
|
|
|
|
backgroundVideo: {
|
|
|
|
position: 'absolute',
|
|
|
|
top: 0,
|
|
|
|
left: 0,
|
|
|
|
bottom: 0,
|
|
|
|
right: 0,
|
|
|
|
},
|
|
|
|
});
|
2015-03-30 23:57:04 -06:00
|
|
|
```
|
2015-03-30 23:51:58 -06:00
|
|
|
|
2015-05-12 17:11:14 -06:00
|
|
|
## Examples
|
|
|
|
|
|
|
|
- See an [Example integration][1] in `react-native-login`.
|
|
|
|
- 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-31 00:06:54 -06:00
|
|
|
|
|
|
|
## TODOS
|
|
|
|
|
2015-04-05 11:25:04 -06:00
|
|
|
- [ ] Add some way to interface with `seekToTime`
|
2015-04-05 11:26:40 -06:00
|
|
|
- [ ] Add support for captions
|
2015-04-07 21:48:07 -06:00
|
|
|
- [ ] Support `require('video!...')`
|
2015-04-05 11:25:04 -06:00
|
|
|
- [ ] Add support for playing multiple videos in a sequence (will interfere with current `repeat` implementation)
|
2015-04-10 10:26:49 -06:00
|
|
|
- [ ] Callback to get buffering progress for remote videos
|
2015-04-11 15:40:49 -06:00
|
|
|
- [ ] Bring API closer to HTML5 `<Video>` [reference](http://www.w3schools.com/tags/ref_av_dom.asp)
|
2015-05-12 17:11:14 -06: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
|