真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

如何設(shè)計一款優(yōu)秀的短視頻SDK

2017 年,短視頻成為了內(nèi)容創(chuàng)業(yè)的新風(fēng)口,各種短視頻 App 如雨后春筍般先后上線,隨著互聯(lián)網(wǎng)內(nèi)容消費升級,視頻越來越像文字、圖片一樣,成為每一個 App 不可或缺的一部分。

專注于為中小企業(yè)提供網(wǎng)站設(shè)計、成都網(wǎng)站制作服務(wù),電腦端+手機端+微信端的三站合一,更高效的管理,為中小企業(yè)永吉免費做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動了成百上千家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設(shè)實現(xiàn)規(guī)模擴充和轉(zhuǎn)變。

為了能夠更好地聚焦于業(yè)務(wù),早日完成短視頻 APP 的上線,越來越多的公司傾向于選擇一家靠譜的短視頻 SDK 來起步,怎么定義靠譜?要關(guān)注哪些指標(biāo)?僅功能滿足就可以了嗎? —— 顯然不夠,下面我們看看,如何才能設(shè)計一款優(yōu)秀的短視頻 SDK ?

1. 包體一定要盡可能小

在移動互聯(lián)網(wǎng)時代,App 的包體大小,對獲取用戶有著至關(guān)重要的作用,特別是在線下的推廣活動中,包體太大,下載費時費流量,很多用戶會失去耐心,從而直接導(dǎo)致 App 的推廣效果大打折扣。

而 App 的包體大小,除了自身的代碼量,也會受到第三方庫的包體影響,因此,短視頻 SDK 包體越小,對于減小 App 包體大小越有幫助,開發(fā)者才會越喜歡。

那么,如何做到盡可能的減小 SDK 的包體呢 ?

  • 盡一切努力使用 Android/iOS 系統(tǒng)原生的 API,不怕難用,不怕踩坑

  • 良好的模塊劃分,不同的功能生成不同的動態(tài)庫,客戶可選擇性的拆卸和裁剪

  • 所使用的第三方庫,充分配置編譯選項和功能裁剪,只打包必須的功能、單獨抽離所需的模塊

2. SDK 一定要開放

使用第三方的 SDK,最怕的是像個黑盒,過于封閉,想配置的參數(shù)無法配置,需要的狀態(tài)也沒有回調(diào),直接導(dǎo)致產(chǎn)品經(jīng)理給出的 UI 和交互方案無法實現(xiàn)。因此,SDK 的開放性,越來越成為開發(fā)者選型的關(guān)鍵因素。

那么,SDK 如何做到盡可能的開放呢 ?

  • 凡可配置的參數(shù),一律提供配置,比如:攝像頭參數(shù)、編解碼參數(shù)、美顏參數(shù)、混音參數(shù)等等

  • 凡可回調(diào)的數(shù)據(jù),一律提供回調(diào),比如:攝像頭采集的視頻幀、紋理 ID,麥克風(fēng)采集的音頻幀等等

  • 凡運行過程中的狀態(tài),一律提供通知,比如:拍攝狀態(tài)、轉(zhuǎn)碼進度、取消事件等等

另外,還需要盡可能地跟 SDK 上下游廠商建立良好的合作關(guān)系,比如 美顏、濾鏡、人臉貼紙?zhí)匦А⒋笱凼菽樀裙?yīng)商,讓客戶可以隨時快速接入和替換任意一家廠商,從而加快產(chǎn)品迭代和上線的速度。

3. 性能要好

雖然隨著時間的推移,手機的性能越來越強大,但是 CPU 居高不下、發(fā)熱厲害、內(nèi)存消耗大、運行速度慢的 App 終究還是會失去很多寶貴的用戶,因此,無論是 App 本身,而是第三方 SDK,性能永遠是值得關(guān)注的重點。

SDK 如何做到更好的性能呢 ?其實就一條:充分地利用 GPU,盡一切可能減少 CPU 消耗,對于短視頻 SDK 的開發(fā)而已,具體來說有哪些值得關(guān)注的點呢 ?

  • 音視頻編解碼盡可能地使用硬編/硬解

  • 視頻/圖像的處理,盡可能使用 OpenGL,包括:美顏、濾鏡、水印、剪裁、旋轉(zhuǎn)等等

  • 盡可能更高效地編寫 OpenGL 代碼,使用一些提高性能的特性,包括:VBO, VAO, FBO, PBO 等等

  • 動態(tài)管理 so,沒有用到的不加載;動態(tài)管理內(nèi)存,使用時再分配

  • 合并處理流程,各種音視頻特效和處理,依次記錄狀態(tài),待保存的時候,再調(diào)用算法處理

