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(2)android] setCategory:AVAudioSessionCategoryAmbient error:nil]; // allow ... }
如果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 = { this。loadStart } //視訊開始載入時的回撥 onLoad = { this。setDuration } //視訊載入時的回撥 onProgress = { this。時刻設定 } //回撥每250毫秒〜與currentTime的 onEnd = { 此。onEnd } //播放完成時的回撥 onError = { this。videoError } //當視訊無法載入時,在 CallBuffer = { this。onBuffer } //當遠端視訊正在緩衝時,回撥 onTimedMetadata = { this。onTimedMetadata } //當流接收到一些元資料
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 = { this。loadStart } //視訊開始載入時的回撥 onLoad = { this。setDuration } //視訊載入時的回撥 onProgress = { this。時刻設定 } //回撥每250毫秒〜與currentTime的 onEnd = {此。onEnd } //播放完成時的回撥 onError = { this。videoError } //視訊無法載入時回撥 style = { styles。backgroundVideo } / >
在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 資料夾,修