快速探索,音视频技术不再神秘
歡迎大家前往騰訊云+社區(qū),獲取更多騰訊海量技術(shù)實(shí)踐干貨哦~
本文由goo發(fā)表于云+社區(qū)專(zhuān)欄
與生活緊密相連的音視頻,為何有那么多格式?直播、點(diǎn)播以及即時(shí)視頻其中又有怎樣的機(jī)制支撐?面對(duì)紛繁復(fù)雜的音視頻知識(shí),應(yīng)該如何學(xué)起?快速探索,音視頻技術(shù)不再神秘。
前言
面對(duì)一門(mén)技術(shù),我們熟悉而陌生,我們能夠熟練的基于平臺(tái)的API完成各種各樣的需求,掌握平臺(tái)特性、框架與原理。但隨著技術(shù)點(diǎn)不斷深入,卻發(fā)現(xiàn)自己存在基礎(chǔ)性與深度性的知識(shí)盲區(qū)。
局限于平臺(tái)API開(kāi)發(fā),并不能使我們走的很遠(yuǎn)。突破技術(shù)成長(zhǎng)必經(jīng)的瓶頸期,關(guān)鍵在于技術(shù)沉淀與對(duì)業(yè)務(wù)方向相結(jié)合,需要我們對(duì)知識(shí)積累與深入。本文分享了筆者對(duì)音視頻技術(shù)知識(shí)網(wǎng)絡(luò)的探索路徑,希望能給大家?guī)?lái)幫助。
一、采集 - 數(shù)據(jù)從哪里來(lái)?
1.1 采樣原理
定義:對(duì)連續(xù)變化圖像在空間坐標(biāo)上做離散化處理,將模擬信號(hào)轉(zhuǎn)變成數(shù)字信號(hào)的過(guò)程,即為圖像進(jìn)行采樣。
**通俗來(lái)說(shuō):**采集就是將看到的東西轉(zhuǎn)成二進(jìn)制流的過(guò)程。
1.2 基礎(chǔ)概念
1.2.1 圖像
「圖像」是個(gè)集合的概念,幀、頂場(chǎng)、底場(chǎng)都可以稱(chēng)為圖像。
- 幀 一幀通常是一幅完整圖像,當(dāng)采用逐行掃描方式掃描,每次掃描得到的信號(hào)就是一幀。
- 頂場(chǎng)與底場(chǎng) 采集視頻信號(hào)時(shí),掃描方式分為逐行掃描與隔行掃描。如果采用逐行掃描,得到的則是一幅完整的圖像;而采用隔行掃描(奇、偶數(shù)行),則掃描下來(lái)的一幀圖像就被分為了兩個(gè)部分,這每一部分就稱(chēng)為「場(chǎng)」,根據(jù)次序分為:「頂場(chǎng)」和「底場(chǎng)」
- 隔行掃描 每一幀被分割為兩場(chǎng)畫(huà)面交替顯示。每一幀被分割為頂場(chǎng)與底場(chǎng),通常是先掃描奇數(shù)行得到第一場(chǎng),然后掃描偶數(shù)行得到第二場(chǎng)。由于視覺(jué)暫留效應(yīng),人眼將會(huì)看到平滑的運(yùn)動(dòng)而不是閃動(dòng)的半幀半幀的圖像。但是這時(shí)會(huì)有閃爍出現(xiàn),盡管不容易被察覺(jué),但會(huì)使得人眼容易疲勞。當(dāng)屏幕的內(nèi)容是橫條紋時(shí),這種閃爍特別容易被注意到,并且會(huì)有鋸齒瑕疵。
- 逐行掃描 則是將每幀的所有畫(huà)面同時(shí)顯示。每次都顯示整個(gè)掃描幀,如果逐行掃描的幀率和隔行掃描的場(chǎng)率相同,人眼將看到比隔行掃描更平滑的圖像,相對(duì)于隔行掃描來(lái)說(shuō)閃爍較小。每一幀圖像均是由電子束順序地一行接著一行連續(xù)掃描而成,這種掃描方式稱(chēng)為逐行掃描。
- 兩者區(qū)別 舉個(gè)栗子,25fps 100行幀圖像,那么隔行掃描需要一秒掃描50次,但每次只需要掃描50行。而逐行掃描則只需要掃描25次,但每次需要掃描100行。 結(jié)論:隔行掃描掃描頻率為逐行掃描雙倍,信道帶寬為逐行掃描的一半。在圖像體驗(yàn)降低不多的情況下,信道帶寬減少了一半,使得設(shè)備成本減少,因此,早期大多數(shù)顯示器都采用隔行掃描。
- 傳送門(mén):逐行掃描、隔行掃描詳細(xì)講解
逐行掃描與隔行掃描
頂場(chǎng)與底場(chǎng),隔行掃描鋸齒瑕疵
1.2.2 顏色模型
RGB顏色模型
RGB模型
RGB分別代表紅綠藍(lán),每種顏色需要用3個(gè)數(shù)字表示,一個(gè)數(shù)字占用1字節(jié),一種顏色則需要3字節(jié),24位。
更高效的顏色模型?YUV
YCbCr顏色模型
YCbCr顏色模型是YUV家族的一員,關(guān)鍵特點(diǎn)在于它亮度信號(hào)Y與色度信號(hào)U、V相互分離。當(dāng)缺失U、V,僅有Y信號(hào)時(shí),也能夠表示出黑白圖像。
Y = kr\*R + kg\*G + kb\*BY 即「亮度」,kr、kg、kb 即 R、G、B 的權(quán)重值。
Cr = R – Y; Cg = G – Y; Cb = B – Y;疑問(wèn):對(duì)比RGB模型,YCbCr模型每個(gè)像素也需要3個(gè)信號(hào)表示,為什么說(shuō)該模型更高效?
優(yōu)化思路
人眼對(duì)亮度分辨率敏感度高于色彩敏感度。
視覺(jué)特性
基于人眼視覺(jué)特性,很明顯,我們需要從顏色方面入手,于是提出“色度取樣”,使顏色存儲(chǔ)減半或者更多。容易實(shí)現(xiàn),編碼壓力較小,收益較高。
色度取樣
優(yōu)化實(shí)現(xiàn)
我們知道顯示器掃描原理分為逐行掃描與隔行掃描,每條掃描線(xiàn)被掃描時(shí),色度數(shù)值傳送頻率會(huì)比亮度低,顏色取樣方式有多種,取樣方式通常基于亮度值,以4:X:Y的形式描述,X和Y是每?jī)蓚€(gè)色度通道中的數(shù)值的相對(duì)數(shù)量:
顯示器掃描顯示原理
繼續(xù)舉個(gè)栗子:
YCbCr像素點(diǎn)
我們有這樣一幅圖片,上面有像素陣列:
原始像素陣列
YCbCr 4:4:4
會(huì)有以下幾種采樣優(yōu)化方式:
4:2:2優(yōu)化后像素陣列
4:2:2取樣方式
4:2:0優(yōu)化后像素陣列
4:2:0取樣方式
上圖可以很直觀的看出:采用YCbCr顏色模型后,并不需要每個(gè)像素都存有3個(gè)分量,顏色分量通過(guò)“色度取樣”后,有效的減少了顏色分量的存儲(chǔ)。
1.3 圖像感知與獲取
<img src=“https://ask.qcloudimg.com/draft/2557878/yjqoq9qlhg.png”
width=“70%” />
成像傳感器
1.4 取樣與量化
舉個(gè)栗子,對(duì)于黑白圖像圖(a)為連續(xù)圖像,如果需要轉(zhuǎn)換成數(shù)字形式,需要幾步主要操作:
取樣與量化
取樣:(a)圖上沿AB線(xiàn)段等間隔對(duì)該圖像取樣,得到灰度級(jí)曲線(xiàn)(b)
量化:
?圖右側(cè)將灰度分為8個(gè)灰度級(jí),再橫向每一取樣的連續(xù)灰度值,量化為8個(gè)灰度之一,最終得到(d)圖,感知器輸出的量化完成流產(chǎn)生數(shù)字圖像的過(guò)程。
a. 圖像投影至傳感器陣列 b. 圖像取樣與量化結(jié)果
二、渲染 - 數(shù)據(jù)如何展現(xiàn)?
2.1 播放器原理
播放器播放從互聯(lián)網(wǎng)上播放視頻,需要經(jīng)過(guò):解協(xié)議、解封裝、解碼、音視頻同步這幾個(gè)核心步驟。
互聯(lián)網(wǎng)播放視頻流程
2.2 視頻編碼方式
視頻編解碼過(guò)程是數(shù)字視頻壓縮與解壓縮的過(guò)程。
選取音視頻編碼方案時(shí),需要考慮:視頻的質(zhì)量、碼率、編碼算法和解碼算法的復(fù)雜度、針對(duì)數(shù)據(jù)丟失和錯(cuò)誤的魯棒性(Robustness)、編輯的方便性、隨機(jī)訪(fǎng)問(wèn)、編碼算法設(shè)計(jì)的完美性、端到端的延時(shí)以及其它一些因素。
2.2.1 H.26X系列概述
H.26X 系列,由國(guó)際電傳視訊聯(lián)盟遠(yuǎn)程通信標(biāo)準(zhǔn)化組織(ITU-T)主導(dǎo),包括 H.261、H.262、H.263、H.264、H.265。
- H.261,主要用于老的視頻會(huì)議和視頻電話(huà)系統(tǒng)。是第一個(gè)使用的數(shù)字視頻壓縮標(biāo)準(zhǔn)。實(shí)質(zhì)上說(shuō),之后的所有的標(biāo)準(zhǔn)視頻編解碼器都是基于它設(shè)計(jì)的。
- H.262,等同于 MPEG-2 第二部分,使用在 DVD、SVCD 和大多數(shù)數(shù)字視頻廣播系統(tǒng)和有線(xiàn)分布系統(tǒng)中。
- H.263,主要用于視頻會(huì)議、視頻電話(huà)和網(wǎng)絡(luò)視頻相關(guān)產(chǎn)品。在對(duì)逐行掃描的視頻源進(jìn)行壓縮的方面,H.263 比它之前的視頻編碼標(biāo)準(zhǔn)在性能上有了較大的提升。尤其是在低碼率端,它可以在保證一定質(zhì)量的前提下大大的節(jié)約碼率。
- H.264,等同于 MPEG-4 第十部分,也被稱(chēng)為高級(jí)視頻編碼(Advanced Video Coding,簡(jiǎn)稱(chēng) AVC),是一種視頻壓縮標(biāo)準(zhǔn),一種被廣泛使用的高精度視頻的錄制、壓縮和發(fā)布格式。該標(biāo)準(zhǔn)引入了一系列新的能夠大大提高壓縮性能的技術(shù),并能夠同時(shí)在高碼率端和低碼率端大大超越以前的諸標(biāo)準(zhǔn)。
- H.265,被稱(chēng)為高效率視頻編碼(High Efficiency Video Coding,簡(jiǎn)稱(chēng) HEVC)是一種視頻壓縮標(biāo)準(zhǔn),是 H.264 的繼任者。HEVC 被認(rèn)為不僅提升圖像質(zhì)量,同時(shí)也能達(dá)到 H.264 兩倍的壓縮率(等同于同樣畫(huà)面質(zhì)量下比特率減少了 50%),可支持 4K 分辨率甚至到超高畫(huà)質(zhì)電視,最高分辨率可達(dá)到 8192×4320(8K 分辨率),這是目前發(fā)展的趨勢(shì)。
- 詳解待整理另外文章
2.2.2 MPEG系列概述
MPEG 系列,由國(guó)際標(biāo)準(zhǔn)組織機(jī)構(gòu)(ISO)下屬的運(yùn)動(dòng)圖象專(zhuān)家組(MPEG)開(kāi)發(fā)。
- MPEG-1 第二部分,主要使用在 VCD 上,有些在線(xiàn)視頻也使用這種格式。該編解碼器的質(zhì)量大致上和原有的 VHS 錄像帶相當(dāng)。
- MPEG-2 第二部分,等同于 H.262,使用在 DVD、SVCD 和大多數(shù)數(shù)字視頻廣播系統(tǒng)和有線(xiàn)分布系統(tǒng)中。
- MPEG-4 第二部分,可以使用在網(wǎng)絡(luò)傳輸、廣播和媒體存儲(chǔ)上。比起 MPEG-2 第二部分和第一版的 H.263,它的壓縮性能有所提高。
- MPEG-4 第十部分,等同于 H.264,是這兩個(gè)編碼組織合作誕生的標(biāo)準(zhǔn)。
- 詳解待整理另外文章
2.3 音頻編解碼方式
除了視頻,音頻當(dāng)然也需要編碼,而音頻常用編碼格式:
- AAC,英文全稱(chēng) Advanced Audio Coding,是由 Fraunhofer IIS、杜比實(shí)驗(yàn)室、AT&T、Sony等公司共同開(kāi)發(fā),在 1997 年推出的基于 MPEG-2 的音頻編碼技術(shù)。2000 年,MPEG-4 標(biāo)準(zhǔn)出現(xiàn)后,AAC 重新集成了其特性,加入了 SBR 技術(shù)和 PS 技術(shù),為了區(qū)別于傳統(tǒng)的 MPEG-2 AAC 又稱(chēng)為 MPEG-4 AAC。(AAC詳解待整理另外文章)
- MP3,英文全稱(chēng) MPEG-1 or MPEG-2 Audio Layer III,是當(dāng)曾經(jīng)非常流行的一種數(shù)字音頻編碼和有損壓縮格式,它被設(shè)計(jì)來(lái)大幅降低音頻數(shù)據(jù)量。它是在 1991 年,由位于德國(guó)埃爾朗根的研究組織 Fraunhofer-Gesellschaft 的一組工程師發(fā)明和標(biāo)準(zhǔn)化的。MP3 的普及,曾對(duì)音樂(lè)產(chǎn)業(yè)造成極大的沖擊與影響。
- WMA,英文全稱(chēng) Windows Media Audio,由微軟公司開(kāi)發(fā)的一種數(shù)字音頻壓縮格式,本身包括有損和無(wú)損壓縮格式。
三、處理 - 數(shù)據(jù)怎么加工?
音視頻加工處理,是業(yè)務(wù)的核心需求,對(duì)開(kāi)發(fā)者自由度最大的一個(gè)環(huán)節(jié),通過(guò)音視頻處理,可以實(shí)現(xiàn)各種各樣炫酷的特效。
**圖像、視頻常見(jiàn)處理方式:**美化、裁剪、縮放、旋轉(zhuǎn)、疊加、編解碼等。
**音頻常見(jiàn)處理方式:**重采樣、去噪,回聲消除,混音、編解碼等
常見(jiàn)框架:
(傳送門(mén):音視頻開(kāi)發(fā)開(kāi)源碼工程匯總)
四、傳輸 - 數(shù)據(jù)如何傳輸?
4.1 流媒體協(xié)議
流媒體,指通過(guò)互聯(lián)網(wǎng)以流式傳輸方式的媒體。流媒體協(xié)議,則是服務(wù)器與客戶(hù)端之間通信遵循但規(guī)定。說(shuō)到音視頻傳輸,我們不得不提流媒體協(xié)議,常見(jiàn)流媒體協(xié)議有:
| RTP | (Real-time Transport Protocol)一種網(wǎng)絡(luò)傳輸協(xié)議,RTP協(xié)議詳細(xì)說(shuō)明了在互聯(lián)網(wǎng)上傳遞音頻和視頻的標(biāo)準(zhǔn)數(shù)據(jù)包格式。 | 基于UDP 協(xié)議實(shí)現(xiàn) | RTP協(xié)議常用于流媒體系統(tǒng)(配合 RTSP 協(xié)議) |
| RTCP | (Real-time Transport Control Protoco)實(shí)時(shí)傳輸協(xié)議(RTP)的一個(gè)姐妹協(xié)議。 | RTCP為RTP媒體流提供信道外(out-of-band)控制。RTCP 本身并不傳輸數(shù)據(jù),但和 RTP 一起協(xié)作將多媒體數(shù)據(jù)打包和發(fā)送。RTCP 定期在流多媒體會(huì)話(huà)參加者之間傳輸控制數(shù)據(jù)。 | 為 RTP 所提供的服務(wù)質(zhì)量(Quality of Service)提供反饋。 |
| RTSP | (Real Time Streaming Protocol)定義了一對(duì)多應(yīng)用程序如何有效地通過(guò) IP 網(wǎng)絡(luò)傳送多媒體數(shù)據(jù)。 | RTSP 在體系結(jié)構(gòu)上位于 RTP 和 RTCP 之上,使用 TCP 或 UDP 完成數(shù)據(jù)傳輸 | 使用 RTSP 時(shí),客戶(hù)機(jī)和服務(wù)器都可以發(fā)出請(qǐng)求,即 RTSP 可以是雙向的。 |
| RTMP | (Real Time Messaging Protocol)Adobe Systems 公司為 Flash 播放器和服務(wù)器之間音頻、視頻和數(shù)據(jù)傳輸開(kāi)發(fā)的開(kāi)放協(xié)議。 | 協(xié)議基于 TCP,是一個(gè)協(xié)議族,包括 RTMP 基本協(xié)議及 RTMPT/RTMPS/RTMPE 等多種變種。 | 一種設(shè)計(jì)用來(lái)進(jìn)行實(shí)時(shí)數(shù)據(jù)通信的網(wǎng)絡(luò)協(xié)議,主要用來(lái)在 Flash/AIR 平臺(tái)和支持RTMP協(xié)議的流媒體/交互服務(wù)器之間進(jìn)行音視頻和數(shù)據(jù)通信。 |
| RTMFP | (Real Time Media Flow0 Protoco)Adobe 公司開(kāi)發(fā)的一套新的通信協(xié)議,全稱(chēng) Real Time Media Flow Protocol | 協(xié)議基于 UDP,支持 C/S 模式和 P2P 模式,即該協(xié)議可以讓使用 Adobe Flash Player 的終端用戶(hù)之間進(jìn)行直接通信 | Adobe Flash Player 的終端用戶(hù)之間進(jìn)行直接通信 |
| HTTP | (HyperText Transfer Protoco)運(yùn)行在 TCP 之上 | 這個(gè)協(xié)議是大家非常熟悉的,它也可以用到視頻業(yè)務(wù)中來(lái)。 | |
| HLS | (HTTP Live Streaming)是蘋(píng)果公司實(shí)現(xiàn)的基于 HTTP 的流媒體傳輸協(xié)議,全稱(chēng) ,可支持流媒體的直播和點(diǎn)播 | 短時(shí)長(zhǎng)的媒體文件(MPEG-TS 格式),客戶(hù)端不斷的下載并播放這些小文件。由于數(shù)據(jù)通過(guò) HTTP 協(xié)議傳輸,所以完全不用考慮防火墻或者代理的問(wèn)題,而且分段文件的時(shí)長(zhǎng)很短,客戶(hù)端可以很快的選擇和切換碼率,以適應(yīng)不同帶寬條件下的播放 HLS 的這種技術(shù)特點(diǎn),決定了它的延遲一般總是會(huì)高于普通的流媒體直播協(xié)議 | 主要應(yīng)用在 iOS 系統(tǒng),為 iOS 設(shè)備(如 iPhone、iPad)提供音視頻直播和點(diǎn)播方案。 |
4.2 網(wǎng)絡(luò)視頻點(diǎn)播業(yè)務(wù)
| CNTV | HTTP | MP4 | H.264 | AAC | Flash |
| CNTV(部分) | RTMP | FLV | H.264 | AAC | Flash |
| 華數(shù) TV | HTTP | MP4 | H.264 | AAC | Flash |
| 優(yōu)酷網(wǎng) | HTTP | FLV | H.264 | AAC | Flash |
| 土豆網(wǎng) | HTTP | F4V | H.264 | AAC | Flash |
| 56網(wǎng) | HTTP | FLV | H.264 | AAC | Flash |
| 音悅臺(tái) | HTTP | MP4 | H.264 | AAC | Flash |
| 樂(lè)視網(wǎng) | HTTP | FLV | H.264 | AAC | Flash |
| 新浪視頻 | HTTP | FLV | H.264 | AAC | Flash |
網(wǎng)絡(luò)視頻點(diǎn)播業(yè)務(wù)采用 HTTP 有兩方面優(yōu)勢(shì):
- HTTP 是基于 TCP 協(xié)議的應(yīng)用層協(xié)議,媒體傳輸過(guò)程中不會(huì)出現(xiàn)丟包等現(xiàn)象,從而保證了視頻的質(zhì)量。
- HTTP 是絕大部分的 Web 服務(wù)器支持的協(xié)議,因而流媒體服務(wù)機(jī)構(gòu)不必投資購(gòu)買(mǎi)額外的流媒體服務(wù)器,從而節(jié)約了開(kāi)支。
對(duì)于封裝格式:MP4,FLV,F4V 幾者只是容器,帶來(lái)的差異不大,而關(guān)鍵的是音視頻解碼方式:H.264與AAC,這兩種編碼標(biāo)準(zhǔn)目前仍被最廣泛的應(yīng)用。
4.3 網(wǎng)絡(luò)視頻直播業(yè)務(wù)
| 華數(shù)TV | RTMP | FLV | H.264 | AAC | Flash |
| 六間房 | RTMP | FLV | H.264 | AAC | Flash |
| 中國(guó)教育電視臺(tái) | RTMP | FLV | H.264 | AAC | Flash |
| 北廣傳媒移動(dòng)電視 | RTMP | FLV | H.264 | AAC | Flash |
| 上海IPTV | RTSP+RTP | TS | H.264 | MP2 | 機(jī)頂盒 |
網(wǎng)絡(luò)視頻直播服務(wù)采用 RTMP 作為直播協(xié)議的好處是可以直接被 Flash 播放器支持,而 Flash 播放器在 PC 時(shí)代有著極高的普及率,并且與瀏覽器結(jié)合的很好。因此這種流媒體直播平臺(tái)基本上可以實(shí)現(xiàn)了「無(wú)插件直播」,極大降低了用戶(hù)使用成本。
封裝格式、視頻編碼、音頻編碼、播放器方面幾乎全部采用了 FLV、H.264、AAC、Flash。FLV、RTMP、Flash 都是 Adobe 公司的產(chǎn)品,天生有著良好的結(jié)合性。
4.4 總結(jié)
以上為PC時(shí)代舊數(shù)據(jù),現(xiàn)移動(dòng)互聯(lián)網(wǎng)已爆發(fā),H5 以及客戶(hù)端應(yīng)用的普及,行業(yè)中對(duì)視頻業(yè)務(wù)技術(shù)方案的選擇也逐漸在發(fā)生著變化,而我們則需要結(jié)合眼下的實(shí)際情況和技術(shù)發(fā)展的趨勢(shì)去做出合適的技術(shù)選型。
結(jié)語(yǔ)
音視頻技術(shù)道路很長(zhǎng),本文旨在搭建音視頻知識(shí)知識(shí)網(wǎng),許多知識(shí)未能深入,后續(xù)仍需要我們不斷學(xué)習(xí)與實(shí)踐,抱著追求極致的精神去探索發(fā)現(xiàn),加油,我們共同快速成長(zhǎng)!
相關(guān)閱讀
【每日課程推薦】機(jī)器學(xué)習(xí)實(shí)戰(zhàn)!快速入門(mén)在線(xiàn)廣告業(yè)務(wù)及CTR相應(yīng)知識(shí)
此文已由作者授權(quán)騰訊云+社區(qū)發(fā)布,更多原文請(qǐng)點(diǎn)擊
搜索關(guān)注公眾號(hào)「云加社區(qū)」,第一時(shí)間獲取技術(shù)干貨,關(guān)注后回復(fù)1024 送你一份技術(shù)課程大禮包!
海量技術(shù)實(shí)踐經(jīng)驗(yàn),盡在云加社區(qū)!
總結(jié)
以上是生活随笔為你收集整理的快速探索,音视频技术不再神秘的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 校园招聘渐入高峰,希望大家通过我的书可以
- 下一篇: 微信小程序-蓝牙打印机demo