閱讀本篇大概需要20分鐘
視頻編輯分為兩部分:Camrea Engine(視頻資源采集)和Video Edit Engine(后期視頻編輯)。在Camrea Engine采集的時候我們也可以做一些編輯操作堪遂,這叫預(yù)處理憎兽,比如說加濾鏡捡絮。等到把采集到的資源交給Video Edit Engine時就是后處理。
Camera Engine是通過把被攝對象的光信號轉(zhuǎn)變成相應(yīng)的電信號,這時候還是模擬信號制市,經(jīng)過采樣志衍、量化暖庄、編碼,形成數(shù)字信號楼肪,計(jì)算機(jī)就可以用0和1來記錄它培廓,最終保存到磁盤上。
這里先闡述一下基本知識:
濾鏡是怎么加上去的呢春叫?這要從圖片說起肩钠。其實(shí)視頻就是很多張圖片連續(xù)播放形成的泣港。人眼為什么可以看到東西,物體通過漫反射把光子打到視網(wǎng)膜上价匠,而這個影像在視網(wǎng)膜上消失需要一段時間当纱,這就是殘影。經(jīng)過試驗(yàn)只要兩張圖片的切換在1/24秒人眼是分辨不出來的踩窖,那么對人來說它就是連續(xù)的坡氯。
在膠卷時代是每秒要求24張,數(shù)字時期是達(dá)到了每秒30張洋腮,就算中間丟了6張圖片我們也是不知道的箫柳,增加了視頻處理的容錯率,下面我們專業(yè)一點(diǎn)徐矩,用幀來代表一張圖滞时。那么一幀是怎么構(gòu)成的呢,每幀上的色彩都是通過RGB三原色各種不同的組合呈現(xiàn)給我們的滤灯。在我們的日常生活中經(jīng)常會聽分辨率1080920類似的詞坪稽,它說的就是在這個屏幕上有橫向有920個像素,縱向有1080個像素鳞骤,每個像素就是一個色點(diǎn)窒百。把圖片放大,你就可以清晰的看到圖片是由一個個小方塊構(gòu)成的豫尽,每個方塊都有自己的顏色篙梢。這里的顏色就是通過RGB三原色疊加而成的,而RGB每個都有256種亮度美旧,從0到255渤滞。那么總共就能組合出256256*256=16777216種顏色,很多吧榴嗅。
到這里基本知識我們鋪墊的差不多了:
再回到加濾鏡的話題妄呕,在業(yè)務(wù)層開發(fā)中我們加濾鏡其實(shí)是加入了一種可以讓Camera Engine識別的描述,它描述了每一幀上的每一個像素如何被“修改”嗽测,這里的“修改”可以是直接修改像點(diǎn)的RBG值绪励,也可以是在這一幀上疊加一層(當(dāng)然也可以疊加多層)。肉眼就會看到和原來視頻不同的濾鏡效果唠粥。有的濾鏡亮疏魏,有的濾鏡暗等等,其實(shí)最終就是通過調(diào)整GRB的亮度來實(shí)現(xiàn)的晤愧。到這里就是是視頻的預(yù)處理大莫。
Video Edit Engine設(shè)計(jì)到一下幾個部分:storyboard、clip养涮、stream葵硕、producer眉抬、effect和player贯吓。
storyboard相當(dāng)于一個畫布懈凹,這是一個抽象的概念,便于我們理解視頻編輯悄谐,所有的編輯操作我們都在這上面進(jìn)行介评。上面放的就是視頻、圖片爬舰,這里并不是指視頻们陆、圖片的原文件,而是對原文件的描述情屹。比如視頻的起始時間和終止時間坪仇、視頻的路徑,方向等等垃你。這種描述是通過一種面向?qū)ο蟮念恈lip體現(xiàn)的椅文。一個storyboard上可以有很多段描述文件clip,它們是有序的惜颇,可修改的皆刺。這時候我們也可以為clip添加effect。effect可以理解為修改視頻的描述文件的抽象類(我們使用的素材template就是effect更上層的抽象)凌摄。在storyboard導(dǎo)出成視頻或圖片的時候羡蛾,它告訴Engine怎么修改視頻的,最終也是通過修改每一幀上的像素點(diǎn)來實(shí)現(xiàn)的锨亏。
在導(dǎo)出的時候需要經(jīng)過進(jìn)一步封裝痴怨,把storyboard封裝成stream,它會將文件進(jìn)行解碼器予,根據(jù)effect對clip的描述浪藻,通過producer生成一個用戶想要的視頻。只有通過stream才能壓縮編碼成本地的文件或者解碼成比特流讓播放器player來使用劣摇。所以stream起到了一個對VF(視頻)和AF(音頻)編解碼的作用珠移。這里就是視頻的后處理。