Потоковое видео с прозрачными пикселями с использованием webrtc

#javascript #html #video #webrtc #licode

#javascript #HTML #Видео #webrtc #licode

Вопрос:

Я пытаюсь захватить холст html5 с помощью captureStream API, на котором есть рисунки, и воспроизвести его с помощью тега html5 video.
Проблема, с которой я сталкиваюсь, заключается в том, что когда я захватываю поток и воспроизводю его с помощью тега in video, он воспроизводится точно так же.
Но когда я отправляю этот поток другому узлу (потоковая передача WebRTC с использованием Licode MCU) и воспроизводю его там.

Оно воспроизводится с черным фоном. т. Е. Видео больше не прозрачно.
Кто-нибудь сталкивался с этим раньше?

В чем может быть проблема:

Это проблема с каналом webrtc, может быть, он не способен обрабатывать прозрачные пиксели?

или

Это может быть как-то связано с медиа-сервером? Или что-то еще?

Комментарии:

1. У меня точно такая же проблема, не могли бы вы решить свою проблему?

2. @Solix: Нет, у меня был альтернативный подход для моего варианта использования, когда мне больше не нужно было транслировать прозрачное видео. Поэтому я вернулся к этому подходу. Но все равно будет интересно узнать, есть ли у кого-нибудь ответ на этот вопрос.

Ответ №1:

Похоже, вы отправляете свой холст в виде видеоданных. WebRTC обычно использует либо VP8, либо H264 для передачи видео, и ни один из них не поддерживает альфа-каналы. Поэтому, если вы хотите отправить его как видео, использовать прозрачность невозможно.

Однако вы можете отправить его, используя часть канала передачи данных WebRTC. Вам придется сериализовать и десериализовать его самостоятельно, но поскольку он просто передает байты, вы можете сохранить свой альфа-канал.