摘要:對象表示元素的一個媒體數據源。對象由應用創建然后綁定到元素上。當需要播放的時候,從對象中讀取媒體數據。每個對象都由一個實時的可檢索的變量來存儲歸一化后的對象。類型,只讀對象的當前狀態,剛創建的時候一定是。和方法會更新在特定的情況下。
2. MediaSource Object
MediaSource對象表示HTMLMediaElement元素的一個媒體數據源。它會記錄源的readyState和一個可以添加媒體數據去展示的SourceBuffer對象的列表。MediaSource對象由web應用創建然后綁定到HTMLMediaElement元素上。web應用通過添加SourceBuffer對象給sourceBuffers屬性從而添加媒體數據到source中。當需要播放的時候,HTMLMediaElement從MediaSource對象中讀取媒體數據。
每個MediaSource對象都由一個實時的可檢索的range變量來存儲歸一化后的TimeRanges對象。當MediaSource對象創建的時候這個變量初始化為一個空的TimeRanges對象,通過setLiveSeekableRange() 和 clearLiveSeekableRange()方法來維護,然后通過HTMLMediaElement Extensions 來更改HTMLMediaElement.seekable屬性。
ReadyState
狀態值 | 描述 |
---|---|
closed | 表示source還沒有綁定到media元素上 |
open | source被media元素打開并且有可用的SourceBuffer對象在sourceBuffers中 |
ended | source還被綁定在media元素上,但是endOfStream() 執行過了 |
構造函數
[Constructor] interface MediaSource : EventTarget { readonly attribute SourceBufferList sourceBuffers; readonly attribute SourceBufferList activeSourceBuffers; readonly attribute ReadyState readyState; attribute unrestricted double duration; attribute EventHandler onsourceopen; attribute EventHandler onsourceended; attribute EventHandler onsourceclose; SourceBuffer addSourceBuffer(DOMString type); void removeSourceBuffer(SourceBuffer sourceBuffer); void endOfStream(optional EndOfStreamError error); void setLiveSeekableRange(double start, double end); void clearLiveSeekableRange(); static boolean isTypeSupported(DOMString type); };2.1 屬性值
sourceBuffers 類型:SourceBufferList,只讀
MediaSource相關的SourceBuffer列表,當readyState=="closed"的時候總是空的,一旦readyState變為"open"狀態時,就可以通過 addSourceBuffer()方法添加SourceBuffer對象到列表中
activeSourceBuffers 類型:SourceBufferList,只讀
sourceBuffers中selected video track, the enabled audio track(s), and the "showing" or "hidden" text track(s)的一個子集。
readyState 類型:ReadyState,只讀
MediaSource對象的當前狀態,剛創建的時候一定是‘closed’。
duration 類型:unrestricted double
MediaSource剛創建的時候,初始化值為NaN。
如何獲取?
如果readyState為closed,則返回NaN,這一步可以丟棄
返回該屬性當前值
如何設置?
如果設置了負值或者NaN,會拋出TypeError異常,并丟棄剩余步驟
如果readyState不是open,會拋出InvalidStateError異常,并丟棄剩余步驟
sourceBuffers屬性中的任何一個SourceBuffer的updating值為true, ,會拋出InvalidStateError異常,并丟棄剩余步驟
運行duration change algorithm算法可以設置新的duration給當前屬性
Note
如果當前有更高end time的緩沖幀,duration change algorithm會調整新的更大的duration。
appendBuffer()和 endOfStream()方法會更新duration在特定的情況下。
onsourceopen 類型:EventHandler
sourceopen事件的處理回調
onsourceended 類型:EventHandler
sourceended事件的處理回調
onsourceclose 類型:EventHandler
sourceclose事件的處理回調
addSourceBuffer
入參:type, 返回SourceBuffer對象,調用如:
sourceBuffer = ms.addSourceBuffer("video/mp4; codecs="avc1.4d401f"");
添加一個新的SourceBuffer對象到sourceBuffers屬性,接下來ua需要執行:
如果type為空字符串(""),則拋出TypeError異常,并丟棄剩余步驟
如果type為不支持的MIME類型,則拋出 NotSupportedError異常,并丟棄剩余步驟
如果ua不能處理更多的SourceBuffer內容,則拋出QuotaExceededError異常,并丟棄剩余步驟
比如當媒體元素到了HAVE_METADATA狀態的時候,ua就不支持播放中更多track的添加了
如果readyState不是open,則拋出InvalidStateError異常,并丟棄剩余步驟
常見一個新的SourceBuffer對象和相關資源
設置新對象的generate timestamps flag為相關類型的[MSE-REGISTRY] entry
如果generate timestamps flag值為true,設置新對象的mode屬性為“sequence”,否則設置為“segments”
把新對象添加到sourceBuffers中,并且觸發一個addsourcebuffer事件
返回這個新對象
removeSourceBuffer
endOfStream
入參:error(EndOfStreamError),無返回值
setLiveSeekableRange*
更新 HTMLMediaElement Extensions元素的live seekable range變量
clearLiveSeekableRange*
isTypeSupported* static
檢測MediaSource對象是否支持創建特定MIME類型的SourceBuffer
2.3 事件只代表瀏覽器是否支持的能力,不代表addSourceBuffer()方法有足夠的資源創建新的SourceBuffer
事件名稱 | 描述 |
---|---|
sourceopen | readyState 從close到open 或 從ended到open |
sourceended | readyState 從open到ended |
sourceclose | readyState 從open到closed 或 從open到ended |
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/11050.html
摘要:對象表示元素的一個媒體數據源。對象由應用創建然后綁定到元素上。當需要播放的時候,從對象中讀取媒體數據。每個對象都由一個實時的可檢索的變量來存儲歸一化后的對象。類型,只讀對象的當前狀態,剛創建的時候一定是。和方法會更新在特定的情況下。 2. MediaSource Object MediaSource對象表示HTMLMediaElement元素的一個媒體數據源。它會記錄源的readySt...
摘要:特性描述了實例允許的二進制流格式。一個對象必須支持以下至少一個設置一個擁有音頻和或視頻的兩個,其中一個單獨處理音頻軌道,一個單獨處理視頻軌道一個二進制流數據結構,提供了單個需要的,設置和其他。用于識別二進制流數據屬于那個的標識。 摘要 本說明通過允許javascript來生成看到播放的流媒體擴展了HTMLMediaElement[HTML51]對象。允許javascript來生成流促進...
閱讀 1357·2021-09-02 10:19
閱讀 1100·2019-08-26 13:25
閱讀 2108·2019-08-26 11:37
閱讀 2412·2019-08-26 10:18
閱讀 2675·2019-08-23 16:43
閱讀 2988·2019-08-23 16:25
閱讀 775·2019-08-23 15:53
閱讀 3296·2019-08-23 15:11