Объединение и размещение двух медиапотоков

Я пытаюсь создать что-то похожее на
https://recordscreen.io/
Это позиционирует пользователей камера над записью экрана

Сейчас у меня есть оба потока по отдельности.
Я пробовал расположить один над другим, но хочу, чтобы он записывался в один видеоэлемент
Я пытался создать комбинированный медиапоток с треками из обоих другие потоки, но я вообще не могу их позиционировать

/**
 * Edge has a slightly incorrect implementation of getDisplayMedia
 * Typescript currently uses this so typing is incorrect
 */
const screenMediaStream = await (navigator.getDisplayMedia ? 
    navigator.getDisplayMedia(constraints) :
    (navigator.mediaDevices as any).getDisplayMedia(constraints)    
) as MediaStream;

const cameraMediaStream = await navigator.mediaDevices.getUserMedia({
    audio: true, 
    video: { width: 150, height: 150 }
});

const combinedMediaStream = new MediaStream([...cameraMediaStream.getTracks(), ...screenMediaStream.getTracks()]);

screenVideoElement.srcObject = combinedMediaStream;

Это показывает только веб-камеру. Я хочу иметь возможность размещать веб-камеру над записью экрана.


person Reece Ward    schedule 10.07.2019    source источник


Ответы (1)


По сути, вы должны визуализировать оба потока на холсте с подходящей позицией и размерами для потока захвата экрана, с которым он будет в полноэкранном режиме и по высоте. Для захвата потока пользовательской камеры это будет нижний левый угол с размером 150X150. И теперь вам нужно начать записывать эти потоки в холст. А с помощью метода captureStream () мы можем получить доступ к объединенным видеопотокам и начать их использовать.

person user6250    schedule 07.06.2020