0513930399
Not sure if this something you will want – perhaps it could go behind a flag. When animating video size, the default system animation makes the rendered size of the video lag behind the bounds of the react view. This patch disables the default animation, ensuring the video renders at the correct size. |
||
---|---|---|
Examples/VideoPlayer | ||
RCTVideo.xcodeproj | ||
.gitignore | ||
package.json | ||
RCTVideo.h | ||
RCTVideo.m | ||
RCTVideoManager.h | ||
RCTVideoManager.m | ||
README.md | ||
Video.android.js | ||
Video.ios.js | ||
VideoResizeMode.js | ||
VideoStylePropTypes.js |
react-native-video
A
Requires react-native >= 0.4.4
Add it to your project
- Run
npm install react-native-video --save
- Open your project in XCode, right click on
Libraries
and clickAdd Files to "Your Project Name"
- Add
libRTCVideo.a
toBuild Phases -> Link Binary With Libraries
. - Add
.mp4
video file to project and toBuild Phases -> Copy Bundle Resources
- 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