react-native-video如何實現視訊全螢幕播放
react-native-video 是github上一個專用於React Native做影片播放的元件。這個組件是React Native上功能最全最好用的影片播放組件,還在持續開發之中,雖然還有些bug,但基本上不影響使用,強力推薦。本文主要和大家介紹了react-native-video實現影片全螢幕播放的方法,希望能幫助大家。
首先來看看react-native-video有哪些功能。
基本功能
控製播放速率
控制音量大小
- 支援靜音功能
- 支援播放和暫停
- #支援後台音訊播放
-
- 豐富的事件調用,如onLoad,onEnd,onProgress,onBuffer等等,可以透過對應的事件進行UI上的客製化處理,如onBuffer時我們可以顯示一個進度條提示使用者影片正在緩衝。
- 支援全螢幕播放,使用presentFullscreenPlayer方法。這個方法在iOS上可行,在android上不起作用。參考 issue#534 ,#726也是同樣的問題。
- 支援跳轉進度,使用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={'cover'} playWhenInactive={false} playInBackground={false} ignoreSilentSwitch={'ignore'} 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('通过onLayout得到的宽度:' + width); console.log('通过onLayout得到的高度:' + 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需要設定轉屏功能才能讓介面自動旋轉,請自行查閱相關設定方法。 ###播放控制#########上面實現了全螢幕播放還不夠,我們還需要一個工具列來控制影片的播放,例如顯示進度,播放暫停和全螢幕按鈕。具體思路如下:###
使用一個View將Video元件包起來,View的寬高和Video一致,方便轉屏時改變大小
設定一個透明的遮罩層覆蓋在Video組件上,點擊遮罩層顯示或隱藏工具列
工具列中要顯示播放按鈕、進度列、全螢幕按鈕、目前播放時間、影片總時長。工具列以絕對位置佈局,覆蓋在Video組件底部
使用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中文網其他相關文章!

熱AI工具

Undress AI Tool
免費脫衣圖片

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

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

Clothoff.io
AI脫衣器

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

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

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

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

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

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

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

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

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

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

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