多媒體組件概述

1.綜述

? ? ? ? 社交載體從文字發(fā)展到靜態(tài)圖片,現(xiàn)又來到了視頻的時代。在視頻時代,每個移動端app中的多媒體組件所需要承接的業(yè)務(wù)也越來越復(fù)雜,而且一家公司可能會出多款app,因此一個好的多媒體組件需要有靈活的擴展性以及方便的可移植性。根據(jù)這些需求,我們把一個多媒體組件(或者叫音視頻組件)拆分成源、渲染組件以及輸出幾個部分。

2.源(source)

? ? ? ? 目前移動端可能接受到的視頻源有攝像頭錄制的數(shù)據(jù)以及從手機存儲(包括SD卡)中的文件,未來可能還有AR設(shè)備或者其他外接設(shè)備所捕捉的數(shù)據(jù)(純YY)。因此我們需要一個通用的接口來封裝視頻的輸入源。并且從不同輸入員獲取到的數(shù)據(jù)送去渲染(可能還包括一些預(yù)處理,如色彩格式轉(zhuǎn)換、圖像分析等)的過程有點像生產(chǎn)者-消費者模型,因此我們還需要有一個管理數(shù)據(jù)緩沖隊列的組件來調(diào)控整個處理過程。

3.渲染(render)

? ? ? ?我們把視頻數(shù)據(jù)的預(yù)處理、添加額外特效(諸如動態(tài)貼紙、濾鏡、美顏等等)統(tǒng)稱為渲染,可能與傳統(tǒng)的“渲染”定義不太一樣,可以認為是一個“加特效”的過程。不同的特效的實現(xiàn)過程不盡相同,因此如何統(tǒng)一管理所有的特效;如何方便的修改、添加、禁止一個特效是“渲染”這個模塊需要考慮的。這邊還會涉及到與c層的交互,因此渲染模塊會是整個視頻處理中最復(fù)雜也是最核心的模塊。

4.輸出(sink)

? ? ? ? 當(dāng)所有處理完成之后,最后需要做的就是將這個數(shù)據(jù)通過一定的方式顯示出來,或者寫入某個文件,或者推流到服務(wù)器上,這個工作就交由輸出模塊來完成。因為“輸出”的形式也是多種多樣的,因此這邊也需要有一個統(tǒng)一的管理以及良好的擴展。


圖像處理流程

關(guān)于渲染的分層

1.上層業(yè)務(wù)

? ? ? ?諸如動態(tài)貼紙、濾鏡、ar等等特效在不同的項目中有著完全不一樣的配置,包括數(shù)量、順序、交互、資源等等,因此這些做為強業(yè)務(wù)向的配置邏輯需要有獨立的管理類去控制。

2.公共業(yè)務(wù)

? ? ? ? 雖然在不同項目中配置項各有各的不同,但是繪制的內(nèi)容基本是可以枚舉的,因此動態(tài)貼紙、濾鏡、ar等這些會被歸為公共業(yè)務(wù)。

3.底層庫

? ? ? ? 對于繪制的基礎(chǔ)功能則是一個通用的、抽象的接口,可參考安卓系統(tǒng)GUI系統(tǒng)來設(shè)計整個繪制底層框架


應(yīng)用層與底層的職責(zé)分工
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 178,979評論 25 709
  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫、插件、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 15,210評論 4 61
  • 愛,就愛一生 所有的開始是什么已不重要 經(jīng)歷過的一切 只有我們最懂 不管別人怎么去說去看待 我都無所謂 也并不關(guān)心...
    停停不能停閱讀 434評論 0 1
  • 捕捉到漫版琴子最萌的表情
    一只可愛爍閱讀 201評論 2 1

友情鏈接更多精彩內(nèi)容