摘要:對(duì)象表示元素的一個(gè)媒體數(shù)據(jù)源。對(duì)象由應(yīng)用創(chuàng)建然后綁定到元素上。當(dāng)需要播放的時(shí)候,從對(duì)象中讀取媒體數(shù)據(jù)。每個(gè)對(duì)象都由一個(gè)實(shí)時(shí)的可檢索的變量來(lái)存儲(chǔ)歸一化后的對(duì)象。類型,只讀對(duì)象的當(dāng)前狀態(tài),剛創(chuàng)建的時(shí)候一定是。和方法會(huì)更新在特定的情況下。
2. MediaSource Object
MediaSource對(duì)象表示HTMLMediaElement元素的一個(gè)媒體數(shù)據(jù)源。它會(huì)記錄源的readyState和一個(gè)可以添加媒體數(shù)據(jù)去展示的SourceBuffer對(duì)象的列表。MediaSource對(duì)象由web應(yīng)用創(chuàng)建然后綁定到HTMLMediaElement元素上。web應(yīng)用通過添加SourceBuffer對(duì)象給sourceBuffers屬性從而添加媒體數(shù)據(jù)到source中。當(dāng)需要播放的時(shí)候,HTMLMediaElement從MediaSource對(duì)象中讀取媒體數(shù)據(jù)。
每個(gè)MediaSource對(duì)象都由一個(gè)實(shí)時(shí)的可檢索的range變量來(lái)存儲(chǔ)歸一化后的TimeRanges對(duì)象。當(dāng)MediaSource對(duì)象創(chuàng)建的時(shí)候這個(gè)變量初始化為一個(gè)空的TimeRanges對(duì)象,通過setLiveSeekableRange() 和 clearLiveSeekableRange()方法來(lái)維護(hù),然后通過HTMLMediaElement Extensions 來(lái)更改HTMLMediaElement.seekable屬性。
ReadyState
狀態(tài)值 | 描述 |
---|---|
closed | 表示source還沒有綁定到media元素上 |
open | source被media元素打開并且有可用的SourceBuffer對(duì)象在sourceBuffers中 |
ended | source還被綁定在media元素上,但是endOfStream() 執(zhí)行過了 |
構(gòu)造函數(shù)
[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相關(guān)的SourceBuffer列表,當(dāng)readyState=="closed"的時(shí)候總是空的,一旦readyState變?yōu)?open"狀態(tài)時(shí),就可以通過 addSourceBuffer()方法添加SourceBuffer對(duì)象到列表中
activeSourceBuffers 類型:SourceBufferList,只讀
sourceBuffers中selected video track, the enabled audio track(s), and the "showing" or "hidden" text track(s)的一個(gè)子集。
readyState 類型:ReadyState,只讀
MediaSource對(duì)象的當(dāng)前狀態(tài),剛創(chuàng)建的時(shí)候一定是‘closed’。
duration 類型:unrestricted double
MediaSource剛創(chuàng)建的時(shí)候,初始化值為NaN。
如何獲取?
如果readyState為closed,則返回NaN,這一步可以丟棄
返回該屬性當(dāng)前值
如何設(shè)置?
如果設(shè)置了負(fù)值或者NaN,會(huì)拋出TypeError異常,并丟棄剩余步驟
如果readyState不是open,會(huì)拋出InvalidStateError異常,并丟棄剩余步驟
sourceBuffers屬性中的任何一個(gè)SourceBuffer的updating值為true, ,會(huì)拋出InvalidStateError異常,并丟棄剩余步驟
運(yùn)行duration change algorithm算法可以設(shè)置新的duration給當(dāng)前屬性
Note
如果當(dāng)前有更高end time的緩沖幀,duration change algorithm會(huì)調(diào)整新的更大的duration。
appendBuffer()和 endOfStream()方法會(huì)更新duration在特定的情況下。
onsourceopen 類型:EventHandler
sourceopen事件的處理回調(diào)
onsourceended 類型:EventHandler
sourceended事件的處理回調(diào)
onsourceclose 類型:EventHandler
sourceclose事件的處理回調(diào)
addSourceBuffer
入?yún)ⅲ簍ype, 返回SourceBuffer對(duì)象,調(diào)用如:
sourceBuffer = ms.addSourceBuffer("video/mp4; codecs="avc1.4d401f"");
添加一個(gè)新的SourceBuffer對(duì)象到sourceBuffers屬性,接下來(lái)ua需要執(zhí)行:
如果type為空字符串(""),則拋出TypeError異常,并丟棄剩余步驟
如果type為不支持的MIME類型,則拋出 NotSupportedError異常,并丟棄剩余步驟
如果ua不能處理更多的SourceBuffer內(nèi)容,則拋出QuotaExceededError異常,并丟棄剩余步驟
比如當(dāng)媒體元素到了HAVE_METADATA狀態(tài)的時(shí)候,ua就不支持播放中更多track的添加了
如果readyState不是open,則拋出InvalidStateError異常,并丟棄剩余步驟
常見一個(gè)新的SourceBuffer對(duì)象和相關(guān)資源
設(shè)置新對(duì)象的generate timestamps flag為相關(guān)類型的[MSE-REGISTRY] entry
如果generate timestamps flag值為true,設(shè)置新對(duì)象的mode屬性為“sequence”,否則設(shè)置為“segments”
把新對(duì)象添加到sourceBuffers中,并且觸發(fā)一個(gè)addsourcebuffer事件
返回這個(gè)新對(duì)象
removeSourceBuffer
endOfStream
入?yún)ⅲ篹rror(EndOfStreamError),無(wú)返回值
setLiveSeekableRange*
更新 HTMLMediaElement Extensions元素的live seekable range變量
clearLiveSeekableRange*
isTypeSupported* static
檢測(cè)MediaSource對(duì)象是否支持創(chuàng)建特定MIME類型的SourceBuffer
2.3 事件只代表瀏覽器是否支持的能力,不代表addSourceBuffer()方法有足夠的資源創(chuàng)建新的SourceBuffer
事件名稱 | 描述 |
---|---|
sourceopen | readyState 從close到open 或 從ended到open |
sourceended | readyState 從open到ended |
sourceclose | readyState 從open到closed 或 從open到ended |
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/91967.html
摘要:對(duì)象表示元素的一個(gè)媒體數(shù)據(jù)源。對(duì)象由應(yīng)用創(chuàng)建然后綁定到元素上。當(dāng)需要播放的時(shí)候,從對(duì)象中讀取媒體數(shù)據(jù)。每個(gè)對(duì)象都由一個(gè)實(shí)時(shí)的可檢索的變量來(lái)存儲(chǔ)歸一化后的對(duì)象。類型,只讀對(duì)象的當(dāng)前狀態(tài),剛創(chuàng)建的時(shí)候一定是。和方法會(huì)更新在特定的情況下。 2. MediaSource Object MediaSource對(duì)象表示HTMLMediaElement元素的一個(gè)媒體數(shù)據(jù)源。它會(huì)記錄源的readySt...
摘要:特性描述了實(shí)例允許的二進(jìn)制流格式。一個(gè)對(duì)象必須支持以下至少一個(gè)設(shè)置一個(gè)擁有音頻和或視頻的兩個(gè),其中一個(gè)單獨(dú)處理音頻軌道,一個(gè)單獨(dú)處理視頻軌道一個(gè)二進(jìn)制流數(shù)據(jù)結(jié)構(gòu),提供了單個(gè)需要的,設(shè)置和其他。用于識(shí)別二進(jìn)制流數(shù)據(jù)屬于那個(gè)的標(biāo)識(shí)。 摘要 本說明通過允許javascript來(lái)生成看到播放的流媒體擴(kuò)展了HTMLMediaElement[HTML51]對(duì)象。允許javascript來(lái)生成流促進(jìn)...
閱讀 1214·2021-09-26 09:55
閱讀 3159·2019-08-30 15:55
閱讀 949·2019-08-30 15:53
閱讀 2286·2019-08-30 13:59
閱讀 2367·2019-08-29 13:08
閱讀 1098·2019-08-29 12:19
閱讀 3290·2019-08-26 13:41
閱讀 411·2019-08-26 13:24