A VLCPlayer component for react-native
project clone from react-native-yz-vlcplayer
- Use yarn
yarn add @nghinv/react-native-vlc- Use npm
npm install @nghinv/react-native-vlc-
react-native-vector-icons
-
react-native-slider
-
With autolinking (react-native 0.60+)
-
Pre 0.60
Run
react-native link @nghinv/react-native-vlc
- With autolinking (react-native 0.60+)
Run
cd ios && pod install
- Pre 0.60
Use framework
-
cd to ios
-
run
pod init -
add
pod 'MobileVLCKit', '3.3.10'to pod file -
run
pod install
- Enable Bitcode
In root project select Build Settings ---> find Bitcode and select Enable Bitcode
- Remove DSYM
In root project select Build Settings --> Build Options --> Debug Information is set to DWARF.
(1) import { VLCPlayer, VlCPlayerView } from '@nghinv/react-native-vlc';
(2)
<VLCPlayer
ref={ref => (this.vlcPlayer = ref)}
style={[styles.video]}
videoAspectRatio="16:9"
paused={this.state.paused}
source={{ uri: this.props.uri}}
onProgress={this.onProgress.bind(this)}
onEnd={this.onEnded.bind(this)}
onBuffering={this.onBuffering.bind(this)}
onError={this._onError}
onStopped={this.onStopped.bind(this)}
onPlaying={this.onPlaying.bind(this)}
onPaused={this.onPaused.bind(this)}
/>
(3) or use
<VlCPlayerView
autoplay={false}
url={this.state.url}
Orientation={Orientation}
BackHandle={BackHandle}
showTitle={true}
title=""
showBack={true}
onLeftPress={()=>{}}
startFullScreen={() => {
this.setState({
isFull: true,
});
}}
closeFullScreen={() => {
this.setState({
isFull: false,
});
}}
/>| Property | Type | Default | Description |
|---|---|---|---|
| rate | number |
||
| seek | number |
||
| resume | boolean |
||
| position | number |
||
| snapshotPath | string |
||
| paused | boolean |
||
| autoAspectRatio | boolean |
||
| videoAspectRatio | string |
16:9 |
|
| volume | number |
from 0 to 200 | |
| volumeUp | number |
||
| volumeDown | number |
||
| repeat | boolean |
||
| muted | boolean |
||
| hwDecoderForced | number |
0, 1 |
(Only android) need use with hwDecoderForced |
| hwDecoderEnabled | number |
0, 1 |
Only android) need use with hwDecoderEnabled |
| style | ViewStyle |
||
| onVideoLoadStart | func |
||
| onVideoStateChange | func |
||
| onVideoProgress | func |
||
| onSnapshot | func |
||
| onIsPlaying | func |
||
| onOpen | func |
||
| onLoadStart | func |
||
| source | oject, number |
||
| play | func |
||
| snapshot | func |
||
| onError | func |
||
| onProgress | func |
{ currentTime:1000,duration:1000 } unit:ms | |
| onEnded | func |
||
| onStopped | func |
||
| onPlaying | func |
||
| onPaused | func |
||
| scaleX | number |
||
| scaleY | number |
||
| translateX | number |
||
| translateY | number |
||
| rotation | number |
| Property | Type | Default | Description |
|---|---|---|---|
| style | ViewStyle |
||
| videoStyle | ViewStyle |
||
| initPaused | boolean |
false | |
| source | oject, number |
{ uri: 'http:...' } |
|
| seek | number |
0 | |
| playInBackground | boolean |
false | |
| isAd | boolean |
false | |
| showAd | boolean |
false | |
| adUrl | string |
||
| autoplay | boolean |
true | |
| fullVideoAspectRatio | string |
||
| videoAspectRatio | string |
||
| errorTitle | string |
Video playback error, please reload |
|
| height | number |
250 | |
| url | string |
url of video | |
| showBack | boolean |
false | |
| showTitle | boolean |
false | |
| title | string |
||
| showGoLive | boolean |
false | |
| showLeftButton | boolean |
true | |
| showMiddleButton | boolean |
true | |
| showRightButton | boolean |
true | |
| animationLayout | boolean |
true | |
| titleGolive | string |
Go live |
show when showGoLive true |
| onEnd | func |
||
| onAdEnd | func |
||
| startFullScreen | func |
||
| closeFullScreen | func |
||
| onLeftPress | func |
||
| onGoLivePress | func |
||
| onReplayPress | func |
||
| onVLCProgress | func |
||
| onVLCEnded | func |
||
| onVLCError | func |
||
| onVLCBuffering | func |
||
| BackHandle | undefined |
BackAndroid | |
| Orientation | undefined |
react-native-orientation-locker |
Supported formats mp4, m3u8, flv,mov, rtsp, rtmp, etc.

