佛山多語網(wǎng)站制作手游代理平臺哪個好
文章目錄
- 1. 概念介紹
- 2. 方法與細(xì)節(jié)
- 2.1 實現(xiàn)方法
- 2.2 具體細(xì)節(jié)
- 3. 示例代碼
- 4. 內(nèi)容總結(jié)
我們在上一章回中介紹了"如何混合選擇多個圖片和視頻文件"相關(guān)的內(nèi)容,本章回中將介紹如何通過相機獲取視頻文件.閑話休提,讓我們一起Talk Flutter吧。
1. 概念介紹
我們在前面章回中介紹的選擇圖片或者視頻文件的方式都是通過文件窗口進行的,本章回中將介紹如何通過相機獲取視頻文件,也就是說我們不再選擇已經(jīng)拍好的視頻,
而是在選擇視頻時直接使用相機錄制一個新的視頻文件。
2. 方法與細(xì)節(jié)
通過相機獲取視頻也是通過image_picke包來實現(xiàn),這個包雖然叫image_picker,但是它可以選擇視頻,而且可以調(diào)用相機去拍照和錄像。
2.1 實現(xiàn)方法
該包提供了pickVideo()方法來從相機獲取視頻文件,接下來我們介紹詳細(xì)的實現(xiàn)方法。
- 創(chuàng)建文件選擇器對象,也就是包中提供的ImagePicker類的實例;
- 使用文件選擇器的pickVideo()方法獲取視頻文件,通過該方法的參數(shù)把視頻源設(shè)置為相機;
- 該方法會啟動相機來錄像并且把錄像后視頻的存儲路徑返回給方法調(diào)用者;
- 獲取到視頻文件的路徑后就可以使用VideoPlayer組件來加載視頻文件;
2.2 具體細(xì)節(jié)
上面的步驟中使用了ImagePicker的pickVideo()方法,該方法返回的是Future<XFile?>
類型的對象,因此我們需要通過Future的then方法來獲取文件路徑。
此外,該方法需要異步運行,因為獲取文件路徑是比較耗時的操作。方法中的source參數(shù)用來控制視頻源,包中一共支持兩種圖片源:gallery和camera。它們分別表
示通過相冊和相機來獲取視頻。該方法還有一個命名參數(shù):CameraDevice,該參數(shù)用來控制拍照時使用前置相機還是后置相機。該方法的另外一個參數(shù)是Duration,
用來控制錄制視頻的時間,因為視頻文件比較大,需要限定時間,否則使用默認(rèn)的最大值infinite。
3. 示例代碼
ImagePicker imagePicker = ImagePicker();XFile? _videoFile;Future<XFile?> getVideoFiles() async {var list = await imagePicker.pickVideo(source: ImageSource.camera);return list;
}ElevatedButton(onPressed: () {getVideoFiles().then((value) {///因為是異步,所以需要通過setState更新數(shù)據(jù)源setState(() {///返回的路徑是app下的緩沖目錄:data/user/0/packagename/cache/scaled_1000000010.jpg// debugPrint("path: v${value[0].path}");_videoFile = value;playVideo(_videoFile!);});});},child: const Text("load video"),
),
上面的示例代碼中演示了如何通過相機獲取視頻文件,代碼把pickVideo()方法封裝成了異步方法,并且將它綁定到按鈕上,這樣就可以在點擊按鈕時發(fā)出獲取文件的指
令,此時會打開相機,我們可以使用相機錄像,錄像完成后有確認(rèn)和放棄所錄視頻的圖標(biāo):對號和和錯號。這種操作以可視化操作的方式選擇視頻文件,十分方便。代碼中
加載視頻前需要檢查文件路徑,文件路徑在程序最開始運行時為null,在程序運行后,但是沒有選擇任何視頻文件時的文件路徑不為空,而是為empty,這點需要特別注意,
不然無法正確預(yù)覽視頻文件。此外,我們獲取到的視頻文件路徑是一個相對路徑,它并不是視頻文件的絕對路徑。此外,代碼中把播放視頻文件的內(nèi)容封裝成了獨立的方法:
playVideo我們只需要給該方法傳入文件路徑就可以播放視頻,該方法的具體實現(xiàn)內(nèi)容可以參考"如何播放視頻文件"章回中的內(nèi)容。
4. 內(nèi)容總結(jié)
最后,我們對本章回的內(nèi)容做一個全面的總結(jié):
- Flutter官方提供了image_picker包,該包以可視化操作的方式獲取文件路徑;
- 使用包中的pickVideo()方法可以通過相機來獲取視頻文件的相對路徑;
- 包中的pickVidoe()方法提供了相關(guān)的參數(shù)來設(shè)置視頻來源和前后相機;
- 加載視頻文件前需要檢查文件路徑的可靠性,不然可能導(dǎo)致無法加載視頻文件;
看官們,與"如何通過相機獲取視頻文件"相關(guān)的內(nèi)容就介紹到這里,歡迎大家在評論區(qū)交流與討論!