HTTP?直播流 (HLS) 是使用最廣泛的視頻流協(xié)議之一。雖然它被稱(chēng)為 HTTP“實(shí)時(shí)”流,但它同時(shí)用于點(diǎn)播流和實(shí)時(shí)流。HLS 將視頻文件分解為更小的可下載 HTTP 文件,并使用HTTP協(xié)議交付它們。客戶(hù)端設備加載這些 HTTP 文件,然后將它們作為視頻播放。
HLS 的一個(gè)優(yōu)點(diǎn)是所有連接到 Internet 的設備都支持 HTTP,這使得它比需要使用專(zhuān)用服務(wù)器的流協(xié)議更容易實(shí)現。另一個(gè)優(yōu)點(diǎn)是 HLS 流可以根據網(wǎng)絡(luò )條件提高或降低視頻質(zhì)量,而不會(huì )中斷播放。這就是為什么在用戶(hù)觀(guān)看視頻的過(guò)程中,視頻質(zhì)量可能會(huì )變得更好或更差。此功能稱(chēng)為“自適應比特率視頻傳輸”或“自適應比特率流”,如果沒(méi)有它,緩慢的網(wǎng)絡(luò )條件可能會(huì )完全阻止視頻播放。HLS 由 Apple 開(kāi)發(fā),用于 Apple 產(chǎn)品,但現在已用于各種設備。
什么是流媒體?
流媒體是一種通過(guò) Internet 向用戶(hù)提供視頻和音頻媒體的方式。它的工作原理是一次一點(diǎn)點(diǎn)地連續將媒體文件發(fā)送到用戶(hù)的設備,而不是一次全部發(fā)送。原始媒體文件被遠程存儲,或者在直播的情況下,使用遠程攝像頭或麥克風(fēng)實(shí)時(shí)創(chuàng )建。這樣,無(wú)需用戶(hù)設備先下載整個(gè)文件即可播放視頻或音頻。
什么是 HTTP?
HTTP 是一種應用層協(xié)議,用于在連接到網(wǎng)絡(luò )的設備之間傳輸信息。普通用戶(hù)可以訪(fǎng)問(wèn)的每個(gè)網(wǎng)站和應用程序都運行在 HTTP 上。HTTP 上的數據傳輸通?;谡埱蠛晚憫?。幾乎所有的 HTTP 消息要么是請求,要么是對請求的響應。
通過(guò) HTTP 流式傳輸,標準的請求-響應模式不適用??蛻?hù)端和服務(wù)器之間的連接在流的持續時(shí)間內保持打開(kāi)狀態(tài),服務(wù)器將視頻數據推送到客戶(hù)端,這樣客戶(hù)端就不必請求每一段視頻數據。
HLS 是如何工作的?
服務(wù)器: HLS 流源自存儲媒體文件(在點(diǎn)播流中)或創(chuàng )建流的位置(在實(shí)時(shí)流中)的服務(wù)器。因為 HLS 基于 HTTP,所以任何普通的 Web 服務(wù)器都可以發(fā)起流。
服務(wù)器上發(fā)生兩個(gè)主要過(guò)程:
1.編碼:視頻數據被重新格式化,以便任何設備都可以識別和解釋數據。HLS 必須使用H.264或 H.265 編碼。
2.分段:視頻被分成幾秒鐘長(cháng)的片段。段的長(cháng)度可能會(huì )有所不同,但默認長(cháng)度為 6 秒(直到 2016 年為 10 秒)。
3.除了將視頻分割成片段外,HLS 還會(huì )創(chuàng )建視頻片段的索引文件以記錄它們所屬的順序。
4.HLS 還將創(chuàng )建多個(gè)不同質(zhì)量級別的重復片段集:480p、720p、1080p 等。
分發(fā):當客戶(hù)端設備請求流時(shí),編碼的視頻片段通過(guò) Internet 推送到客戶(hù)端設備。通常,內容交付網(wǎng)絡(luò ) (CDN)將幫助將流分發(fā)到地理上不同的區域。CDN 還將緩存流以更快地將其提供給客戶(hù)端。
客戶(hù)端設備:客戶(hù)端設備是接收流和播放視頻的設備——例如,用戶(hù)智能手機或筆記本電腦??蛻?hù)端設備使用索引文件作為按順序組裝視頻的參考,并根據需要從較高質(zhì)量的圖像切換到較低質(zhì)量的圖像(反之亦然)。
什么是 HLS 中的自適應比特率流式傳輸?
HLS 相對于其他一些流式傳輸協(xié)議的優(yōu)勢之一是自適應比特率流式傳輸。這是指隨著(zhù)網(wǎng)絡(luò )條件的變化在流的中間調整視頻質(zhì)量的能力。即使網(wǎng)絡(luò )條件變差,這種能力也可以讓視頻繼續播放;相反,它還可以最大限度地提高視頻質(zhì)量,使其達到網(wǎng)絡(luò )可以支持的最高水平。
如果網(wǎng)絡(luò )速度變慢,用戶(hù)的視頻播放器會(huì )檢測到這一點(diǎn),并且自適應比特率流會(huì )降低流的質(zhì)量,以便視頻不會(huì )停止播放。如果有更多的網(wǎng)絡(luò )帶寬可用,自適應比特率流式傳輸會(huì )提高流式傳輸的質(zhì)量。
自適應比特率流是可能的,因為 HLS 在分段過(guò)程中創(chuàng )建了多個(gè)不同質(zhì)量級別的重復分段流。用戶(hù)的視頻播放器可以在視頻播放期間從這些流之一切換到另一個(gè)流。
HLS 是否使用 TCP 或 UDP 作為其傳輸協(xié)議?
TCP和UDP是傳輸協(xié)議,這意味著(zhù)它們負責通過(guò) Internet 傳遞內容。TCP 往往比 UDP 更可靠地傳遞數據,但后者要快得多,即使某些數據在傳輸過(guò)程中可能會(huì )丟失。
由于 UDP 速度更快,一些流協(xié)議使用 UDP 而不是 TCP。然而,HLS 使用 TCP。這有幾個(gè)原因:
1.HLS 基于 HTTP,并且 HTTP 協(xié)議是為與 TCP 一起使用而構建的(有一些例外)。
2.與最初開(kāi)發(fā)流媒體時(shí)相比,現代互聯(lián)網(wǎng)更加可靠和高效。在當今世界的許多地方,用戶(hù)連接已經(jīng)大大改善,特別是對于移動(dòng)連接。因此,用戶(hù)有足夠的帶寬來(lái)支持每個(gè)視頻幀的傳輸。
3.自適應比特率流有助于補償 TCP 可能較慢的數據傳輸。
4.HLS 流不需要像視頻會(huì )議連接那樣是“實(shí)時(shí)的”。額外幾秒鐘的延遲不會(huì )像丟失視頻幀那樣影響用戶(hù)體驗。
流式傳輸通常使用哪些其他協(xié)議?
有許多與 HLS 類(lèi)似的協(xié)議,例如MPEG-DASH和HDS,它們也通過(guò) HTTP 運行并提供自適應比特率流。在 RTMP 或 HDS 上運行的 Adob??e Flash 曾經(jīng)是用于視頻流的主要技術(shù);但是,許多瀏覽器不再支持 Flash。RTMP 仍在使用中,盡管對它的支持正在下降。