UNPKG

@imokhles/react-native-vlc

Version:

A `VLCPlayer` component for react-native project clone from `react-native-yz-vlcplayer`

206 lines (160 loc) 5.64 kB
# @imokhles/react-native-vlc A `VLCPlayer` component for react-native project clone from `react-native-yz-vlcplayer` # Installation ## Installing the package * Use yarn ```sh yarn add @imokhles/react-native-vlc ``` * Use npm ```sh npm install @imokhles/react-native-vlc ``` ### Dependencies - react-native-vector-icons - react-native-slider ## android * **With autolinking (react-native 0.60+)** * **Pre 0.60** > Run `react-native link @imokhles/react-native-vlc` ## ios * **With autolinking (react-native 0.60+)** > Run `cd ios && pod install` * **Pre 0.60** Use framework 1. cd to ios 2. run `pod init` 3. add `pod 'MobileVLCKit', '3.3.10'` to pod file 4. run `pod install` * **Enable Bitcode** In root project select Build Settings ---> find Bitcode and select Enable Bitcode ![](./images/bitcode.png) * **Remove DSYM** In root project select Build Settings --> Build Options --> Debug Information is set to DWARF. ![](./images/dsym.png) # Example ```javascript (1) import { VLCPlayer, VlCPlayerView } from '@imokhles/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 ## VLCPlayer component | 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` | | | ## VlCPlayerView component | 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 Supported formats mp4, m3u8, flv,mov, rtsp, rtmp, etc. ## Thanks [lumi-software](https://github.com/lumi-software/react-native-vlc)