HTMLCanvasElement.captureStream возвращает MediaStream.Этот MediaStream изначально состоит из специального вида MediaStreamTrack : a CanvasCaptureMediaStreamTrack , который представляет собой просто специальную видеодорожку со ссылкой на оригинальный HTMLCanvasElement.
Это все еще можетна этом этапе звучит иностранным языком ...
MediaStream - это контейнерный объект, содержащий сами дорожки, содержащие поток необработанных данных, которые являются частью носителя.Аудиодорожка будет содержать поток необработанных аудиоданных, а видео или холст - поток необработанных видеоданных.
Треки могут быть добавлены или удалены из MediaStream, так что MediaStream, который был переданвидео с веб-камеры должно быть изменено на видео, поступающее через webRTC и т. д. Это то, что отслеживает событие onaddtrack
: когда MediaStreamTrack добавляется в контейнер MediaStream.
Это не имеет ничего общего с кадрами, добавляемыми в видеопоток,для MediaStream это либо потоковая , либо пауза .
Таким образом, MediaStream содержит поток видеоданных, сгенерированных из текущего состояния холста.
CapturedПоток из холста имеет это специальное свойство, которое может потребоваться на частоте максимум , когда браузер должен добавлять новые кадры в видеопоток.Однако это всего лишь максимум;если на холсте не было нарисовано ничего нового, то ни одно изображение не будет добавлено, и поток продолжит отображать последнее добавленное изображение.
Не думаю, что есть способ узнать, когда этооперация происходит, но даже если бы она была, ваш процесс был бы слишком запутанным.
- рисование на холсте1
- захват потока
- визуализация потока в
- рисование на холсте2
- обработка изображения, нарисованного на холсте2
В то время как все, что вам нужно, это
- рисовать на холсте1
- обработка изображения, нарисованного на холсте1
Если вы хотите сделать это с определенной частотой кадров, то установите цикл ожидания.