



下載本文檔
版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
【移動(dòng)應(yīng)用開(kāi)發(fā)技術(shù)】如何設(shè)計(jì)一款優(yōu)秀的短視頻SDK
2017年,短視頻成為了內(nèi)容創(chuàng)業(yè)的新風(fēng)口,各種短視頻App如雨后春筍般先后上線(xiàn),隨著互聯(lián)網(wǎng)內(nèi)容消費(fèi)升級(jí),視頻越來(lái)越像文字、圖片一樣,成為每一個(gè)App不可或缺的一部分。為了能夠更好地聚焦于業(yè)務(wù),早日完成短視頻APP的上線(xiàn),越來(lái)越多的公司傾向于選擇一家靠譜的短視頻SDK來(lái)起步,怎么定義靠譜?要關(guān)注哪些指標(biāo)??jī)H功能滿(mǎn)足就可以了嗎?——顯然不夠,下面我們看看,如何才能設(shè)計(jì)一款優(yōu)秀的短視頻SDK?1.包體一定要盡可能小在移動(dòng)互聯(lián)網(wǎng)時(shí)代,App的包體大小,對(duì)獲取用戶(hù)有著至關(guān)重要的作用,特別是在線(xiàn)下的推廣活動(dòng)中,包體太大,下載費(fèi)時(shí)費(fèi)流量,很多用戶(hù)會(huì)失去耐心,從而直接導(dǎo)致App的推廣效果大打折扣。而App的包體大小,除了自身的代碼量,也會(huì)受到第三方庫(kù)的包體影響,因此,短視頻SDK包體越小,對(duì)于減小App包體大小越有幫助,開(kāi)發(fā)者才會(huì)越喜歡。那么,如何做到盡可能的減小SDK的包體呢?盡一切努力使用Android/iOS系統(tǒng)原生的API,不怕難用,不怕踩坑良好的模塊劃分,不同的功能生成不同的動(dòng)態(tài)庫(kù),客戶(hù)可選擇性的拆卸和裁剪所使用的第三方庫(kù),充分配置編譯選項(xiàng)和功能裁剪,只打包必須的功能、單獨(dú)抽離所需的模塊2.SDK一定要開(kāi)放使用第三方的SDK,最怕的是像個(gè)黑盒,過(guò)于封閉,想配置的參數(shù)無(wú)法配置,需要的狀態(tài)也沒(méi)有回調(diào),直接導(dǎo)致產(chǎn)品經(jīng)理給出的UI和交互方案無(wú)法實(shí)現(xiàn)。因此,SDK的開(kāi)放性,越來(lái)越成為開(kāi)發(fā)者選型的關(guān)鍵因素。那么,SDK如何做到盡可能的開(kāi)放呢?凡可配置的參數(shù),一律提供配置,比如:攝像頭參數(shù)、編解碼參數(shù)、美顏參數(shù)、混音參數(shù)等等凡可回調(diào)的數(shù)據(jù),一律提供回調(diào),比如:攝像頭采集的視頻幀、紋理ID,麥克風(fēng)采集的音頻幀等等凡運(yùn)行過(guò)程中的狀態(tài),一律提供通知,比如:拍攝狀態(tài)、轉(zhuǎn)碼進(jìn)度、取消事件等等另外,還需要盡可能地跟SDK上下游廠(chǎng)商建立良好的合作關(guān)系,比如美顏、濾鏡、人臉貼紙?zhí)匦А⒋笱凼菽樀裙?yīng)商,讓客戶(hù)可以隨時(shí)快速接入和替換任意一家廠(chǎng)商,從而加快產(chǎn)品迭代和上線(xiàn)的速度。3.性能要好雖然隨著時(shí)間的推移,手機(jī)的性能越來(lái)越強(qiáng)大,但是CPU居高不下、發(fā)熱厲害、內(nèi)存消耗大、運(yùn)行速度慢的App終究還是會(huì)失去很多寶貴的用戶(hù),因此,無(wú)論是App本身,而是第三方SDK,性能永遠(yuǎn)是值得關(guān)注的重點(diǎn)。SDK如何做到更好的性能呢?其實(shí)就一條:充分地利用GPU,盡一切可能減少CPU消耗,對(duì)于短視頻SDK的開(kāi)發(fā)而已,具體來(lái)說(shuō)有哪些值得關(guān)注的點(diǎn)呢?音視頻編解碼盡可能地使用硬編/硬解視頻/圖像的處理,盡可能使用OpenGL,包括:美顏、濾鏡、水印、剪裁、旋轉(zhuǎn)等等盡可能更高效地編寫(xiě)OpenGL代碼,使用一些提高性能的特性,包括:VBO,VAO,FBO,PBO等等動(dòng)態(tài)管理so,沒(méi)有用到的不加載;動(dòng)態(tài)管理內(nèi)存,使用時(shí)再分配合并處理流程,各種音視頻特效和處理,依次記錄狀態(tài),待保存的時(shí)候,再調(diào)用算法處理4.UI和SDK邏輯要徹底的分離優(yōu)秀的SDK,一定要盡可能避免把UI的界面和邏輯包含進(jìn)去,不然SDK的使用者,很難滿(mǎn)足產(chǎn)品經(jīng)理的UI和交互設(shè)計(jì)要求,做出差異化的效果。那么,SDK如何做到與UI邏輯徹底地分離呢?需要充分分解每一個(gè)短視頻的功能需求,搞清楚每一個(gè)需求的實(shí)現(xiàn)原理,哪部分是UI的,哪部分是核心的,前者寫(xiě)到DEMO上,而后者則寫(xiě)入SDK里面就拿短視頻剪輯這個(gè)功能點(diǎn)來(lái)舉個(gè)例子,下圖所示是短視頻的一個(gè)熱點(diǎn)功能,對(duì)短視頻截取中間某一段片段。仔細(xì)思考這個(gè)功能點(diǎn),其實(shí)關(guān)鍵點(diǎn)在于:1.獲取視頻中的連續(xù)圖像在列表中進(jìn)行展示2.繪制左右游標(biāo),以確定剪輯的起始和結(jié)束的時(shí)間點(diǎn)3.讀取視頻文件,丟棄時(shí)間區(qū)間以外的視頻幀,保留剩余視頻幀屬于UI的部分:1.用列表顯示視頻幀圖像2.繪制左右游標(biāo),支持手勢(shì)拖動(dòng)3.根據(jù)視頻的總時(shí)長(zhǎng)和游標(biāo)的位置,計(jì)算出起始和結(jié)束的時(shí)間點(diǎn)屬于SDK的部分:1.提供視頻的時(shí)長(zhǎng)2.提供視頻幀總數(shù)3.提供解碼后的每一幀視頻數(shù)據(jù)4.提供剪輯函數(shù),參數(shù)為:起始和結(jié)束的時(shí)間戳5.完成剪輯處理,輸出剪輯后的視頻文件這樣分離好了之后,再去編寫(xiě)SDK的接口和UI的demo代碼,就非常清晰了。5.穩(wěn)定可靠,有更好的可支持性?xún)?yōu)秀的App和SDK,首先一點(diǎn)就是要穩(wěn)定可靠,因?yàn)闆](méi)有人會(huì)喜歡經(jīng)常崩潰的程序。不過(guò),沒(méi)有人敢說(shuō)自己的程序是完美的,不會(huì)有任何BUG的,但是,具備良好的可支持性的產(chǎn)品,往往更容易受到親賴(lài)。什么是可支持性?舉個(gè)例子,就像家里買(mǎi)的某些品牌的洗衣機(jī)或者空調(diào),在出故障的時(shí)候,液晶屏幕上會(huì)打出一些錯(cuò)誤碼,當(dāng)你給售后打電話(huà)的時(shí)候,售后往往能夠根據(jù)描述的信息以及錯(cuò)誤代碼很快地定位到問(wèn)題或者給出臨時(shí)的解決方案。如何讓短視頻SDK具有更好的可支持性呢?關(guān)鍵在于一套健全而規(guī)范的日志系統(tǒng),可以有效提高技術(shù)支持和開(kāi)發(fā)者排查問(wèn)題的速度和效率,那么,設(shè)計(jì)這樣一套完善的日志系統(tǒng),有哪些關(guān)鍵點(diǎn)呢?支持配置SDK的輸出日志級(jí)別,如:ERROR,WARN,INFO,DEBUG,VERBOSESDK初始化的時(shí)候輸出關(guān)鍵的排障信息,如:應(yīng)用包名,SDK版本,設(shè)備機(jī)型,系統(tǒng)OS版本,關(guān)鍵配置等規(guī)范的日志格式,如:<SDKTAG>:<ModuleTAG>:<ClassTAG>:<Message>,可以快速方便地過(guò)濾出各個(gè)模塊的運(yùn)行狀態(tài)健全的問(wèn)題牌子手冊(cè)/文檔,讓每一個(gè)錯(cuò)誤碼都有文檔可依,開(kāi)發(fā)者可以完成簡(jiǎn)單初步的問(wèn)題分析6.小結(jié)總而言之,設(shè)計(jì)一款優(yōu)秀并且口碑好的短視頻SDK,并不是簡(jiǎn)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 倉(cāng)儲(chǔ)物流設(shè)施抵押貸款服務(wù)協(xié)議
- 商業(yè)街區(qū)車(chē)庫(kù)租賃合同
- 車(chē)庫(kù)租賃與汽車(chē)美容保養(yǎng)服務(wù)合同
- 智能制造基地廠(chǎng)房及土地使用權(quán)租賃合同
- 棉花倉(cāng)儲(chǔ)物流效率-洞察闡釋
- 餐飲業(yè)餐廚廢棄物回收與處理專(zhuān)項(xiàng)協(xié)議
- 智慧交通物聯(lián)網(wǎng)技術(shù)-洞察闡釋
- 海星干細(xì)胞在再生醫(yī)學(xué)中的臨床應(yīng)用研究-洞察闡釋
- 根際生態(tài)系統(tǒng)的復(fù)雜性研究-洞察闡釋
- 家庭用品供應(yīng)鏈智能化預(yù)測(cè)與決策-洞察闡釋
- 鉆越保阜高速公路施工方案
- GMS基礎(chǔ)知識(shí)的教案
- 蒸壓加氣混凝土砌塊砌筑工程施工方案
- 《拒絕熬夜》演講PPT模板-熬夜危害、怎樣不熬夜、熬夜調(diào)查
- 第5章 鋼梁計(jì)算原理
- JJF(石化)033-2020便攜式揮發(fā)性有機(jī)物泄漏檢測(cè)儀(氫火焰離子法)校準(zhǔn)規(guī)范
- 開(kāi)放性骨折的處理-課件
- 西南科技大學(xué)機(jī)械原理期末考試復(fù)習(xí)題及答案
- 讀后續(xù)寫(xiě):騎馬迷路 遇困難不放棄 課件 【知識(shí)建構(gòu)+點(diǎn)播拓展】高考英語(yǔ)作文備考
- 2023年宜興市云湖茶禪文旅發(fā)展有限公司招聘筆試題庫(kù)及答案解析
- 課程思政的認(rèn)識(shí)、實(shí)踐與思考課件
評(píng)論
0/150
提交評(píng)論