【移動(dòng)應(yīng)用開發(fā)技術(shù)】如何設(shè)計(jì)一款優(yōu)秀的短視頻 SDK_第1頁(yè)
【移動(dòng)應(yīng)用開發(fā)技術(shù)】如何設(shè)計(jì)一款優(yōu)秀的短視頻 SDK_第2頁(yè)
【移動(dòng)應(yīng)用開發(fā)技術(shù)】如何設(shè)計(jì)一款優(yōu)秀的短視頻 SDK_第3頁(yè)
【移動(dòng)應(yīng)用開發(fā)技術(shù)】如何設(shè)計(jì)一款優(yōu)秀的短視頻 SDK_第4頁(yè)
免費(fèi)預(yù)覽已結(jié)束,剩余1頁(yè)可下載查看

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

【移動(dòng)應(yīng)用開發(fā)技術(shù)】如何設(shè)計(jì)一款優(yōu)秀的短視頻SDK

2017年,短視頻成為了內(nèi)容創(chuàng)業(yè)的新風(fēng)口,各種短視頻App如雨后春筍般先后上線,隨著互聯(lián)網(wǎng)內(nèi)容消費(fèi)升級(jí),視頻越來(lái)越像文字、圖片一樣,成為每一個(gè)App不可或缺的一部分。為了能夠更好地聚焦于業(yè)務(wù),早日完成短視頻APP的上線,越來(lái)越多的公司傾向于選擇一家靠譜的短視頻SDK來(lái)起步,怎么定義靠譜?要關(guān)注哪些指標(biāo)??jī)H功能滿足就可以了嗎?——顯然不夠,下面我們看看,如何才能設(shè)計(jì)一款優(yōu)秀的短視頻SDK?1.包體一定要盡可能小在移動(dòng)互聯(lián)網(wǎng)時(shí)代,App的包體大小,對(duì)獲取用戶有著至關(guān)重要的作用,特別是在線下的推廣活動(dòng)中,包體太大,下載費(fèi)時(shí)費(fèi)流量,很多用戶會(huì)失去耐心,從而直接導(dǎo)致App的推廣效果大打折扣。而App的包體大小,除了自身的代碼量,也會(huì)受到第三方庫(kù)的包體影響,因此,短視頻SDK包體越小,對(duì)于減小App包體大小越有幫助,開發(fā)者才會(huì)越喜歡。那么,如何做到盡可能的減小SDK的包體呢?盡一切努力使用Android/iOS系統(tǒng)原生的API,不怕難用,不怕踩坑良好的模塊劃分,不同的功能生成不同的動(dòng)態(tài)庫(kù),客戶可選擇性的拆卸和裁剪所使用的第三方庫(kù),充分配置編譯選項(xiàng)和功能裁剪,只打包必須的功能、單獨(dú)抽離所需的模塊2.SDK一定要開放使用第三方的SDK,最怕的是像個(gè)黑盒,過(guò)于封閉,想配置的參數(shù)無(wú)法配置,需要的狀態(tài)也沒有回調(diào),直接導(dǎo)致產(chǎn)品經(jīng)理給出的UI和交互方案無(wú)法實(shí)現(xiàn)。因此,SDK的開放性,越來(lái)越成為開發(fā)者選型的關(guān)鍵因素。那么,SDK如何做到盡可能的開放呢?凡可配置的參數(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上下游廠商建立良好的合作關(guān)系,比如美顏、濾鏡、人臉貼紙?zhí)匦?、大眼瘦臉等供?yīng)商,讓客戶可以隨時(shí)快速接入和替換任意一家廠商,從而加快產(chǎn)品迭代和上線的速度。3.性能要好雖然隨著時(shí)間的推移,手機(jī)的性能越來(lái)越強(qiáng)大,但是CPU居高不下、發(fā)熱厲害、內(nèi)存消耗大、運(yùn)行速度慢的App終究還是會(huì)失去很多寶貴的用戶,因此,無(wú)論是App本身,而是第三方SDK,性能永遠(yuǎn)是值得關(guān)注的重點(diǎn)。SDK如何做到更好的性能呢?其實(shí)就一條:充分地利用GPU,盡一切可能減少CPU消耗,對(duì)于短視頻SDK的開發(fā)而已,具體來(lái)說(shuō)有哪些值得關(guān)注的點(diǎn)呢?音視頻編解碼盡可能地使用硬編/硬解視頻/圖像的處理,盡可能使用OpenGL,包括:美顏、濾鏡、水印、剪裁、旋轉(zhuǎn)等等盡可能更高效地編寫OpenGL代碼,使用一些提高性能的特性,包括:VBO,VAO,FBO,PBO等等動(dòng)態(tài)管理so,沒有用到的不加載;動(dòng)態(tài)管理內(nèi)存,使用時(shí)再分配合并處理流程,各種音視頻特效和處理,依次記錄狀態(tài),待保存的時(shí)候,再調(diào)用算法處理4.UI和SDK邏輯要徹底的分離優(yōu)秀的SDK,一定要盡可能避免把UI的界面和邏輯包含進(jìn)去,不然SDK的使用者,很難滿足產(chǎn)品經(jīng)理的UI和交互設(shè)計(jì)要求,做出差異化的效果。那么,SDK如何做到與UI邏輯徹底地分離呢?需要充分分解每一個(gè)短視頻的功能需求,搞清楚每一個(gè)需求的實(shí)現(xiàn)原理,哪部分是UI的,哪部分是核心的,前者寫到DEMO上,而后者則寫入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.完成剪輯處理,輸出剪輯后的視頻文件這樣分離好了之后,再去編寫SDK的接口和UI的demo代碼,就非常清晰了。5.穩(wěn)定可靠,有更好的可支持性優(yōu)秀的App和SDK,首先一點(diǎn)就是要穩(wěn)定可靠,因?yàn)闆]有人會(huì)喜歡經(jīng)常崩潰的程序。不過(guò),沒有人敢說(shuō)自己的程序是完美的,不會(huì)有任何BUG的,但是,具備良好的可支持性的產(chǎn)品,往往更容易受到親賴。什么是可支持性?舉個(gè)例子,就像家里買的某些品牌的洗衣機(jī)或者空調(diào),在出故障的時(shí)候,液晶屏幕上會(huì)打出一些錯(cuò)誤碼,當(dāng)你給售后打電話的時(shí)候,售后往往能夠根據(jù)描述的信息以及錯(cuò)誤代碼很快地定位到問題或者給出臨時(shí)的解決方案。如何讓短視頻SDK具有更好的可支持性呢?關(guān)鍵在于一套健全而規(guī)范的日志系統(tǒng),可以有效提高技術(shù)支持和開發(fā)者排查問題的速度和效率,那么,設(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)健全的問題牌子手冊(cè)/文檔,讓每一個(gè)錯(cuò)誤碼都有文檔可依,開發(fā)者可以完成簡(jiǎ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)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論