這篇文章將為大家詳細(xì)講解有關(guān)Android視頻開發(fā)中視頻的術(shù)語有哪些,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關(guān)知識有一定的了解。
目前創(chuàng)新互聯(lián)已為成百上千家的企業(yè)提供了網(wǎng)站建設(shè)、域名、虛擬空間、網(wǎng)站托管維護(hù)、企業(yè)網(wǎng)站設(shè)計、儀征網(wǎng)站維護(hù)等服務(wù),公司將堅持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。
說到安卓的視頻開發(fā),大多數(shù)朋友們都是用著開源的播放器,或者安卓自帶的 native mediaplayer,我打算分享一下視頻開發(fā)中常見的一些知識點,概念和術(shù)語,給不熟悉的朋友們先"掃掃盲"。
一說到視頻,音頻,大家肯定都聽說,至少有所耳聞這兩個詞 - 編碼(encode) 和 解碼(decode)。我這里提到的 Codec 就是一種程序,這種程序可以對視頻文件進(jìn)行編碼和解碼。在維基百科上對 Codec 是這樣定義的:
A video codec is an electronic circuit or software that compresses or decompresses digital video. It converts raw (uncompressed) digital video to a compressed format or vice versa. In the context of video compression, "codec" is a concatenation of "encoder" and "decoder"—a device that only compresses is typically called an encoder, and one that only decompresses is a decoder.
那么問題來了,視頻不就是視頻嗎,MP4,avi,rmvb,我們看的很多小電影不就是視頻嘛。。。下載下來就可以看了啊。。。。為何需要編碼解碼。。。都是什么鬼。
首先,我們常說 編碼就是壓縮,解碼就是解壓縮。視頻文件的本質(zhì)其實就是圖片的集合而已,當(dāng)一段連續(xù)的圖片不斷的出現(xiàn)在人眼前 (一般一個連貫的電影或者動畫至少要求一秒 24 幀,也就是一秒內(nèi)連續(xù)出現(xiàn) 24 張圖片),肉眼就會“欺騙性”的告訴大腦我們在看一個視頻,而不是幻燈片。
那我們可以開始做點算術(shù)題了,假設(shè)一張像素為 1280X720(清晰度,寬 1280 個像素點,高 720 個像素點) 的圖片,大小為約為 1280X720X3 bytes,就是 2.7MB。大家可以猜想一下為何我這里還需要乘以一個數(shù)字 3.那么一段 60 秒鐘的小電影,就需要 60X24(24 張圖片)X2.7MB ,約為 3.9GB 了!
之所以圖片大小是像素寬高相乘還要乘 3 是因為一個像素點需要至少三原色 (RGB) 來顯示像素點本身的顏色,做過安卓開發(fā)的同學(xué)都知道在 xml 里面定義顏色的格式吧?#ffffff - 代表白色 f 是十六進(jìn)制數(shù),也就是 4 位二進(jìn)制數(shù),三原色需要 3X4X2 位二進(jìn)制數(shù),也就是 3 個八位,一個八位是一個字節(jié),所以我們需要 3 個字節(jié)來顯示一個像素點
這 tm 必然是不能接受的?。∵@樣我用我 3TB 的移動硬盤,也不能把蒼老師的全部小電影保存起來,寶寶心里苦?。?/p>
所以 Codec 這種程序就出現(xiàn)了,它會把這些連續(xù)的圖片們通過一定的算法壓縮成體積更小的文件格式,這就是我們所謂的 編碼,壓縮。但是在播放器的客戶端,不管是 PC,手機(jī)也好,他們要顯示在屏幕上的,必須是實實在在的圖片啊,所以這些被壓縮過的文件最終又必須被還原成圖片格式,這就是 解碼,解壓縮。
視頻編碼,壓縮是一個非常復(fù)雜的過程,萬幸的是,現(xiàn)在市面上已經(jīng)有很多工具,還有現(xiàn)有規(guī)范來指導(dǎo)開發(fā)者進(jìn)行編碼解碼了。其中最常用的一些規(guī)范是:
可能大家對壓縮解壓縮還是不太理解。。。到底有哪些地方可以壓縮呢?那我們舉個栗子!
咱們想象一下一個場景,比如說在某些電影中,主人公在安靜的公園中因為失戀悲傷不已,全世界都仿佛靜止一般。。。。就這么呆坐了整整 30s。那么對于這種“靜態(tài)的場景”,視頻壓縮算法會只取這三十秒的前幾幀作為基準(zhǔn)幀圖片,對其余的 29s 的幀,采取只保存“不同的部分”的策略,這樣就不用保存這些差不多相同的圖片,這種做法叫“去冗余”。大大減少了視頻的體積。
當(dāng)然,這只是視頻壓縮算法的冰山一角,我們不多研究。
另外需要注意的是,Codec 的編碼與解碼包含對視頻數(shù)據(jù)的編碼解碼和音頻數(shù)據(jù)的編碼解碼,因為音頻的本質(zhì)是聲波信息,視頻是圖片處理,他們本質(zhì)上是不同的,我這里主要是介紹視頻數(shù)據(jù)的處理。
回到我們說的 Codec,所以說 Codec 是一套程序,它遵循不同的規(guī)范,根據(jù)規(guī)范的不同提供不同的壓縮解壓縮策略。既然是一套規(guī)范,那么就肯定需要實現(xiàn)??!在安卓平臺里面,谷歌提供了視頻編碼解碼的 API,對一些基礎(chǔ)的編碼解碼規(guī)范做了 API 的封裝,在接下里的章節(jié)我會慢慢介紹,其他移動平臺也都差不多,多多少少都會提供 API 的支持。
之前說到,咱們在看小電影的時候都會看到很多文件的后綴名,例如 mp4,rmvb,avi,喜歡看高清美劇的同學(xué)應(yīng)該還會經(jīng)常看到所謂的藍(lán)光 mkv 格式等等。我們習(xí)慣叫他們視頻文件,但是這樣說顯得不夠?qū)I(yè)。。。
嚴(yán)格的來講,他們應(yīng)該被叫做容器文件。。。。因為一個容器里,不僅僅包括了視頻 (video) 數(shù)據(jù),還包括了 (audio) 音頻數(shù)據(jù),有的容器還內(nèi)嵌字幕,那么就還有文字 (Text) 數(shù)據(jù)。不過容器文件雖然聽起來嚇人,但是它說到底也就是一個結(jié)構(gòu)化的文件而已。之所以說它結(jié)構(gòu)化,就是它包含的視頻,音頻,文字?jǐn)?shù)據(jù)都必須按照一定的規(guī)范,放在文件指定的位置 (方便播放器解析)。
容器文件就是上面說到的 Codec 程序?qū)D片集進(jìn)行編碼之后的產(chǎn)物,被 Codec 編碼之后,除了必要的視頻音頻信息之外,它還有一些其他的信息。
我畫了一個草圖,解釋了一個經(jīng)典的 MP4 容器結(jié)構(gòu)是啥樣。。。
里面提到了 Track(軌道),這是一個專業(yè)術(shù)語,用來區(qū)分不同的音視頻/文字?jǐn)?shù)據(jù) 但是 MP4 文件里面最重要的卻是這個 MetaData,它包含了很多關(guān)于視頻的原始數(shù)據(jù),比如視頻的大小,視頻的時長,還有一個索引表,這個索引表包含了不同軌道的起始位置 (以字節(jié)為單位),又因為每個軌道會被分成若干塊 sample(采樣,每一塊采樣都是可以單獨被播放器播放的一段數(shù)據(jù),以微妙為單位),metadata 也會維護(hù)一個細(xì)粒度更小的索引表,記錄了每一塊 sample 的大小,起始位置,對應(yīng)視頻的時間是多少 (以字節(jié)為單位) 等等的信息。
舉個簡單的例子,有些電影包含粵語,國語兩個聲道。我們想換聲道的時候會告訴播放器,我想聽粵語,那么播放器會去索引表查找粵語的軌道起始位置,并且源源不斷的讀取粵語音軌的數(shù)據(jù)并播放出來。這也解釋了為何上圖會有兩個 audio track。
在接下來的章節(jié)我會詳細(xì)介紹播放器是怎么解析容器文件,這里大家只需要知道大概就好。
從一個實際的流程出發(fā)
導(dǎo)演用膠片拍攝了原片 (Raw Data),膠片就代表著原始文件,也就是圖片集 (因為膠片就是一幀一幀的連續(xù)圖片),使用軟件把源文件編碼 (Encode) 成容器文件 (Container),之后可能為了不容分辨率的原因,還需要將原始的高清容器,轉(zhuǎn)換成不同的分辨率的容器文件,對應(yīng)圖中的 process 這一步。最后在放在服務(wù)器或者 cdn 上,又播放器將其下載播放。
關(guān)于Android視頻開發(fā)中視頻的術(shù)語有哪些就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
本文標(biāo)題:Android視頻開發(fā)中視頻的術(shù)語有哪些
網(wǎng)址分享:http://jinyejixie.com/article36/jjhspg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供軟件開發(fā)、全網(wǎng)營銷推廣、企業(yè)網(wǎng)站制作、品牌網(wǎng)站設(shè)計、電子商務(wù)、網(wǎng)站策劃
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)