# 串流相關知識學習筆記 ###### 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
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up