最近做了一個視頻的需求,使用的是AVFoundation。
頁面切換的無縫連接
主要需要解決的技術(shù)點在于眼虱,如何在視頻的全屏化過程中無縫鏈接,不會出現(xiàn)視頻斷裂或者停頓的問題席纽。
view的偽裝切換
使用view來偽裝頁面的切換捏悬,視頻的全屏僅僅是view的transform。
這樣做的優(yōu)點是比較靈活润梯,不需要依賴與蘋果的框架陋葡,轉(zhuǎn)場動畫等都比較好控制侣颂。
缺點也比較明顯,因為在同一個controller中,代碼偶爾度會增加巾兆,這個controller的功能也會更加復(fù)雜囤捻,而且transform并不能控制系統(tǒng)的屏幕方向评抚,所以一些系統(tǒng)的提示不是正確的方向熟空,比如音量,push等竟纳。
present方式
使用present方式撵溃,展示一個新的controller,這樣業(yè)務(wù)也會分離的比較清楚锥累,唯一需要考慮的是如何讓兩個頁面間的視頻播放更加平滑缘挑。
一開始的考慮是,是否可以把AVPlayer傳遞給下一級揩悄,視圖層由各個負(fù)責(zé)卖哎,因為視頻的播放位置和緩存信息都以及保存在了AVPlayer。實際發(fā)現(xiàn)删性,把同一個AVPlayer給不同CAPlayerLayer的時候亏娜,視頻播放停止了,所以傳遞的時候要把這兩者一起傳過去蹬挺。
另外维贺,需要考慮的是轉(zhuǎn)場動畫,這里就不詳細(xì)描述了巴帮。
這里查看了其他一些視頻app
- bilibili 在視頻切換的時候有明顯卡頓
- 斗魚溯泣、愛奇藝 在視頻切換時,轉(zhuǎn)場動畫或多或少有些小問題
- 樂視 沒有轉(zhuǎn)場動畫
- 騰訊視頻榕茧、優(yōu)酷 表現(xiàn)最好