十年網(wǎng)站開(kāi)發(fā)經(jīng)驗(yàn) + 多家企業(yè)客戶(hù) + 靠譜的建站團(tuán)隊(duì)
量身定制 + 運(yùn)營(yíng)維護(hù)+專(zhuān)業(yè)推廣+無(wú)憂(yōu)售后,網(wǎng)站問(wèn)題一站解決
Flutter 零基礎(chǔ)入門(mén)實(shí)戰(zhàn)視頻教程 #01 環(huán)境搭建 「14:03」

徽縣網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián),徽縣網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為徽縣上千家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\成都外貿(mào)網(wǎng)站建設(shè)公司要多少錢(qián),請(qǐng)找那個(gè)售后服務(wù)好的徽縣做網(wǎng)站的公司定做!
Flutter 零基礎(chǔ)入門(mén)實(shí)戰(zhàn)視頻教程 #02 Dart 語(yǔ)言 「17:49」
Flutter 零基礎(chǔ)入門(mén)實(shí)戰(zhàn)視頻教程 #03 建立 Android studio 虛擬設(shè)備 「04:12」
Flutter 零基礎(chǔ)入門(mén)實(shí)戰(zhàn)視頻教程 #04 建立第一個(gè)項(xiàng)目 「08:23」
Flutter 零基礎(chǔ)入門(mén)實(shí)戰(zhàn)視頻教程 #05 安裝配置過(guò)程中可能遇到的問(wèn)題(沒(méi)遇到者可以跳過(guò)) 「05:07」
Flutter 零基礎(chǔ)入門(mén)實(shí)戰(zhàn)視頻教程 #06 運(yùn)行 iOS 模擬器 「04:07」
Flutter 零基礎(chǔ)入門(mén)實(shí)戰(zhàn)視頻教程 #07 Flutter 概述 「06:15」
Flutter 零基礎(chǔ)入門(mén)實(shí)戰(zhàn)視頻教程 #08 Scaffold AppBar 「Pro」「06:50」
Flutter 零基礎(chǔ)入門(mén)實(shí)戰(zhàn)視頻教程 #09 文檔和快捷鍵 「Pro」「02:36」
Flutter 零基礎(chǔ)入門(mén)實(shí)戰(zhàn)視頻教程 #10 顏色 Colors 「Pro」「05:47」
Flutter 零基礎(chǔ)入門(mén)實(shí)戰(zhàn)視頻教程 #11 自定義字體 fonts 「Pro」「05:09」
Flutter 零基礎(chǔ)入門(mén)實(shí)戰(zhàn)視頻教程 #12 hot reload StatelessWidget 「Pro」「04:56」
Flutter 零基礎(chǔ)入門(mén)實(shí)戰(zhàn)視頻教程 #13 使用圖片 「Pro」「04:59」
Flutter 零基礎(chǔ)入門(mén)實(shí)戰(zhàn)視頻教程 #14 使用圖標(biāo) - Icon 「Pro」「01:27」
Flutter 零基礎(chǔ)入門(mén)實(shí)戰(zhàn)視頻教程 #15 Button 按鈕使用指南 「Pro」「04:35」
Flutter 零基礎(chǔ)入門(mén)實(shí)戰(zhàn)視頻教程 #16 Container 和 Padding 「Pro」「04: 52」
Flutter 零基礎(chǔ)入門(mén)實(shí)戰(zhàn)視頻教程 #17 Row 「Pro」「05:24」
Flutter 零基礎(chǔ)入門(mén)實(shí)戰(zhàn)視頻教程 #18 Column 「Pro」「05:36」
Flutter 零基礎(chǔ)入門(mén)實(shí)戰(zhàn)視頻教程 #19 Flutter Outline Shortcuts 「Pro」「03:18」
Flutter 零基礎(chǔ)入門(mén)實(shí)戰(zhàn)視頻教程 #20 Expanded Widgets 「Pro」「06:06」
Flutter 零基礎(chǔ)入門(mén)實(shí)戰(zhàn)視頻教程 #21 實(shí)戰(zhàn)開(kāi)始 「Pro」「11:42」
Flutter 零基礎(chǔ)入門(mén)實(shí)戰(zhàn)視頻教程 #22 換個(gè)編輯器 - Visual Studio Code 「Pro」「04:50」
Flutter 零基礎(chǔ)入門(mén)實(shí)戰(zhàn)視頻教程 #23 Stateful vs Stateless Widget 「Pro」「09:45」
Flutter 零基礎(chǔ)入門(mén)實(shí)戰(zhàn)視頻教程 #24 列表處理 「Pro」「04:54」
Flutter 零基礎(chǔ)入門(mén)實(shí)戰(zhàn)視頻教程 #25 自定義 class 「Pro」「05:37」
Flutter 零基礎(chǔ)入門(mén)實(shí)戰(zhàn)視頻教程 #26 card widget 「Pro」「04:26」
Flutter 零基礎(chǔ)入門(mén)實(shí)戰(zhàn)視頻教程 #27 Extracting Widgets 「Pro」「06:59」
Flutter 零基礎(chǔ)入門(mén)實(shí)戰(zhàn)視頻教程 #28 刪除 - Functions as Parameters - 完結(jié) - 進(jìn)入實(shí)戰(zhàn)課 「Pro」「04:35」
Flutter教程全套 (全網(wǎng)獨(dú)家)百度網(wǎng)盤(pán)免費(fèi)資源在線(xiàn)學(xué)習(xí) ?
鏈接:
提取碼: m9z8 ?
Flutter教程全套 (全網(wǎng)獨(dú)家)
第一套:Flutter 攜程17章全-整理好
第五套:Flutter高仿谷歌翻譯項(xiàng)目課程
第四套:兩小時(shí)掌握Flutter移動(dòng)App開(kāi)發(fā)視頻
第三套:flutter入門(mén)到精通全套
第七套:Flutter小實(shí)戰(zhàn)20個(gè)
第六套:仿直聘boss的flutter完整教程
第九套:Flutter跨平臺(tái)開(kāi)發(fā)
第二套:flutter移動(dòng)電商實(shí)戰(zhàn)-技術(shù)胖
第八套:Flutter基礎(chǔ)教程(基礎(chǔ)不好的優(yōu)先看)
24Flutter的打包.mp4
23靜態(tài)資源和項(xiàng)目圖片的處理.mp4
22頁(yè)面跳轉(zhuǎn)并返回?cái)?shù)據(jù)_.mp4
21導(dǎo)航的參數(shù)傳遞和接受-2_.mp4
20導(dǎo)航的參數(shù)傳遞和接受-1.mp4
ffmpeg是一個(gè)音視頻處理庫(kù),通過(guò)命令行的形式,對(duì)音視頻進(jìn)行處理,而MobileFFmpeg
則是ffmpeg在移動(dòng)端的實(shí)現(xiàn),flutter_ffmpeg是對(duì)MobileFFmpeg的封裝,是的在flutter下能夠輕松的使用ffmpeg對(duì)音視頻進(jìn)行處理。flutter_ffmpeg包括兩部分FFmpeg和FFprobe,其中FFmpeg負(fù)責(zé)音視頻處理,而FFprobe主要負(fù)責(zé)查詢(xún)音視頻的媒體信息。
flutter_ffmpeg地址
android工程下的配置
上面配置中的”full-lts” 是flutter__ffmpeg各個(gè)發(fā)布版本的報(bào)名,可以查看官方文檔的說(shuō)明。有一個(gè)值得說(shuō)明的地方是,flutter_ffmpeg有中發(fā)行包,一種是 Main Release,一種是LTS Release 發(fā)行包,而他們兩者支持的 Android API Level/iOS SDK和硬件架構(gòu)是不一樣的,總的來(lái)說(shuō),LTS版本支持的更廣泛,LTS支持度大于MAIN,所以我們最好使用LTS版本。
這里我遇到一個(gè)問(wèn)題,使用full-lts編碼格式,會(huì)出現(xiàn)上傳到服務(wù)器無(wú)法播放視頻的情況。
所以我這里是用的:
另外在使用flutter_ffmpeg的時(shí)候出現(xiàn)類(lèi)似問(wèn)題:
通過(guò)clean可以解決
使用gpl保證裁剪視頻默認(rèn)使用x264(不然會(huì)出現(xiàn)上傳視頻無(wú)法播放的問(wèn)題),具體可以查看flutter_ffmpeg封裝編碼
flutter_ffmpge是ffmpeg在flutter上的一個(gè)實(shí)現(xiàn),ffmpeg是通過(guò)命令行還進(jìn)行音視頻編輯的工具,因此我們使用fluter_ffmpeg自然也是運(yùn)行一些命令來(lái)實(shí)現(xiàn)我們的功能。具體使用方法可以直接看 ffluter_ffmpeg官方文檔 和 ffmpeg官方文檔 ,或者看一下更加通俗易懂的 阮一峰文檔 。接下來(lái)我們主要看看flutter_ffmpeg能干什么?
做音視頻處理,首先我們肯定想知道我們的處理是否成功,或者效果好不好,那么我們只能通過(guò)處理的視頻前后的參數(shù)進(jìn)行對(duì)比,因此第一步我們要求這個(gè)視頻處理庫(kù)詳細(xì)的給我們提供音視頻的信息,flutter_ffmpeg的FFProde能夠很好的實(shí)現(xiàn)這一點(diǎn),而且使用很方便:
-r 20:表示幀率設(shè)置為 20fps
fs 20 : 表示文件大小最大值為15MB
把視頻截了一部分 --- 這種方法不推薦
-s vga : 指定分辨率, vga 代表 600*480,也可以換成其他的值
-b:v 1.5M : 指定碼率
-b:v :指定視頻的碼率
-b:a : 指定音頻的碼率
1.5M:碼率的值 1.5M 表示 1.5Mb/s
比如我在項(xiàng)目里用到上傳到服務(wù)器的視頻時(shí)長(zhǎng)需要控制在60s以?xún)?nèi)的功能,我們就可以這樣:
從n開(kāi)始,裁剪m秒長(zhǎng)度的視頻
從n秒開(kāi)始,裁剪到m秒的視頻
目前Flutter平臺(tái)主流的兩個(gè)播放器是video_player和fijkplayer
pub
github
1、Flutter平臺(tái)官方插件,作者是國(guó)外的,有問(wèn)題溝通比較困難,只能通過(guò)提交issue
2、硬解碼
4、UI封裝: better_player
基于video_player和Chewie的高級(jí)視頻播放器。它解決了許多典型的用例,并且易于運(yùn)行。
5、播放器寬高比例與視頻內(nèi)容寬高比例不一致時(shí),會(huì)出現(xiàn)圖像壓縮變形的問(wèn)題
6、調(diào)用原生內(nèi)核播放器:iOS--AVPlayer, Android--ExoPlayer
7、對(duì)于分段源 m3u8 的播放不友好,如果一個(gè)切片播放超時(shí),會(huì)導(dǎo)致整個(gè)播放都失敗
8、better_player可以緩存視頻,但不能自定義緩存的地址,只能指定key,和緩存的最大內(nèi)存量(還未研究超出最大的話(huà)是不能緩存新的,還是刪除最舊的)
9、better_player不能完全自定義UI,只能修改類(lèi)中的一些開(kāi)放屬性,比如說(shuō)icon圖標(biāo),文字顏色啥的
10、無(wú)網(wǎng)絡(luò)有緩存時(shí),封面可以正常展示
11、better_player播放失敗有手動(dòng)retry的設(shè)計(jì)
pub
github
1、fijkplayer 是一個(gè) Flutter 生態(tài)的媒體播放器,是對(duì) ijkplayer 的 Flutter 封裝,支持 Android 和 iOS。 fijkplayer 使用 ijkplayer 作為播放器內(nèi)核,ijkplayer 使用 ffmpeg 進(jìn)行音視頻解封裝和解碼,同時(shí)添加了 Android 和 iOS 平臺(tái)特有的硬件加速解碼能力。
2 、國(guó)內(nèi)有QQ群,但是活躍度也是不高。
3、可以緩存視頻,可以自定義緩存的地址,方便后續(xù)的內(nèi)存維護(hù)。
4、可以通過(guò)FijkPanelWidgetBuilder較大程度上自定義UI。
5、無(wú)網(wǎng)絡(luò)有緩存視頻時(shí),無(wú)法展示封面,因?yàn)閮?nèi)部是通過(guò)imageProvider去加載網(wǎng)絡(luò)圖片的。
7、播放失敗無(wú)手動(dòng)retry的設(shè)計(jì)
1、兩種播放器都是通過(guò)外接紋理方案 (Texture),將播放器視頻畫(huà)面渲染接入 flutter 中,性能上優(yōu)于 PlatformView 的接入方法。
如何自己實(shí)現(xiàn)?
下面以video_palyer的iOS源碼部分解釋?zhuān)?/p>
iOS用CVPixelBufferRef將渲染出來(lái)的數(shù)據(jù)存在內(nèi)存中,F(xiàn)lutter engine會(huì)將Texture的數(shù)據(jù)在內(nèi)存中直接進(jìn)行映射無(wú)需通過(guò)Channel傳輸,然后Texture Widget就可以把你提供的這些數(shù)據(jù)顯示出來(lái)。在我們傳輸數(shù)據(jù)的時(shí)候會(huì)需要將其與 TextureID 綁定,綁定的過(guò)程通過(guò)BasicMessageChannel實(shí)現(xiàn)數(shù)據(jù)流的傳輸,以做到實(shí)時(shí)展示的效果