Limited availability
srcObject
㯠HTMLMediaElement
ã¤ã³ã¿ã¼ãã§ã¤ã¹ã®ããããã£ã§ã HTMLMediaElement
ã«é¢é£ä»ããããã¡ãã£ã¢ã½ã¼ã¹ãæä¾ãããªãã¸ã§ã¯ããè¨å®ã¾ãã¯åå¾ãã¾ããé¢é£ä»ãããã¦ããªããã° null
ã§ãã
ãã®ãªãã¸ã§ã¯ã㯠MediaStream
ãMediaSource
ãBlob
ãï¼Blob ããæ´¾çãã¦ããï¼ File
ã§ãã
ã¡ã¢: 2020 å¹´ 3 æç¾å¨ã Safari ã®ã¿ã srcObject
ã«å¯¾ãã¦å®å
¨ã«ãããªãã¡ MediaSource
ãMediaStream
ãBlob
ãFile
ã®ãªãã¸ã§ã¯ããå¤ã«ãããã¨ã«å¯¾å¿ãã¦ãã¾ããä»ã®ãã©ã¦ã¶ã¼ã¯ MediaStream
ã«å¯¾å¿ãã¦ãã¾ããä»ã®ãã©ã¦ã¶ã¼ã追ãã¤ãã¾ã§ã代æ¿ã¨ã㦠URL.createObjectURL()
ã使ç¨ã㦠URL ã使ããããã HTMLMediaElement.src
ã«ä»£å
¥ããããã«ãã¦ãã ããï¼ä»¥ä¸ã®ä¾ãåç
§ãã¦ãã ããï¼ãããã«ããã¼ã¸ã§ã³ 108 ã® Chromium ã¯ãå°ç¨ã¯ã¼ã«ã¼ã® MediaSource
ãªãã¸ã§ã¯ããããã®ãªãã¸ã§ã¯ãã®ï¼ã¯ã¼ã«ã¼ãã転éãããï¼ MediaSourceHandle
ã¤ã³ã¹ã¿ã³ã¹ã srcObject
ã«å²ãå½ã¦ããã¨ã§è£
çãããã¨ã«å¯¾å¿ãã¦ãã¾ãã
MediaStream
ãMediaSource
ãBlob
ãFile
ãªãã¸ã§ã¯ããï¼å®éã«ä½ã対å¿ããã¦ããã®ãã¯äºææ§ä¸è¦§è¡¨ã確èªãã¦ãã ãããï¼é¢é£ä»ãããã¦ããªããã° null
ã
ã¡ãã£ã¢ã½ã¼ã¹ä»æ§æ¸ã®å¤ããã¼ã¸ã§ã³ã§ã¯ããªãã¸ã§ã¯ã URL ã使ããããã« createObjectURL()
ã使ç¨ãã¦ããããã® URL ã src
ã«è¨å®ããå¿
è¦ãããã¾ããã ç¾å¨ã¯ãMediaStream
ã srcObject
ã«ç´æ¥è¨å®ã§ãã¾ãã
ãã®ä¾ã§ã¯ãã¡ãã£ã¢ã½ã¼ã¹ãæ°ãã使ãã <video>
è¦ç´ ã«å²ãå½ã¦ã¦ãã¾ãã
const mediaStream = await navigator.mediaDevices.getUserMedia({ video: true });
const video = document.createElement("video");
video.srcObject = mediaStream;
ãã®ä¾ã§ã¯ãæ°ãã MediaSource
ãæ°ãã使ããã <video>
ã«å²ãå½ã¦ããã¾ãã
const mediaSource = new MediaSource();
const video = document.createElement("video");
video.srcObject = mediaSource;
src ããããã£ã¸ã®ä»£æ¿ã®å¯¾å¿
以ä¸ã®ä¾ã§ã¯ã srcObject
ã«å¯¾å¿ãã¦ããªãå ´åããªãã¸ã§ã¯ã URL ã使ã㦠src
ã«ä»£å
¥ããå¿
è¦ãããå¤ããã¼ã¸ã§ã³ã®ãã©ã¦ã¶ã¼ã«å¯¾å¿ãã¦ãã¾ãã
æåã«ãã«ã¡ã©ããåå¾ãã MediaStream
ãæ°ããçæãã <video>
è¦ç´ ã«ãå¤ããã©ã¦ã¶ã¼ã¸ã®ä»£æ¿ææ®µã¤ãã§å²ãå½ã¦ã¾ãã
const mediaStream = await navigator.mediaDevices.getUserMedia({ video: true });
const video = document.createElement("video");
if ("srcObject" in video) {
video.srcObject = mediaStream;
} else {
// ãã®æ©è½ã¯ãªããªãäºå®ã§ãããããæ°ãããã©ã¦ã¶ã¼ã§ã¯ä½¿ç¨ãé¿ãã¦ãã ããã
video.src = URL.createObjectURL(mediaStream);
}
次ã«ãæ°ãã使ããã <video>
è¦ç´ ã«ãå¤ããã©ã¦ã¶ã¼ã MediaSource
ã®å²ãå½ã¦ã«ã¾ã 対å¿ãã¦ããªããã©ã¦ã¶ã¼ã®ããã®ä»£æ¿ææ®µãç´æ¥å²ãå½ã¦ã¾ãã
const mediaSource = new MediaSource();
const video = document.createElement("video");
// å¤ããã©ã¦ã¶ã¼ã®å ´åãsrcObject ããªãå ´åãããã¾ãã
if ("srcObject" in video) {
try {
video.srcObject = mediaSource;
} catch (err) {
if (err.name !== "TypeError") {
throw err;
}
// 対å¿ãã¦ãã¦ãã MediaStream ã«ãã対å¿ãã¦ããªãå ´åãããã¾ãã
video.src = URL.createObjectURL(mediaSource);
}
} else {
video.src = URL.createObjectURL(mediaSource);
}
ã¯ã¼ã«ã¼ã§ MediaSource
ãæ§ç¯ãããããã¡ã¤ã³ã¹ã¬ããã«æ¸¡ãã¦åçãã
å°ç¨ã¯ã¼ã«ã¼å
é¨ã§ MediaSource.handle
ããããã£ã«ã¢ã¯ã»ã¹ã§ããçµæã¨ã㦠MediaSourceHandle
ãªãã¸ã§ã¯ãã postMessage()
ã³ã¼ã«ã«ããã¯ã¼ã«ã¼ã使ããã¹ã¬ããï¼ãã®å ´åã¯ã¡ã¤ã³ã¹ã¬ããï¼ã«è»¢éããã¾ãã
// å°ç¨ã¯ã¼ã«ã¼å
let mediaSource = new MediaSource();
let handle = mediaSource.handle;
// ã¯ã¼ã«ã¼ã使ããã³ã³ããã¹ãã§ãã³ãã«ãå¦çãã
postMessage({ arg: handle }, [handle]);
mediaSource.addEventListener("sourceopen", () => {
// MediaSource ã§ sourceopen ãå¾
ã£ã¦ãããSourceBuffer ã使ãã
// åå¾ããã¡ãã£ã¢ãæå
¥ãã¦ãã ãããMediaSource ã¯ã
// HTMLMediaElement ã«æ¥ç¶ããããã® readyState ã "open" ã«ãªãã¾ã§
// SourceBuffer ã®ä½æãåãå
¥ãã¾ããã
});
ã¡ã¤ã³ã¹ã¬ããã§ã¯ãmessage
ã¤ãã³ããã³ãã©ã¼ãããã³ãã«ãåãåãã <video>
ã« HTMLMediaElement.srcObject
ããããã£ãéãã¦ããã追å ããplay
ãããªè¿½å ãã¦ãã¾ãã
worker.addEventListener("message", (msg) => {
let mediaSourceHandle = msg.data.arg;
video.srcObject = mediaSourceHandle;
video.play();
});
ã¡ã¢: MediaSourceHandle
ã¯ãå
±æã¯ã¼ã«ã¼ã¾ãã¯ãµã¼ãã¹ã¯ã¼ã«ã¼ã¸ã®ãã¾ãã¯å
±æã¯ã¼ã«ã¼ãä»ããç§»è²ã¯æ£å¸¸ã«ã¯ã§ãã¾ããã
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4