網際網路上的流媒體視訊是如何工作? - Quastor
Leandro Moreira是 Globo 的首席軟體工程師,負責他們的實時視訊流媒體平臺和基礎設施。
他寫了一篇很棒的部落格文章,介紹了視訊如何在您的計算機上播放(自適應位元率流、HLS 等)、視訊如何傳送到您的計算機(CDN、多 CDN 等)以及如何處理電影背後的所有工程成數字視訊(編解碼器、容器、FFMPEG 等)。
下面是部分的摘要:
播放
當您遇到一個嵌入了視訊播放器的網站時,幕後會發生很多事情。
您擁有播放器 UI,帶有暫停/播放按鈕、字幕控制元件、視訊速度和其他選項。
玩家將支援圍繞 DRM、廣告注入、縮圖預覽等的不同選項。
在幕後,現代視訊平臺將使用自適應位元率流從伺服器流式傳輸視訊。
自適應位元率流意味著伺服器有多個不同版本的視訊(稱為再現),每個版本的顯示大小(解析度)和檔案大小(位元率)都不同。
視訊播放器將根據使用者的螢幕尺寸和頻寬動態選擇最佳再現。它將選擇最小化緩衝並提供最佳使用者體驗的再現。
HLS
HTTP Live Streaming (HLS)是 Apple 為基於 HTTP 的自適應位元率流設計的協議。它是網際網路上最流行的流媒體格式。
基本概念是您將視訊檔案分成小段,每個段長 2-12 秒。
如果您有一個 2 小時長的視訊,您可以將其分成 10 秒長的片段並最終得到 720 個片段。
每個段都是一個以.ts副檔名結尾的檔案。這些檔案按順序編號,因此您會得到一個如下所示的目錄:
segments/ 00001.ts 00002.ts 00003.ts 00004.ts 00005.ts |
然後,播放器將在使用者流式傳輸時下載並播放每個片段。如果使用者失去網路連線,它還將保留段緩衝區。
同樣,HLS 是一種自適應位元率流式傳輸協議,因此 Web 伺服器將具有正在播放的視訊的多個不同再現(版本)。
所有的演繹都將被分成相同長度的片段。因此,回到我們的 2 小時長視訊示例,它可能有 720 個 1080p 的片段檔案,720 個 720p 的片段檔案,720 個 480p 的片段檔案。
所有段檔案都是有序的,每個檔案長度為 10 秒。
然後,播放器將檢視可用的頻寬量,並做出最好的猜測,以確定它接下來應該下載哪個需要渲染的片段檔案。
如果您在觀看視訊時網路連線變慢,播放器可以將您降級為下一個片段檔案的較低質量渲染。
當您的連線變得更快時,播放器可以升級您的渲染級別。
MP4 和 WebM
另一種方法是採用 HTML<video>元素並新增直接指向 MP4 或 WebM 檔案的“src”屬性。
這稱為偽流式下載或漸進式下載,其中視訊檔案被下載到使用者裝置上的物理驅動器。
通常,視訊儲存在網路瀏覽器的臨時目錄中,使用者可以在後臺下載檔案時開始觀看。
使用者還可以跳轉到視訊中的特定點,播放器將使用位元組範圍請求來估計檔案的哪個部分對應於使用者試圖尋找的視訊中的位置。
MP4 和 WebM 播放效率低下的原因是它們不支援自適應位元率。
每個想要無緩衝觀看檔案的使用者都必須擁有足夠快的 Internet 連線,以比播放速度更快地下載檔案。
因此,當您使用這些格式時,您必須在提供更高質量的視訊檔案與降低 Internet 連線速度要求之間做出權衡。
傳送
向使用者提供視訊時,有兩個主要元件
- 源伺服器
- 內容交付網路
源伺服器是事實的來源。這是開發人員上傳原始視訊檔案的地方。
然後,CDN 將從源伺服器中提取檔案,並將該檔案快取在世界各地的一組互連伺服器上(在靠近使用者的位置)。
這樣,當使用者想要請求檔案時,他們可以從 CDN 中的伺服器進行請求。這比您的原始伺服器將整個檔案傳送給您的所有使用者要快得多(並且可擴充套件性更高)。
很多企業會選擇 Multi-CDN 環境,負載分佈在多個 CDN 之間。這通過為使用者提供更多可供選擇的伺服器並提高您網站的可用性來改善使用者體驗。
你可以在這裡閱讀全文。
相關文章
- 網際網路上的流媒體影片是如何工作? - QuastorAST
- Go語言實戰流媒體視訊網站Go網站
- 佔全球網際網路流量最多的流媒體,花落誰家?
- FMS 流媒體視訊技術
- Cookie如何暴露你在網際網路上的行蹤Cookie
- GitHub:網際網路上的創新中心Github
- RTMP視訊直播系統(PC網頁/微信小程式/播放器/流媒體)網頁微信小程式播放器
- 網際網路+新媒體營銷
- Nielsen:全球網民如何在網際網路上打發時間
- 網際網路上50個爆笑段子
- 騰訊到底是網際網路上的模仿者還是潮流的追隨者?薦
- 騰創網路流媒體技術研究(影片播出-遠端教學-視訊會議)
- 揭祕網際網路是如何的推廣 網際網路如何推廣
- 網際網路上最有用的102個網站網站
- 女quan、遊戲媒體和網路暴力是如何殺人的遊戲
- mysql網際網路開發視訊教程MySql
- 盤點:網際網路上無處不在的"殭屍"
- 細數網際網路上的17種危險 - 下篇
- 細數網際網路上的17種危險 - 上篇
- Shodan:網際網路上最可怕的搜尋引擎
- 網站或自媒體文章如何寫?精準獲流方式網站
- 網際網路上前一百萬個網站的SSL/TLS分析網站TLS
- 網際網路是如何連線的:計網概述
- 使用ffmpeg推送視訊流至流媒體伺服器(c語言)伺服器C語言
- Elon Musk 的太空網際網路將會如何工作
- Mac 本地連線共享;Mac檢視網際網路上的賬戶密碼記錄Mac密碼
- 關於視訊流媒體伺服器的學習記錄伺服器
- CTR:2021年Q2網際網路電視媒體分析報告
- 資料資訊圖——網際網路上的那些成人事兒
- 神經網路是如何工作的?神經網路
- 理解臉書是如何從網際網路消失的
- 網際網路是如何誕生的?——資訊圖
- 網路視訊直播系統開發,視訊解碼是如何實現的?
- Google是如何蒐集網際網路資訊Go
- 流媒體調研:雲端視訊監控與視覺化對講視覺化
- 自媒體視訊素材網站乾貨來囉!趕快收藏!網站
- Golang 開源流媒體音視訊網路傳輸服務-LALGolang
- 關於隱私——在網際網路上,沒人知道那條狗是你薦