Водяной знак

Ras2607

Member
Здравствуйте. Как можно встроить в трансляцию водяной знак? И насколько им можно управлять? Имеется ввиду перемещением например в реальном времени, изменением размера итд итп
 

Max

Administrator
Staff member
Добрый день.

Watermark можно вставить двумя способами.
1. Статический.
Для этого нужно добавить в flashphoner.properties настройку, указывающую на PNG-файл водянного знака.
Code:
custom_watermark_filename=watermark.png
А сам файл положить в папку conf
Эта настройка не работает с триальными лицензиями, т.к. в триальных лицензиях накладывается наш вотермарк вне зависимости от того, какой там указан.
2. Динамический.
В этом случае на стороне сервера нужно написать код на Java, который перехватывает декодированные видео фреймы.
Watermark можно отрисовать на Java по пикселям по координатам. В этом случае можно отрисовывать его по-новому на каждый фрейм: с увеличением размера, с изменением координат, и т.д. Но придется это делать на языке Java и вручную по пикселям. Хотя можно и заранее подготовить графику в виде массивов байт. В общем сложный формат и требует программирования.

Watermark добавляется только при транскодинге видеопотоков.
Поэтому чтобы наложить картинку, поток должен быть декодирован, потом добавлена картинка, потом закодирован и отправлен дальше.
Т.е. чтобы добавить watermark на все потоки, вам нужно транскодировать все входящие видеопотоки.
Это можно сделать например так:
При публикации видеопотока задаем разрешение:
Code:
session.createStream({name:'stream1',constraints:{audio:true,video:{width:640,height:480}}}).publish();
При воспроизведении видеопотока задаем другое разрешение:
Code:
session.createStream({name:'stream1',constraints:{audio:true,video:{width:320,height:240}}}).play();
Т.е. все видеопотоки публикуются на сервер в разрешении 640x480, а воспроизводятся в 320x240. Это автоматически вызовет транскодинг, рескейлинг из 640x480 в 320x240 и наложение вотермарка.

Наложение Watermark вызовет повышенную нагрузку на сервер, из расчета примерно 0.5-1 ядро на каждый входящий видеопоток, в зависимости от разрешения транскодируемого видео. Т.е. чтобы обработать 16 входящих видеопотоков может потребоваться 8-16 ядерный сервер.
 

Max

Administrator
Staff member
Проще установить Watermark прямо на источнике вещаемого видеопотока, если есть такая возможность.
Но для этого придется установить десктопный софт, перехватывающий видео с вебкамеры, например manycam, который может накладывать фильтры (добавлять wm) сразу после захвата.
 
Top