什么是視頻編碼?實(shí)時(shí)流編碼如何工作?

      流式傳輸是一種通過 Internet 傳遞數(shù)據(jù)而無需使最終用戶完整下載數(shù)據(jù)的方法。實(shí)時(shí)流式傳輸是一種流式傳輸,其中流是通過 Internet 實(shí)時(shí)發(fā)送的,而無需首先進(jìn)行錄制和存儲(chǔ)。視頻游戲流、Periscope 和 Facebook Live 等社交媒體流以及Internet 上專業(yè)體育廣播都是實(shí)時(shí)流的示例。盡管音頻和視頻都可以實(shí)時(shí)流式傳輸,但本文將重點(diǎn)介紹實(shí)時(shí)視頻流。

      什么是視頻編碼?實(shí)時(shí)流編碼如何工作?-南華中天

      什么是視頻編碼

      視頻編碼是壓縮視頻數(shù)據(jù)的過程,以便其高效地發(fā)送到其他位置。流的接收端設(shè)備(例如,用戶觀看其喜愛的電視節(jié)目的平板電腦)對(duì)編碼數(shù)據(jù)進(jìn)行解碼。視頻編碼遵循眾所周知的標(biāo)準(zhǔn),因此各種設(shè)備都可以解釋編碼后的流。

      視頻編碼的必要性源于兩大原因:

      1.未壓縮的視頻文件通過 Internet 發(fā)送的用時(shí)太長(zhǎng),無法進(jìn)行流式傳輸。

      2.視頻必須采用任何用戶設(shè)備(智能手機(jī)、筆記本電腦和 PC 等)可以解釋的格式。

      在視頻實(shí)時(shí)流中,設(shè)備會(huì)獲取視聽輸入并進(jìn)行編碼,然后將其全部發(fā)送給觀眾。此過程的編碼部分對(duì)于允許各種用戶設(shè)備接收和播放視頻至關(guān)重要。

      實(shí)時(shí)流編碼如何工作?

      從視頻源(例如網(wǎng)絡(luò)攝像頭)捕獲的實(shí)時(shí)流發(fā)送到服務(wù)器,在服務(wù)器上,HLS 或 MPEG-DASH 等流協(xié)議將視頻饋送分割成更小的片段,每一段的長(zhǎng)度為幾秒鐘。

      然后使用編碼標(biāo)準(zhǔn)對(duì)視頻內(nèi)容進(jìn)行編碼。當(dāng)今廣泛使用的編碼標(biāo)準(zhǔn)稱為H.264,但也使用 H.265、VP9 和 AV1 等標(biāo)準(zhǔn)。此編碼過程通過刪除冗余視覺信息來壓縮視頻。例如,在有人在藍(lán)天背景下講話的流中,藍(lán)天不需要為視頻的每一秒重新渲染一次,因?yàn)樗]有太大變化。因此,可以從視頻的大多數(shù)幀中去除藍(lán)天。

      然后,使用內(nèi)容交付網(wǎng)絡(luò)(CDN)分發(fā)壓縮的分段視頻數(shù)據(jù)。若無 CDN,只有很少的觀眾真正能夠加載實(shí)時(shí)流,本文的最后一部分將說明其原因。

      大多數(shù)移動(dòng)設(shè)備都具有內(nèi)置編碼器,使普通用戶可以輕松地在社交媒體平臺(tái)上和通過消息傳遞應(yīng)用進(jìn)行實(shí)時(shí)流式傳輸。想要質(zhì)量更高的流的品牌和公司使用自己的編碼軟件和/或硬件。

      什么是視頻編碼?實(shí)時(shí)流編碼如何工作?-南華中天

      新技術(shù)如何加快實(shí)時(shí)流式傳輸速度?

      在許多實(shí)時(shí)流中,觀眾仍然會(huì)體驗(yàn)到 20 到 30 秒的延遲;換而言之,他們觀看的內(nèi)容比實(shí)時(shí)落后 20 到 30 秒。部分原因在于,視頻的各個(gè)片段必須完整加載后才能播放,而且每個(gè)視頻片段可能需要花費(fèi)幾秒鐘來加載。

      應(yīng)對(duì)這種延遲的一種解決方案是稱為分塊編碼的過程。此過程通過“分塊”進(jìn)行工作,即將視頻片段細(xì)分為更小的碎塊。然后,對(duì)那些較小的碎塊進(jìn)行編碼,接收流的設(shè)備可以在加載整個(gè)片段之前播放這些較小的碎塊。

      CDN 如何更好地加快實(shí)時(shí)流式傳輸?

      CDN 對(duì)于實(shí)時(shí)流式傳輸至關(guān)重要,因?yàn)?CDN 可以將流分發(fā)給位置大不相同的用戶。而且,CDN 具有比單一源站服務(wù)器更多的帶寬來分發(fā)流。若無 CDN,實(shí)時(shí)流可能很容易遇到帶寬問題。但是,大多數(shù) CDN 仍必須加載完整的視頻片段,然后才能將其一次性提供給多個(gè)用戶。這再次引入了分塊編碼應(yīng)解決的延遲問題。