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

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

【移動應用開發(fā)技術】如何設計一款優(yōu)秀的短視頻SDK

2017年,短視頻成為了內容創(chuàng)業(yè)的新風口,各種短視頻App如雨后春筍般先后上線,隨著互聯(lián)網(wǎng)內容消費升級,視頻越來越像文字、圖片一樣,成為每一個App不可或缺的一部分。為了能夠更好地聚焦于業(yè)務,早日完成短視頻APP的上線,越來越多的公司傾向于選擇一家靠譜的短視頻SDK來起步,怎么定義靠譜?要關注哪些指標?僅功能滿足就可以了嗎?——顯然不夠,下面我們看看,如何才能設計一款優(yōu)秀的短視頻SDK?1.包體一定要盡可能小在移動互聯(lián)網(wǎng)時代,App的包體大小,對獲取用戶有著至關重要的作用,特別是在線下的推廣活動中,包體太大,下載費時費流量,很多用戶會失去耐心,從而直接導致App的推廣效果大打折扣。而App的包體大小,除了自身的代碼量,也會受到第三方庫的包體影響,因此,短視頻SDK包體越小,對于減小App包體大小越有幫助,開發(fā)者才會越喜歡。那么,如何做到盡可能的減小SDK的包體呢?盡一切努力使用Android/iOS系統(tǒng)原生的API,不怕難用,不怕踩坑良好的模塊劃分,不同的功能生成不同的動態(tài)庫,客戶可選擇性的拆卸和裁剪所使用的第三方庫,充分配置編譯選項和功能裁剪,只打包必須的功能、單獨抽離所需的模塊2.SDK一定要開放使用第三方的SDK,最怕的是像個黑盒,過于封閉,想配置的參數(shù)無法配置,需要的狀態(tài)也沒有回調,直接導致產品經理給出的UI和交互方案無法實現(xiàn)。因此,SDK的開放性,越來越成為開發(fā)者選型的關鍵因素。那么,SDK如何做到盡可能的開放呢?凡可配置的參數(shù),一律提供配置,比如:攝像頭參數(shù)、編解碼參數(shù)、美顏參數(shù)、混音參數(shù)等等凡可回調的數(shù)據(jù),一律提供回調,比如:攝像頭采集的視頻幀、紋理ID,麥克風采集的音頻幀等等凡運行過程中的狀態(tài),一律提供通知,比如:拍攝狀態(tài)、轉碼進度、取消事件等等另外,還需要盡可能地跟SDK上下游廠商建立良好的合作關系,比如美顏、濾鏡、人臉貼紙?zhí)匦?、大眼瘦臉等供應商,讓客戶可以隨時快速接入和替換任意一家廠商,從而加快產品迭代和上線的速度。3.性能要好雖然隨著時間的推移,手機的性能越來越強大,但是CPU居高不下、發(fā)熱厲害、內存消耗大、運行速度慢的App終究還是會失去很多寶貴的用戶,因此,無論是App本身,而是第三方SDK,性能永遠是值得關注的重點。SDK如何做到更好的性能呢?其實就一條:充分地利用GPU,盡一切可能減少CPU消耗,對于短視頻SDK的開發(fā)而已,具體來說有哪些值得關注的點呢?音視頻編解碼盡可能地使用硬編/硬解視頻/圖像的處理,盡可能使用OpenGL,包括:美顏、濾鏡、水印、剪裁、旋轉等等盡可能更高效地編寫OpenGL代碼,使用一些提高性能的特性,包括:VBO,VAO,FBO,PBO等等動態(tài)管理so,沒有用到的不加載;動態(tài)管理內存,使用時再分配合并處理流程,各種音視頻特效和處理,依次記錄狀態(tài),待保存的時候,再調用算法處理4.UI和SDK邏輯要徹底的分離優(yōu)秀的SDK,一定要盡可能避免把UI的界面和邏輯包含進去,不然SDK的使用者,很難滿足產品經理的UI和交互設計要求,做出差異化的效果。那么,SDK如何做到與UI邏輯徹底地分離呢?需要充分分解每一個短視頻的功能需求,搞清楚每一個需求的實現(xiàn)原理,哪部分是UI的,哪部分是核心的,前者寫到DEMO上,而后者則寫入SDK里面就拿短視頻剪輯這個功能點來舉個例子,下圖所示是短視頻的一個熱點功能,對短視頻截取中間某一段片段。仔細思考這個功能點,其實關鍵點在于:1.獲取視頻中的連續(xù)圖像在列表中進行展示2.繪制左右游標,以確定剪輯的起始和結束的時間點3.讀取視頻文件,丟棄時間區(qū)間以外的視頻幀,保留剩余視頻幀屬于UI的部分:1.用列表顯示視頻幀圖像2.繪制左右游標,支持手勢拖動3.根據(jù)視頻的總時長和游標的位置,計算出起始和結束的時間點屬于SDK的部分:1.提供視頻的時長2.提供視頻幀總數(shù)3.提供解碼后的每一幀視頻數(shù)據(jù)4.提供剪輯函數(shù),參數(shù)為:起始和結束的時間戳5.完成剪輯處理,輸出剪輯后的視頻文件這樣分離好了之后,再去編寫SDK的接口和UI的demo代碼,就非常清晰了。5.穩(wěn)定可靠,有更好的可支持性優(yōu)秀的App和SDK,首先一點就是要穩(wěn)定可靠,因為沒有人會喜歡經常崩潰的程序。不過,沒有人敢說自己的程序是完美的,不會有任何BUG的,但是,具備良好的可支持性的產品,往往更容易受到親賴。什么是可支持性?舉個例子,就像家里買的某些品牌的洗衣機或者空調,在出故障的時候,液晶屏幕上會打出一些錯誤碼,當你給售后打電話的時候,售后往往能夠根據(jù)描述的信息以及錯誤代碼很快地定位到問題或者給出臨時的解決方案。如何讓短視頻SDK具有更好的可支持性呢?關鍵在于一套健全而規(guī)范的日志系統(tǒng),可以有效提高技術支持和開發(fā)者排查問題的速度和效率,那么,設計這樣一套完善的日志系統(tǒng),有哪些關鍵點呢?支持配置SDK的輸出日志級別,如:ERROR,WARN,INFO,DEBUG,VERBOSESDK初始化的時候輸出關鍵的排障信息,如:應用包名,SDK版本,設備機型,系統(tǒng)OS版本,關鍵配置等規(guī)范的日志格式,如:<SDKTAG>:<ModuleTAG>:<ClassTAG>:<Message>,可以快速方便地過濾出各個模塊的運行狀態(tài)健全的問題牌子手冊/文檔,讓每一個錯誤碼都有文檔可依,開發(fā)者可以完成簡單初步的問題分析6.小結總而言之,設計一款優(yōu)秀并且口碑好的短視頻SDK,并不是簡

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論