Перейти к содержанию

Добавление водяного знака

Описание

В захваченный поток при трансляции его зрителям может быть вставлен водяной знак. Для этого необходимо добавить в файл flashphoner.properties параметр, указывающий имя PNG-файла водяного знака:

custom_watermark_filename=watermark.png

Сам файл необходимо разместить в каталоге /usr/local/FlashphonerWebCallServer/conf.

Водяной знак может быть добавлен только при условии использования коммерческой лицензии, поскольку в ознакомительной во все потоки добавляется водяной знак Flashphoner.

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

Водяной знак добавляется только при транскодинге, поскольку, чтобы наложить на поток картинку, поток должен быть декодирован, затем закодирован с наложенной картинкой для дальнейшей трансляции. Для включения транскодинга можно явно указать разрешение при публикации

session.createStream({name:'stream1',constraints:{audio:true,video:{width:640,height:480}}}).publish();

и при воспроизведении потока

session.createStream({name:'stream1',constraints:{audio:true,video:{width:320,height:240}}}).play();

В данном случае все потоки публикуются на сервере в разрешении 640x480, а воспроизводятся в 320x240. Это автоматически вызовет транскодинг, масштабирование из 640x480 в 320x240 и наложение водяного знака.

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

Настройки водяного знака

К водяному знаку могут быть применены следующие параметры:

Параметр Описание Пример
watermark_size Размер изображения водяного знака в пикселях 100x100
watermark_frame_size Размер видео кадра в пикселях, для масштабирования водяного знака 1280x720
watermark_x X координата верхнего левого угла 10
watermark_y Y координата верхнего левого угла 10
watermark_margin_top Расстояние до верхнего края в пикселях 15
watermark_margin_bottom Расстояние до нижнего края в пикселях 15
watermark_margin_left Расстояние до левого края в пикселях 15
watermark_margin_right Расстояние до правого края в пикселях 15
watermark_text Содержимое текстового водяного знака A text watermark
watermark_text_align Расположение текстового водяного знака TOP_LEFT
TOP_CENTER
TOP_RIGHT
CENTER
BOTTOM_LEFT
BOTTOM_CENTER
BOTTOM_RIGHT
EXTERNAL_TOP_CENTER
EXTERNAL_BOTTOM_CENTER
watermark_font Имя шрифта текстового водяного знака Serif
watermark_font_size Размер шрифта в пунктах 40
watermark_text_colour Цвет текстового водяного знака 0xFFFFFF
watermark_text_background_colour Цвет фона текстового водяного знака 0x2B2A2B
watermark_text_background_opacity Прозрачность фона текстового водяного знака 100
watermark_text_padding_top Расстояние до верхнего края в пикселях 5
watermark_text_padding_bottom Расстояние до нижнего края в пикселях 5
watermark_text_padding_left Расстояние до левого края в пикселях 5
watermark_text_padding_right Расстояние до правого края в пикселях 5

Микширование картинки с поддержкой альфа-каналов

При добавлении водяного знака часть цветов может быть искажена или становиться прозрачными. Это зависит от значения альфа-канала в применяемом изображении. Чтобы микшировать картинку водяного знака с учетом альфа-каналов, в сборке 5.2.1064 добавлена настройка

custom_watermark_mix=true

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

Минимальное значение альфа-канала

В сборке 5.3.98 добавлен параметр для более корректной обработки альфа канала

custom_watermark_alpha_threshold=1

В этом случае, картинка водяного знака будет отрисована с прозрачным фоном.

Скачивание картинки водяного знака из внешнего источника

В сборке 5.2.2087 добавлена возможность скачать картинку водяного знака из внешнего источника по URL

custom_watermark_filename=https://server/pics/watermark.png

Если сервер недоступен, или файла нет на сервере, в выходном потоке транскодера будет черный экран, в логе сервера будет сообщение

09:41:01,342 WARN       CustomWatermark - API-ASYNC-pool-7-thread-3 Can't read custom watermark file - https://server/pics/watermark.png
java.net.ConnectException: Connection refused (Connection refused)

или

09:43:36,235 WARN       CustomWatermark - API-ASYNC-pool-7-thread-3 Can't read custom watermark file - https://server/pics/watermark.png
java.io.FileNotFoundException: https://server/pics/watermark.png

Известные проблемы

1. Если файл водяного знака поврежден, либо файл отсутствует, используется водяной знак по умолчанию (черная картинка)

Симптомы

При добавлении водяного знака в выходном потоке черный экран, в серверном логе сообщение

Wrong watermark file format. Should be PNG.

Решение

Использовать только PNG файл с корректной структурой для добавления водяного знака.