# 串流相關知識學習筆記 ###### tags: `streaming`、`interview` ## 影音串流技術中常見的通訊協議有哪些? ### HLS HLS(HTTP Live Streaming)是由**Apple**所提出的影音串流通訊協議,以HTTP通訊協定為基礎可支援所有與網路連線的裝置。其運作原理是將影音劃分為較小的HTTP檔案,並以HTTP通訊協議傳輸,可在不影響播放進度的情況下視網路狀況調整影片品質。 HLS的影片不一定要是直播影片,也可以是非直播 (具有明確片長、完整的影片),其核心是 `.m3u8` 與 `.ts` 這兩個檔案,與其說 m3u8 是個影片檔案,倒不如說, `.m3u8` 只是個文件,這個文件記錄了影片檔的位置與其設定。 而 HLS 的原理,其實是將影片拆成一個一個的`.ts`檔案,每個`.ts` 就是幾秒影片片段,`.ts`封裝了影像與聲音,透過 HTTP 協定扔給前端,藉此連續播放一個個不同的片段,來達成影片的播放 ### RTMP RTMP(Real-Time Messaging Protocol)中文為「即時訊息傳輸協定」,是由**Adobe**所有的媒體傳輸協議,是早期為了順利在Flash播放器中以串流技術傳輸影音資料所訂定的通訊協議。而現今則因為即時性的特色,使其被廣泛應用於直播、視訊會議等工具中,提供流暢的影音傳輸體驗。 RTMP 的延遲性比 HLS 還低,但它的其他缺點也很明顯: 1. RTMP 無法在手機的瀏覽器上播放。 2. 在 PC 瀏覽器上需要開啟 Flash 才能播放。 3. Adobe 將於2020年停止支援 Flash ### WebRTC WebRTC(Web Real-Time Communication)中文為網頁即時通訊,是一個採用JavaScript的開源API,專門實現瀏覽器與設備之間的即時語音對話與視訊對話功能,現今大多數的網路瀏覽器都有支援WebRTC。 簡單來說,WebRTC 的概念是由兩項基本核心技術組成: 1. Media Capture and Streams API 2. peer-to-peer connection #### Media Capture and Streams API 也可以說是 [MediaStreams](https://developer.mozilla.org/en-US/docs/Web/API/Media_Capture_and_Streams_API) API,該介面是基於MediaStreamsObject, 其代表一個多媒體(影像與聲音)的同步串流(synchronized stream), 開發者可以利用這個功能擷取本地端的多媒體串流,並顯示在瀏覽器上或是進行進一步的處理或傳送。 #### Peer-To-Peer Connection 簡稱P2P,點對點連線,意指用戶端(client)電腦之間能夠互相交換資料,無需透過主機端(server)來處理各用戶端的資料傳輸。 以平時最為熟悉的網路溝通方式為例: 當雙方傳輸檔案時,client A 要先將檔案上傳至server後,client B 再透過server拿取對應的檔案,也就是熟知的 [HTTP(超文本傳輸協定)](https://developer.mozilla.org/zh-TW/docs/Web/HTTP),以一問一答的方式進行溝通  P2P的溝通方式: 同樣各自須先連線到 server,確認彼此連線後, client A 跟 client B 就能彼此傳輸資料,而不需要再將資料上傳自 server,另一方再主動詢問 server 來拿取資料!  | 通訊協議 | 傳輸協定 | | -------- | -------- | | HLS | TCP | | RTMP | UDP | | WebRTC | TCP / UDP | ## 傳輸協定 #### UDP UDP為使用者資料包通訊協定(User Datagram Protocol),其為一種較不可靠的無連接式傳輸協定。無連接式表示傳送者並不知道接收對象,因在傳送資料前並未事前通知,故其送出資料前並不知道接收者為何人。 UDP協定就像在郵局寄出一封貼著標準郵票的信,您並不會在它送達時收到通知,您只能期待信件能順利送達。 #### TCP TCP代表傳輸控制協定(Transmission Control Protocol),是一個基於可靠連接的傳輸協定。既然TCP是基於連接的協定,傳送者完全知道訊息接收者的狀態。在任何資料傳送前,傳送者及接收者需先建立連線並事前通知。 TCP就像是採用掛號附回執聯寄信,信件送寄達時,您會收到通知;如果沒收到通知,您可以再傳送一次。  ## 什麼是視頻點播(VOD)? > 隨選視訊(英文:Video On Demand,VOD或VoD)是一套可以讓使用者透過網路選擇自己想要看的視訊內容的系統。使用者選定內容後,VOD系統可以用串流媒體的方式進行即時播放,也可以將內容完全下載後再進行播放。系統的播放模式取決於系統及營運上的需求規劃設計,包括收費機制、內容著作權、播放品質、機房系統、傳輸系統、收視端的機上盒等。 VOD代表Video on Demand,是一種能夠讓人們隨時隨地,在任何設備上觀看視頻的**視頻流化技術**。 #### VOD如何工作?  - **內容庫**:包含未壓縮視頻或夾層文件(mezzanine file)。 - **轉碼器**:獲取未壓縮視頻,然後使用ABR技術將其壓縮為不同碼率-分辨率的組合。 - **封裝**:這一步,被壓縮的視頻使用流行的自適應比特率流媒體協議(如MPEG-DASH和HLS)交付視頻。 - **加密**:通常情況下,使用Widevine、PlayReady和FairPlay Streaming等DRM技術保護視頻流。 - **通過CDN交付**:被封裝的視頻儲存在源站上,並通過CDN發送給用戶。 - **VOD播放器**:指使用自適應比特率流媒體協議、可播放視頻的特殊應用程序。 ## VOD如何加密? 從離開電腦到儲存體、處理和傳遞時保護媒體的安全。 使用媒體服務,您就能傳遞利用進階加密標準 (**AES-128**) 或下列三個主要數位版權管理 (DRM) 系統中任一個所動態加密的即時與隨選內容:**Microsoft PlayReady**、**Google Widevine** 和 **Apple FairPlay**。 #### 支援 DRM 用戶端的瀏覽器 | 瀏覽器 | 加密 | | ------------------------------------ | --------- | | Chrome | Widevine | | Microsoft Edge、Internet Explorer 11 | PlayReady | | Firefox | Widevine | | Opera | Widevine | | Safari | FairPlay | ## 資料來源 [什麼是視頻點播(VOD)?](https://cloud.tencent.com/developer/article/1942302) [[知識篇]WebRTC - JavaScript APIs](https://ithelp.ithome.com.tw/articles/10238383) [動態加密和金鑰傳遞的內容保護 ](https://learn.microsoft.com/zh-tw/azure/media-services/latest/drm-content-protection-concept)
×
Sign in
Email
Password
Forgot password
or
Sign in via Google
Sign in via Facebook
Sign in via X(Twitter)
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
Continue with a different method
New to HackMD?
Sign up
By signing in, you agree to our
terms of service
.