1. 程式人生 > >react-native播放視訊元件 react-native-video的用法

react-native播放視訊元件 react-native-video的用法

它的用法很簡單。

1.安裝

依次執行下面兩個命令,

npm i -S react-native-video

react-native link            (這一步是連線本地視訊庫)

(1) ios:

如果您想允許其他應用在您的視訊元件上播放音樂,請新增:

AppDelegate.m

#import <AVFoundation/AVFoundation.h>  // import

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
  ...
  [[AVAudioSession sharedInstance
] setCategory:AVAudioSessionCategoryAmbient error:nil]; // allow ... }
(2)android

如果link失敗的話需要執行下面的操作:

android/ settings.gradle

include ':react-native-video'
project(':react-native-video').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-video/android')

build.gradle

dependencies
{ ... compile project(':react-native-video') }

MainApplication.java

匯入:

import  com.brentvatne.react.ReactVideoPackage ;

ReactVideoPackage新增到匯出的包列表中。

@Override 
protected  List < ReactPackage > getPackages(){
     return  Arrays asList(
             new  MainReactPackage(),
             
new ReactVideoPackage() //新增這個 ); }

2.匯入元件

import Video from 'react-native-video';

3.使用:

<Video
ref={(ref: Video) => {
        this.video = ref
    }}/* For ExoPlayer *//* source={{ uri: 'http://www.youtube.com/api/manifest/dash/id/bf5bb2419360daf1/source/youtube?as=fmp4_audio_clear,fmp4_sd_hd_clear&sparams=ip,ipbits,expire,source,id,as&ip=0.0.0.0&ipbits=0&expire=19000000000&signature=51AF5F39AB0CEC3E5497CD9C900EBFEAECCCB5C7.8506521BFC350652163895D4C26DEE124209AA9E&key=ik0', type: 'mpd' }} */source={require('./video/bb.mp4')}style={styles.fullScreen}rate={this.state.rate}// 控制暫停/播放,0 代表暫停paused, 1代表播放normal.paused={false}volume={1}// 聲音的放大倍數,0 代表沒有聲音,就是靜音muted, 1 代表正常音量 normal,更大的數字表示放大的倍數muted={true}// true代表靜音,預設為false.resizeMode='cover'       // 視訊的自適應伸縮鋪放行為,onLoad={this.onLoad}// 當視訊載入完畢時的回撥函式onLoadStart={this.loadStart}// 當視訊開始載入時的回撥函式onProgress={this.onProgress}//  進度控制,每250ms呼叫一次,以獲取視訊播放的進度onEnd={this.onEnd}// 當視訊播放完畢後的回撥函式onError={this.videoError}// 當視訊不能載入,或出錯後的回撥函式onAudioBecomingNoisy={this.onAudioBecomingNoisy}onAudioFocusChanged={this.onAudioFocusChanged}repeat={false}// 是否重複播放/>

這個是style樣式,僅供參考:

fullScreen: {
    position: 'absolute',
    top: 0,
    left: 0,
    bottom: 0,
    right: 0,
},

想要控制視訊的暫停和播放,可以設定paused,例如

paused={this.state.paused}
paused為true是暫停狀態,false是播放狀態
<Button title={this.state.paused === false ? '暫停' : '播放'}onPress={this._play}/>
_play() {
    this.setState({
        paused: !this.state.paused
})
}
上面的程式碼就是在視訊下放有個按鈕,是播放狀態的時候按鈕顯示 “暫停” 兩字,暫停的時候顯示“播放”。

點選按鈕改變this.state.paused的值,以此來控制視訊的播放和暫停。

source={require('這裡放視訊的路徑,使用方法跟圖片的一樣,也可以用網路上的視訊地址')}

還有一些常用方法:

volume = { 1.0 }                             // 0靜音,1是正常的。
       muted = { false }                            //完全靜音。
       paused = { false }                           //完全暫停播放。
       resizeMode =  cover                       //以縱橫比填充整個螢幕。* 
       repeat = { true }                            //永遠重複。
       playInBackground = { false }                 //當應用程式輸入背景音訊時,音訊繼續播放。
       playWhenInactive = { false }                 // [iOS]當顯示控制或通知中心時,視訊繼續播放。
       ignoreSilentSwitch = {  ignore  }            // [iOS] ignore | 服從 - 當'忽略'時,音訊仍然會播放與iOS硬靜音開關設定為靜音。當“服從”時,音訊將切換開關。當未指定時,將照常繼承音訊設定。
       progressUpdateInterval = { 250.0 }           // [iOS] Interval to fire onProgress(預設為 
       〜250ms  onLoadStart = { thisloadStart }             //視訊開始載入時的回撥 
       onLoad = { thissetDuration }                //視訊載入時的回撥 
       onProgress = { this時刻設定 }                //回撥每250毫秒〜與currentTime的 
       onEnd = { onEnd }                       //播放完成時的回撥 
       onError = { thisvideoError }                //當視訊無法載入時,在 
       CallBuffer = { thisonBuffer }                 //當遠端視訊正在緩衝時,回撥 
       onTimedMetadata = { thisonTimedMetadata }   //當流接收到一些元資料

Android擴充套件檔案使用

//在你的渲染功能,假設你有一個名為
// “background.mp4”在您的擴充套件檔案。只需新增主要和(如果適用)補丁版本
< Video source = {{uri  background ,mainVer 1,patchVer 0 }} //在給定的擴充套件版本中查詢.mp4檔案(background.mp4)。
       rate = { 1.0 }                    // 0暫停,1是正常的。
       volume = { 1.0 }                  // 0靜音,1是正常的。
       muted = { false }                 //完全靜音。
       paused = { false }                //完全暫停播放。
       resizeMode =  cover            //以縱橫比填充整個螢幕。
       repeat = { true }                 //永遠重複。
       onLoadStart = { thisloadStart } //視訊開始載入時的回撥 
       onLoad = { thissetDuration }     //視訊載入時的回撥 
       onProgress = { this時刻設定 }     //回撥每250毫秒〜與currentTime的 
       onEnd = {onEnd }            //播放完成時的回撥 
       onError = { thisvideoError }     //視訊無法載入時回撥 
       style = { stylesbackgroundVideo } / >

在iOS背景播放

要使音訊在iOS背景下播放,需要將音訊會話設定為AVAudioSessionCategoryPlayback

屬性和方法都在上面註釋的很清楚了

相關推薦

react-native播放視訊元件 react-native-video用法

它的用法很簡單。 1.安裝 依次執行下面兩個命令, npm i -S react-native-video react-native link            (這一步是連線本地視訊庫) (

react-native react-navigation的用法 react native 導航路由元件react-navigation的使用

  一、問題背景 react-navigation是react-native官方推薦的,基於Javascript的可擴充套件且使用簡單的導航,功能強大且完備   回顧一下,react-navigation包含以下功能來幫助我們建立導航器: StackN

React Native選擇器元件-react-native-slidepicker

react-native-slidepicker 一個純 JavaScript 實現的的 React Native 元件,用於如地址,時間等分類資料選擇的場景。 github: https://github.com/lexguy/react-native-slidepicker #### 效果 三

RN開源播放Video元件(react-native-video)

一. 專案介紹 該元件進行封裝成React Native平臺播放器Video元件,大家可以使用該元件進行播放視訊啦~不過支援React Native的版本最低0.19版本。 二. 1.1. 執行命令進行安裝 npm instal

開發一個基於React Native的簡易demo--視訊元件+佈局

一、視訊元件 yarn add --save react-native-video react-native link 編碼 import Video from 'react-native-video'; ... <Video r

React-Native開發五 React Native 的Image元件

1 Image元件介紹 RN中Image元件主要用於載入圖片,可載入靜態圖片,網路圖片,以及原生圖片,本地檔案系統中圖片資源 官方參考https://facebook.github.io/react-native/docs/image#resizemode 2 Image元件功

React-Native開發四 React Native 的Touchable元件

1 Touchable元件簡介 Touchable元件是RN的按鈕元件,一共有四大類 TouchableWithoutFeedback:不帶任何反饋的可觸控元件 TouchableHighlight:在TouchableWithoutFeedback的基礎上添加了當按下時背景會變

React Native圖片快取元件

今天介紹一個React Native的圖片快取元件 react-native-rn-cacheimage ,純JS實現,所以相容性很好。 大家都知道,其實React Native 的 Image 元件在 iOS 端實現了快取,而android 端仍未實現,而且,就算實現了 iOS端 ,可能有些需求仍然比較難

React Native 筆記之元件

React Native的元件 什麼是React Native 元件? React Native 都有哪些元件? 建立元件的三種方式 [元件的生命週期](https://react.docschina.org/docs/react-compone

基於React Native官方元件FlatList,增加可定製化“下拉重新整理”、“下拉載入更多”元件API的新列表元件react-native-refresh-loadmore-flatlist

react-native-refresh-loadmore-flatlist 基於React Native官方元件FlatList,增加可定製化“下拉重新整理”、“下拉載入更多”元件API的新列表元件,具體實現功能如下: 自定義下拉重新整理元件API 自定義上拉Lo

基於React Native實現的介面載入元件react-native-loadview

react-native-loadview 基於React Native實現的介面載入元件, Installation npm install react-native-loadview --save Import into your project import

基於React Native官方元件Image封裝的具備載入生命週期視覺反饋的元件react-native-loading-image

react-native-loading-image 基於React Native官方元件Image封裝的具備載入生命週期視覺反饋的元件,具體實現功能如下: 網路圖片Pending狀態渲染,提供閃爍動畫、loading.gif兩種方式 網路圖片Error狀態渲染

React-Native學習--輪播圖第三方元件-react-native-swiper

一.通過npm安裝react-native-swiper $ npm install react-native-swiper --save $ npm i react-timer-mixin --save 二.在專案中匯入 import Swiper from

react native的Navigator元件示例

import React, {Component} from 'react';import {ScrollView, StyleSheet, Text, View, PixelRatio} from 'react-native';import { Navigator } from 'react-native-

React Native關於ScrollableTabView元件

最近工作中使用ScrollableTabView元件的問題,實現如下圖所示的效果: render方法中判斷state中狀態,進行佈局控制 render(){ if(this.state.error){ return(

React-native】側滑元件 React-native-side-menu 的使用

本教程使用【側滑元件】 + 【模態層】 實現側滑顯示訊息列表並且點選顯示訊息詳情。 廢話不多說,先來效果圖 【側滑的元件效果比較簡陋,當然亦可是酷炫的頁面(類似qq側滑等)】: 元件介紹

React Native封裝原生元件釋出到npm

因為一個任務,要寫原生的獲取使用者手機資料夾,實現使用者自定義資料夾的功能,寫好了之後嘗試封裝成元件。1. 首先,有一個rn專案,用Adnroid Studio開啟 android -> app -> build.gradle如圖新建一個 Android Modu

react native 倒計時控制元件

1.npm install //in package.json "dependencies": { "react_native_countdowntimer":"1.0.2" } //in your js code import CountDownTimer fr

react-native開源元件react-native-wechat學習

import * as WeChat from 'react-native-wechat'; import fs from 'react-native-fs'; var resolveAssetSource = require('resolveAssetSource'); // along with Ima

React Native學習視訊與專案

視訊主要針對IOS方向,我本身是做Android的,對IOS有些瞭解,將視訊中的專案修改為可以在Android端執行 如果命令列啟動專案在模擬器上執行時,gradle配置很長時間,可以用Android Studio開啟專案中的android 資料夾,修