4. UI 和 SDK 邏輯要徹底的分離

優(yōu)秀的 SDK,一定要盡可能避免把 UI 的界面和邏輯包含進去,不然 SDK 的使用者,很難滿足產(chǎn)品經(jīng)理的 UI 和交互設(shè)計要求,做出差異化的效果。

那么,SDK 如何做到與 UI 邏輯徹底地分離呢 ?

需要充分分解每一個短視頻的功能需求,搞清楚每一個需求的實現(xiàn)原理,哪部分是 UI 的,哪部分是核心的,前者寫到 DEMO 上,而后者則寫入 SDK 里面

就拿短視頻剪輯這個功能點來舉個例子,下圖所示是短視頻的一個熱點功能,對短視頻截取中間某一段片段。

如何設(shè)計一款優(yōu)秀的短視頻 SDK

仔細思考這個功能點,其實關(guān)鍵點在于:

1. 獲取視頻中的連續(xù)圖像在列表中進行展示

2. 繪制左右游標(biāo),以確定剪輯的起始和結(jié)束的時間點

3. 讀取視頻文件,丟棄時間區(qū)間以外的視頻幀,保留剩余視頻幀

屬于 UI 的部分:

1. 用列表顯示視頻幀圖像

2. 繪制左右游標(biāo),支持手勢拖動

3. 根據(jù)視頻的總時長和游標(biāo)的位置,計算出起始和結(jié)束的時間點

屬于 SDK 的部分:

1. 提供視頻的時長

2. 提供視頻幀總數(shù)

3. 提供解碼后的每一幀視頻數(shù)據(jù)

4. 提供剪輯函數(shù),參數(shù)為:起始和結(jié)束的時間戳

5. 完成剪輯處理,輸出剪輯后的視頻文件

這樣分離好了之后,再去編寫 SDK 的接口和 UI 的 demo 代碼,就非常清晰了。

5. 穩(wěn)定可靠,有更好的可支持性

優(yōu)秀的 App 和 SDK,首先一點就是要穩(wěn)定可靠,因為沒有人會喜歡經(jīng)常崩潰的程序。不過,沒有人敢說自己的程序是完美的,不會有任何 BUG 的,但是,具備良好的可支持性的產(chǎn)品,往往更容易受到親賴。

什么是可支持性 ?舉個例子,就像家里買的某些品牌的洗衣機或者空調(diào),在出故障的時候,液晶屏幕上會打出一些錯誤碼,當(dāng)你給售后打電話的時候,售后往往能夠根據(jù)描述的信息以及錯誤代碼很快地定位到問題或者給出臨時的解決方案。

如何讓短視頻 SDK 具有更好的可支持性呢 ?關(guān)鍵在于一套健全而規(guī)范的日志系統(tǒng),可以有效提高技術(shù)支持和開發(fā)者排查問題的速度和效率,那么,設(shè)計這樣一套完善的日志系統(tǒng),有哪些關(guān)鍵點呢 ?

  • 支持配置 SDK 的輸出日志級別,如:ERROR, WARN, INFO, DEBUG, VERBOSE

  • SDK 初始化的時候輸出關(guān)鍵的排障信息,如:應(yīng)用包名,SDK 版本,設(shè)備機型,系統(tǒng) OS 版本,關(guān)鍵配置等

  • 規(guī)范的日志格式,如::::,可以快速方便地過濾出各個模塊的運行狀態(tài)

  • 健全的問題牌子手冊/文檔,讓每一個錯誤碼都有文檔可依,開發(fā)者可以完成簡單初步的問題分析

6. 小結(jié)

總而言之,設(shè)計一款優(yōu)秀并且口碑好的短視頻 SDK,并不是簡簡單單堆積一些功能就夠了,其背后還是要花費不少心血的。

我在七牛主導(dǎo)設(shè)計和開發(fā)了一款 Android/iOS 平臺的 短視頻 SDK, 不僅 SDK 包體小、性能優(yōu)異、穩(wěn)定可靠,而且開放易用,有著健全的生態(tài)鏈,真真切切是一款良心之作,歡迎大家申請試用。


當(dāng)前名稱:如何設(shè)計一款優(yōu)秀的短視頻SDK
標(biāo)題來源:http://weahome.cn/article/gcghic.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部