本說明經過容許javascript來生成看到播放的流媒體擴展了HTMLMediaElement[HTML51]對象。容許javascript來生成流促進了不少用途,如可自適應的流和可進行時間變換的直播流。javascript
這一節是非規範性的(non-normative)。
這個特性容許JavaScript去動態地爲<audio>和<video>建立媒體流。它定義了一個MediaSource對象來給HTMLMediaElement提供媒體數據的源。MediaSource對象擁有一個或多個SourceBuffer對象。瀏覽器應用經過添加數據片斷(data segments)給SourceBuffer對象,而後根據系統性能和其餘因素來適應不一樣質量的後續data。SourceBuffer對象裏的數據是被組建成須要被編碼和播放的音頻、視頻和文字信息的軌道緩衝(track buffer)格式的。被用於擴展的二進制流格式結構以下圖所示:
java
這個說明定義了web
Active Track Buffers
一個提供開啓中的音頻track,選中的視頻track,和正在顯示或隱藏的字幕track的編碼過的幀集合的track buffer。這些tracks都和activeSourceBuffers列表中的SourceBuffer對象有關。算法
Append Window
添加buffer時用於篩選coded frames的一個pts的range。append window表示一個連續的有單一開始和結束時間的時間區間。只有pts在這個時間區間內的編碼幀才容許被添加到SourceBuffer中,其他的都會被篩選出去。append window的開始和結束時間是受appendWindowStart和appendWindowEnd兩個屬性分別控制。瀏覽器
Coded Frame
一個有presentation timestamp(pts), decode timestamp(dts)和coded frame duration的媒體數據單元。緩存
Coded Frame Duration
一個coded frame的時長,對視頻和文字而言,duration就是指一個視頻幀或者文字須要被展現的時間長度,對於音頻而言,duration就是指這一幀中包括的採樣的和。好比:一個包含441個採樣樣本的採樣率是@44100Hz的音頻幀的時長就是10ms。數據結構
Coded Frame Group
一組響鈴的,dts單調遞增沒有gap的coded frames集合。若是被coded frame processing algorithm算法檢測到的不連續片斷就會觸發abort方法從一個新的coded frame group開始從新播放。app
Decode Timestamp
The decode timestamp(就是一般說的dts)表示最晚的這一幀和任何獨立幀須要被解碼的時間(假設能夠被馬上解碼和渲染,應該等於這個presentation order裏最早被渲染的幀的pts)。若是這一幀不能在渲染順序中被解碼出來或者沒有dts,那麼dts就等於pts。dom
Initialization Segment
一系列的包括了須要解碼media segment序列的初始化信息的二進制數據。包括了codec初始化信息,多路segment的Track ID的映射和時間戳偏移等。ide
Media Segment
一序列的包括了封裝信息和時間戳信息的媒體數據二進制數據。Media Segment老是和最新添加的initialization segment相關。
MediaSource object URL
MediaSource object URL是一個惟一的經過createObjectURL()方法生成的Blob URI。用於綁定一個MediaSource對西那個到一個HTMLMediaElement元素上。
Parent Media Source
一個SourceBuffer對象的Parent Media Source是建立它的MediaSource對象。
Presentation Start Time
Presentation Start Time
Presentation Interval
一個coded frame的Presentation Interval是一個從pts到pts+coded frame's duration時間間隔。好比有一幀的pts是10s,coded frame duration是100ms,那麼the presentation interval就是[10-10.1)。注意:起始時間是閉區間,結束時間是開區間。
Presentation Order
coded frames 渲染的順序。The presentation order經過把coded frames 根據pts單調遞增的排列起來得到。
Presentation Timestamp
視頻幀顯示的具體時間,表示了這一幀應該何時被播放器渲染。
Random Access Point
一個media segment能夠不依賴以前數據解碼和連續播放的位置。對於視頻來講就是I-frames的位置,對音頻來講大多數幀均可以做爲random access point。由於視頻軌道的random access point分佈更稀疏,因此這些位置一般被看成復路流(multiplexed stream,我理解就是音視頻等混合起來的流)的random access point。
SourceBuffer byte stream format specification
byte stream format specification特性描述了SourceBuffer實例容許的二進制流格式。是根據傳入addSourceBuffer()方法的type。
SourceBuffer configuration
一個MediaSource實例下面的一個或多個SourceBuffer對象裏的tracks集合。一個MediaSource對象必須支持如下至少一個設置:
Track Description
一個二進制流數據結構,提供了單個track須要的TrackID,codec設置和其餘metadata。一個initialization segment的每一個track description都須要一個惟一的Track ID,若是不惟一的話,瀏覽器必須執行一個append error algorithm算法。
Track ID 用於識別二進制流數據屬於那個track的標識。每一個track description中的Track ID標識了一個 media segment屬於的track。