首頁 web前端 js教程 react-native-video如何實現視訊全螢幕播放

react-native-video如何實現視訊全螢幕播放

Mar 20, 2018 am 09:26 AM
全螢幕 影片

react-native-video 是github上一個專用於React Native做影片播放的元件。這個組件是React Native上功能最全最好用的影片播放組件,還在持續開發之中,雖然還有些bug,但基本上不影響使用,強力推薦。本文主要和大家介紹了react-native-video實現影片全螢幕播放的方法,希望能幫助大家。

首先來看看react-native-video有哪些功能。

基本功能

  1. 控製播放速率

  2. 控制音量大小

  3. 支援靜音功能
  4. 支援播放和暫停
  5. #支援後台音訊播放
  6. 支援客製化樣式,例如設定寬高
  7. 豐富的事件調用,如onLoad,onEnd,onProgress,onBuffer等等,可以透過對應的事件進行UI上的客製化處理,如onBuffer時我們可以顯示一個進度條提示使用者影片正在緩衝。
  8. 支援全螢幕播放,使用presentFullscreenPlayer方法。這個方法在iOS上可行,在android上不起作用。參考 issue#534 ,#726也是同樣的問題。
  9. 支援跳轉進度,使用seek方法跳到指定的地方進行播放

#可以載入遠端視訊位址播放,也可以載入RN本地存放的影片。

注意事項

react-native-video透過source屬性設定視頻,播放遠端視訊時使用uri來設定視訊位址,如下:


source={{uri: http://www.xxx.com/xxx/xxx/xxx.mp4}}

播放本機影片時,使用方式如下:

source={require('../assets/video/turntable.mp4')}

需要注意的是,source屬性不能為空,uri或本地資源是必須設定的,否則會導致app閃退。 uri不能設定為空字串,必須是一個具體的位址。

安裝設定

使用npm i -S react-native-video 或yarn add react-native-video 安裝,完成後使用react-native link react-native -video 指令link這個函式庫。

Android端在執行完link指令後,gradle中就已經完成了設定。 iOS端還需要手動配置一下,這裡簡單說一下,與官方說明不同的是,我們一般不使用tvOS的,選中你自己的target,在build phases中先移除掉自動link進來的libRCTVideo.a 這個庫,然後點選下方加號重新加入libRCTVideo.a ,注意不要選錯。

影片播放

實作影片播放其實很簡單,我們只需要給Video元件設定一下source資源,然後設定style調整Video組件寬高就行了。

<Video
 ref={(ref) => this.videoPlayer = ref}
 source={{uri: this.state.videoUrl}}
 rate={1.0}
 volume={1.0}
 muted={false}
 resizeMode={&#39;cover&#39;}
 playWhenInactive={false}
 playInBackground={false}
 ignoreSilentSwitch={&#39;ignore&#39;}
 progressUpdateInterval={250.0}
 style={{width: this.state.videoWidth, height: this.state.videoHeight}}
/>

其中videoUrl是我們用來設定視訊位址的變量,videoWidth和videoHeight是用來控制視訊寬高的。

全螢幕播放的實作

影片全螢幕播放其實就是在橫螢幕情況下全螢幕播放,垂直螢幕一般都是非全螢幕的。要實現設備橫屏時視訊全螢幕顯示,說起來很簡單,就是透過改變Video組件寬高來實現。

上面我們把videoWidth和videoHeight存放在state中,目的就是為了透過改變兩個變數的值來刷新UI,讓影片寬高能隨之改變。問題是,怎樣在裝置的螢幕旋轉時及時取得到改變後的寬高呢?

垂直螢幕時我設定的影片初始寬度為裝置螢幕的寬度,高度為寬度的9/16,即以16:9的比例顯示。橫屏時視訊的寬度應為螢幕的寬度,高度應為目前螢幕的高度。由於橫屏時設備寬高發生了變化,及時獲取到寬高就能及時刷新UI,視頻就能全屏展示了。


剛開始我想到的辦法是使用react-native-orientation 監聽設備轉屏的事件,在回調方法中判斷當前是橫屏還是豎屏,這個在iOS上是可行的,但是在Android上橫屏和豎屏時獲取到寬高值總是不匹配的(比如,橫屏寬384高582,豎屏寬582高384,顯然不合理),這樣就無法做到統一處理。

所以,監聽轉螢幕的方案是不行的,不僅費時還得不到想要的結果。更好的方案是在render函數中使用View作為最底層容器,給它設置一個"flex:1"的樣式,使其充滿屏幕,在View的onLayout方法中獲取它的寬高。無論螢幕怎麼旋轉,onLayout都可以取得到目前View的寬高與x、y座標。

/// 屏幕旋转时宽高会发生变化,可以在onLayout的方法中做处理,比监听屏幕旋转更加及时获取宽高变化
 _onLayout = (event) => {
 //获取根View的宽高
 let {width, height} = event.nativeEvent.layout;
 console.log(&#39;通过onLayout得到的宽度:&#39; + width);
 console.log(&#39;通过onLayout得到的高度:&#39; + height);
 
 // 一般设备横屏下都是宽大于高,这里可以用这个来判断横竖屏
 let isLandscape = (width > height);
 if (isLandscape){
  this.setState({
  videoWidth: width,
  videoHeight: height,
  isFullScreen: true,
  })
 } else {
  this.setState({
  videoWidth: width,
  videoHeight: width * 9/16,
  isFullScreen: false,
  })
 }
 };
這樣就實現了螢幕在旋轉時影片也隨之改變大小,橫螢幕時全螢幕播放,垂直螢幕回歸正常播放。注意,Android和iOS需要設定轉屏功能才能讓介面自動旋轉,請自行查閱相關設定方法。

###播放控制#########上面實現了全螢幕播放還不夠,我們還需要一個工具列來控制影片的播放,例如顯示進度,播放暫停和全螢幕按鈕。具體思路如下:###
  1. 使用一個View將Video元件包起來,View的寬高和Video一致,方便轉屏時改變大小

  2. 設定一個透明的遮罩層覆蓋在Video組件上,點擊遮罩層顯示或隱藏工具列

  3. 工具列中要顯示播放按鈕、進度列、全螢幕按鈕、目前播放時間、影片總時長。工具列以絕對位置佈局,覆蓋在Video組件底部

  4. 使用react-native-orientation中的lockToPortrait和lockToLandscape方法強制旋轉螢幕,使用unlockAllOrientations在螢幕旋轉以後撤銷轉屏限制。

這樣才算是一個有模有樣的影片播放器。下面是垂直螢幕和橫屏的效果圖

#再也不必為presentFullscreenPlayer方法不起作用而煩惱了,全螢幕播放實現起來其實很簡單。具體程式碼請看demo: https://github.com/mrarronz/react-native-blog-examples/tree/master/Chapter7-VideoPlayer/VideoExample 。

#

以上是react-native-video如何實現視訊全螢幕播放的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Laravel 教程
1602
29
PHP教程
1505
276
ppt怎麼全螢幕放映? ppt一鍵全螢幕快捷鍵 ppt怎麼全螢幕放映? ppt一鍵全螢幕快捷鍵 Mar 16, 2024 pm 06:16 PM

  在辦公、學習的時候,經常用到ppt進行演示,為了進一步提高觀感,我們通常需要將ppt全屏演示。那麼ppt一鍵全螢幕快捷鍵是什麼呢? ppt如何全螢幕放映?下面就來看看具體教學。  ppt快捷鍵快捷鍵是最方便的全螢幕操作方式之一。只需開啟要全螢幕顯示的PPT文件,按下鍵盤上的「F5」鍵即可讓幻燈片全螢幕展示。這種一鍵全螢幕的方式非常簡單,無需浪費時間在選單選項上,透過簡單的鍵盤操作即可輕鬆完成。  2、此外,還可以使用其他快捷鍵。例如,按下「Shift F5」鍵,可以從目前投影片開始放映;按下&amp;

抖音發布他人影片侵權嗎?它怎麼剪輯影片不算侵權? 抖音發布他人影片侵權嗎?它怎麼剪輯影片不算侵權? Mar 21, 2024 pm 05:57 PM

隨著短影片平台的興起,抖音成為了大家日常生活中不可或缺的一部分。在抖音上,我們可以看到來自世界各地的有趣影片。有些人喜歡發布他人的視頻,這就引發了一個問題:抖音發布他人視頻侵權嗎?本文將圍繞這個問題展開討論,告訴大家怎樣剪輯影片不算侵權,以及如何避免侵權問題。一、抖音發布他人影片侵權嗎?根據我國《著作權法》的規定,未經著作權人許可,擅自使用其作品,屬於侵權行為。因此,在抖音上發布他人視頻,如果未經原作者或著作權人許可,就屬於侵權行為。二、怎樣剪輯影片不算侵權? 1.使用公共領域或授權的內容:公共

Wink如何去影片浮水印 Wink如何去影片浮水印 Feb 23, 2024 pm 07:22 PM

Wink如何去視訊浮水印?winkAPP中是有去除掉視訊浮水印的工具,但是多數的小伙伴不知道wink中如何去除掉視頻中的水印,接下來就是小編為玩家帶來的Wink視頻去水印方法圖文教程,有興趣的用戶快來一起看看吧! Wink如何去視訊浮水印1、先開啟winkAPP,在首頁面專區中選擇【去浮水印】功能;2、然後在相簿中選擇你需要去除水印的影片;3、接著選擇影片之後,剪輯影片之後點擊右上角【√】;4、最後點選如下圖的【一鍵去印】之後點選【處理】即可。

uc瀏覽器下載的視頻怎麼變成本地視頻 uc瀏覽器下載的視頻怎麼變成本地視頻 Feb 29, 2024 pm 10:19 PM

uc瀏覽器下載的影片怎麼變成本機影片?許多手機用戶都喜歡使用UC瀏覽器,不僅可用它進行網頁瀏覽,還可在線上觀看各種影片和電視節目,並將喜愛的影片下載至手機。實際上,我們可以將下載的視頻轉換為本地視頻,但很多人不清楚如何操作。因此,小編特地為大家帶來了將uc瀏覽器快取的影片轉為本地影片方法,希望可以幫助到各位。將uc瀏覽器快取的影片轉為本機影片方法1、開啟uc瀏覽器,點選「選單」選項。 2、點選「下載/影片」。 3、點選「已快取影片」。 4.長按任意一個視頻,彈出選項後,點選「開啟目錄」。 5.勾選要下載的

如何發布小紅書影片作品?發影片要注意什麼? 如何發布小紅書影片作品?發影片要注意什麼? Mar 23, 2024 pm 08:50 PM

隨著短影片平台的興起,小紅書成為了許多人分享生活、表達自我、獲取流量的平台。在這個平台上,發布影片作品是一種非常受歡迎的互動方式。那麼,如何發布小紅書影片作品呢?一、如何發布小紅書影片作品?首先,確保準備好一段適合分享的影片內容。你可以利用手機或其他攝影設備拍攝,需要注意畫質和聲音的清晰度。 2.剪輯影片:為了讓作品更具吸引力,可以剪輯影片。可使用專業的影片剪輯軟體,如抖音、快手等,加入濾鏡、音樂、字幕等元素。 3.選擇封面:封面是吸引用戶點擊的關鍵,選擇一張清晰、有趣的圖片作為封面,讓

微博發影片怎麼不壓縮畫質_微博發影片不壓縮畫質方法 微博發影片怎麼不壓縮畫質_微博發影片不壓縮畫質方法 Mar 30, 2024 pm 12:26 PM

1.先打開手機微博,點選右下角【我】(如圖所示)。 2、接著點選右上角【齒輪】打開設定(如圖所示)。 3.然後找到並開啟【通用設定】(如圖所示)。 4.隨後進入【影片隨著】選項(如圖所示)。 5.再開啟【影片上傳清晰度】設定(如圖)。 6.最後選擇【原畫質】就能不壓縮了(如圖)。

從 iPhone 上的影片中刪除慢動作的 2 種方法 從 iPhone 上的影片中刪除慢動作的 2 種方法 Mar 04, 2024 am 10:46 AM

在iOS設備上,「相機」應用程式可讓您拍攝慢動作視頻,如果您使用的是最新的iPhone,甚至可以以每秒240幀的速度錄製視頻。此功能讓您能夠捕捉到豐富細節的高速動作。但有時候,您可能希望將慢動作影片以正常速度播放,這樣可以更好地欣賞影片中的細節和動作。在這篇文章中,我們將解釋從iPhone上的現有影片中刪除慢動作的所有方法。如何從iPhone上的影片中刪除慢動作[2種方法]您可以使用「照片」App或iMovie剪輯App從裝置上的影片中刪除慢動作。方法1:使用「照片」應用程式在iPhone上開啟

抖音發布影片如何賺收益?新手小白怎麼在抖音上賺錢啊? 抖音發布影片如何賺收益?新手小白怎麼在抖音上賺錢啊? Mar 21, 2024 pm 08:17 PM

抖音,這個全民短視頻平台,不僅讓我們在閒暇時間享受到各種有趣、新奇的短視頻,同時也給了我們一個展示自我、實現價值的舞台。那麼,如何在抖音發布影片中賺取收益呢?本文將詳細解答這個問題,幫助你在抖音上賺取更多的收益。一、抖音發布影片如何賺收益?發布影片在抖音上獲得一定的播放量後,可以有機會參與廣告分成計畫。這項收益方式是抖音用戶最熟悉的之一,也是許多創作者主要的收入來源。抖音根據帳號權重、影片內容以及觀眾回饋等多種因素來決定是否提供廣告分成的機會。抖音平台允許觀眾透過發送禮物來支持自己喜歡的創作者,

See all articles