Metoda captureStream()
umożliwia przechwycenie wartości MediaStream
z elementu <canvas>
, <audio>
lub <video>
.
Umożliwia to nagrywanie strumienia wideo lub audio z dowolnego z tych elementów, strumieniowanie na żywo za pomocą WebRTC lub łączenie z efektami lub innymi MediaStream
w ramach <canvas>
. Inaczej mówiąc, captureStream()
umożliwia MediaStream
przekazywanie multimediów między elementami kanwy, dźwięku lub wideo albo do RTCPeerConnection
lub MediaRecorder
.
W tym demonstracyjnym filmie (dostępnym w próbkach WebRTC) MediaStream
przechwycony z elementu kanwy po lewej stronie jest przesyłany strumieniowo przez połączenie peer-to-peer WebRTC do elementu wideo po prawej stronie:
(poniżej znajdziesz linki do kolejnych przykładów kanwy i filmów)
Kod captureStream()
jest prosty.
Do witryn <canvas>
:
var canvas = document.querySelector('canvas');
var video = document.querySelector('video');
// Optional frames per second argument.
var stream = canvas.captureStream(25);
// Set the source of the <video> element to be the stream from the <canvas>.
video.srcObject = stream;
Do witryn <video>
:
var leftVideo = document.getElementById('leftVideo');
var rightVideo = document.getElementById('rightVideo');
leftVideo.onplay = function() {
// Set the source of one <video> element to be a stream from another.
var stream = leftVideo.captureStream();
rightVideo.srcObject = stream;
};
Ale dlaczego?
Metoda captureStream()
umożliwia nagrywanie lub transmisję na żywo z elementów kanwy i multimediów:
- Nagrywanie i przesyłanie strumieniowe rozgrywki z urządzenia
<canvas>
- Nagraj film z aparatu, a potem dodaj dodatkowe treści lub efekty
- Tworzenie efektów obrazu w obrazie z wielu filmów za pomocą
<canvas>
- Połącz filmy i obrazy (z plików lub z aparatu lub z obu tych źródeł) w
<canvas>
- Transmisja wideo z pliku
- Korzystanie z nagrania audio lub wideo w celu utworzenia wiadomości wideo lub poczty głosowej
Zasadniczo captureStream()
umożliwia JavaScriptowi tworzenie i „wstrzykiwanie” elementów do MediaStream.
Drobny druk
Próba użycia
captureStream()
z elementem multimediów, który wdraża ochronę treści za pomocą zaszyfrowanych rozszerzeń multimediów, spowoduje wyjątek.Podczas przechwytywania z
<canvas>
maksymalna liczba klatek na sekundę jest ustawiana podczas wywołania funkcjicaptureStream()
. Na przykładcanvas.captureStream(10)
oznacza, że płótno wyświetla się z szybkością od 0 do 10 fps. Gdy na<canvas>
nie jest malowane nic, nie jest rejestrowany żaden obraz. Gdy<canvas>
jest malowany z szybkością 30 FPS, rejestrowany jest obraz z szybkością 10 FPS. W specyfikacjicaptureStream
jest błąd, który wymaga dalszej dyskusji.Wymiary filmu
captureStream()
muszą być zgodne z<canvas>
, na którym został on wywołany.
Prezentacje
Obszar roboczy
- Przesyłanie strumieniowe z elementu kanwy na element filmu
- Przesyłanie strumienia z elementu na płótnie do połączenia peer-to-peer
Wideo
- Przesyłanie strumieniowe z elementu wideo do elementu wideo
- Strumieniowe przesyłanie z elementu wideo do połączenia typu peer-to-peer
Pomoc
- Canvas
captureStream()
: Firefox 43 lub nowszy; Chrome 50 lub nowszy z włączoną opcją chrome://flags/#enable-experimental-web-platform-features lub Chrome 52 lub nowszy domyślnie. - Wideo i dźwięk:
captureStream()
Firefox 47; Chrome 52 lub nowszy z włączoną opcją chrome://flags/#enable-experimental-web-platform-features lub domyślnie Chrome 53 lub nowszy.