השיטה captureStream()
מאפשרת לתעד MediaStream
מרכיב <canvas>
, <audio>
או <video>
.
כך אפשר להקליט שידור וידאו או אודיו מכל אחד מהרכיבים האלה, לשדר אותו בשידור חי דרך WebRTC או לשלב אותו עם אפקטים או MediaStream
אחרים ב-<canvas>
. במילים אחרות, captureStream()
מאפשר ל-MediaStream
להעביר מדיה הלוך ושוב בין רכיבי קנבס, אודיו או וידאו – או ל-RTCPeerConnection
או ל-MediaRecorder
.
בדמו הבא (שזמין בדוגמאות ל-WebRTC), MediaStream
שצולם מרכיב בד שמימין מועבר בסטרימינג דרך חיבור WebRTC בין שווים לרכיב הווידאו שמימין:
(בהמשך מופיעים קישורים לדוגמאות נוספות של הדפסה על קנבס וסרטונים).
הקוד של captureStream()
פשוט.
עבור <canvas>
:
var canvas = document.querySelector('canvas');
var video = document.querySelector('video');
// Optional frames per second argument.
var stream = canvas.captureStream(25);
// Set th<e sou>rce of the video element to be the <stream> from the canvas.
video.srcO
bject = stream;
עבור <video>
:
var leftVideo = document.getElementById('leftVideo');
var rightVideo = document.getElementById('rightVideo');
leftVideo.onplay = function() {
// Set th<e sou>rce of one video element to be a stream from another.
var stream = leftVideo.captureStream();
rightVideo.srcObje
ct = stream;
};
אבל למה?
השיטה captureStream()
מאפשרת להקליט או לשדר בשידור חי מרכיבי קנבס ומדיה:
- איך מקליטים ומעבירים בסטרימינג את הגיימפליי מ-
<canvas>
- מצלמים סרטון ממצלמה ומוסיפים לו תוכן או אפקטים נוספים
- יצירת אפקטים של תמונה בתוך תמונה ממספר סרטונים באמצעות
<canvas>
- שילוב של סרטונים ותמונות (מקובצים או ממצלמה, או משניהם) ב-
<canvas>
- שידור חי של סרטון שמופעל מקובץ
- איך משאירים הודעות וידאו או הודעות קוליות
בעיקרון, captureStream()
מאפשר ל-JavaScript ליצור 'להזריק' דברים ל-MediaStream.
האותיות הקטנות
ניסיון להשתמש ב-
captureStream()
עם רכיב מדיה שמטמיע הגנה על תוכן באמצעות Encrypted Media Extensions יוביל להשלכת חריגה.כשמצלמים מ-
<canvas>
, קצב הפריימים המקסימלי מוגדר כשקוראים ל-captureStream()
. לדוגמה, הערךcanvas.captureStream(10)
מציין שהפלט של הלוח הוא בין 0 ל-10 פריימים לשנייה. לא מתועדת תמונה אם לא מתבצעת ציור על<canvas>
, ו-10fps מתועדים גם אם מתבצעת ציור על<canvas>
בקצב של 30fps. דיווח על באג עם דיון נוסף פורסם במפרט שלcaptureStream
.המאפיינים של סרטון
captureStream()
תואמים ל-<canvas>
שבו הוא הופעל.
הדגמות
קנבס
וידאו
תמיכה
- לוח הציור
captureStream()
: דפדפן Firefox מגרסה 43 ואילך, דפדפן Chrome מגרסה 50 ואילך עם ההגדרה chrome://flags/#enable-experimental-web-platform-features מופעלת, או דפדפן Chrome מגרסה 52 ואילך כברירת מחדל. - וידאו ואודיו
captureStream()
: Firefox 47, Chrome 52 ואילך עם ההגדרה chrome://flags/#enable-experimental-web-platform-features מופעלת, או Chrome 53 ואילך כברירת מחדל.