Obs studio эффекты для камеры

OBS Studio Lua Скриптинг. Часть 2

Всем привет, в этой части руководства рассмотрим: фильтры, сцены, предметы сцен, Frontend API, создание функциональных фильтров и прочее.

С первой частью можно ознакомиться по этой ссылке.

Краткая справка для этой части

Фильтры

Типы фильтров так же как и источников, можно узнать через функцию obs_source_get_unversioned_id

Название Внутреннее представление типа
Компрессор compressor_filter
Экспандер expander_filter
Усиление gain_filter
Инвертировать полярность invert_polarity_filter
Лимитер limiter_filter
Пропускной уровень шума noise_gate_filter
Шумоподавление noise_suppress_filter
VST 2.x плагин vst_filter
Задержка видео (асинхронность) async_delay_filter
Хромакей chroma_key_filter
Коррекция цвета color_filter
Цветовой ключ color_key_filter
Кадрирование crop_filter
Маска изображения/Смешивание mask_filter
Яркостный ключ luma_key_filter
Задержка отображения gpu_delay
Масштабирование/Соотношение сторон scale_filter
Прокрутка scroll_filter
Увеличить резкость sharpness_filter

В английском варианте: ссылка

Скрипт: изменение параметра прозрачности у фильтра на случайную величину от 1 до 100.

Чтобы узнать название параметра «прозрачность» необходимо добавить фильтр с прозрачностью на какой-нибудь источник, изменить этот параметр. Далее открыть файл коллекции сцен, путь к директории можно узнать через меню OBS:
Справка > Файлы журнала > Показать файлы журнала
далее с этой директории поднимаемся выше, и получаем путь

/basic>scenes>название_сцены.json
В этом файле ищем color_filter или color_key_filter (оба фильтра могут изменить прозрачность источника).

В строке settings видим что прозрачность записана как opacity .

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

Находим источник по имени

Создаём настройки с изменением параметра opacity на случайное число

Проверяем существует ли уже фильтр на источнике, если нет добавляем

Обновляем и освобождаем память

Привязка к горячей клавише

Стоит упомянуть также о функции obs_source_enum_filters с её помощью можно получить
список всех фильтров у конкретного источника, кстати эта функция не работает в obspython ,
но об этом чуть позже.

Эвенты и состояние

Скрипт: звуковое оповещение о том что сцена изменена, с использованием .mp3 файла.
На основе этого скрипта

Создадим функцию для проигрывания звука при смене сцен.

Добавим источник медиа, установим настройки: файл alert.mp3 относителен директории нахождения
скрипта, obs_source_set_monitoring_type выставляет прослушивание аудио.

Время и файлы

Запись в файл, «a» — создаст(если нет) файл и добавит «content», а «w» — перезапишет .

Сцены и предметы сцен

Скрипт: включение и выключение предмета сцены(источника на сцене).

Получение всех сцен и предметов в них

Поиск конкретного источника и его включение или выключение, source_name и boolean определены глобально.

Регистрация фильтров

В obslua доступна функция obs_register_source , с её помощью можно зарегистрировать
источник( переходы и фильтры это источники). Для этого понадобится создать таблицу источника
Регистрация фильтров удобна тем, что позволяет закрепить функциональность скрипта за
определенным источником. Поддерживает горячие клавиши, интерфейс, таймеры.

Скрипт: закрепление горячих клавиш на фильтре, и полный доступ к источнику.

Импорт библиотеки, и определение типа как источник-фильтр.

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

Начальная регистрация горячих клавиш, принадлежащих конкретному фильтру.

Создание функции которая запустится не сразу ( это необходимо т.к фильтр ещё не создан)
Он будет создан после return

Завершающая регистрация горячих клавиш, obs_filter_get_parent источник который фильтруется
к которому прикреплён фильтр этого типа. Удаление таймера.

Необходимый код для пропуска фильтрации, без него при добавлении фильтра источник «выключится»

Функция .save вызывается при сохранении настроек, т.е можно переназначить горячие клавиши.
obs.obs_register_source(info) — регистрация фильтра, теперь его видно при нажатии ПКМ

info.load — также как и script_load , вызывается при запуске программы, но в данном
случае дублирует функциональность и требует перезапуска. .update , .get_properties
функции аналогичные script_update , script_properties .

obspython

В OBS также доступен скриптинг через Python, для Windows только 3.6 версия, для Linux встроенная (т.к в настройках нельзя указать путь),
для MacOS Python не доступен для текущей (26.0.0) версии.

В отличии от Lua тут нельзя регистрировать источники, перебор фильтров не работает,
т.к не написан wrapper на функции с аргументом типа указатель-указатель.

Но в контексте скриптинга имеет место быть т.к:

  • Модули для доступа к сети
  • Возможноть удалённой отладки скрипта
  • Контекстные менеджеры, поддержка OOП, большой набор модулей и.т.д
  • http://lua-users.org/wiki/LuaVersusPython — сравнение Lua с Python

Задачи

Перед тем как начать делать задачи, рекомендую сделать бэкап коллекции сцен, с осторожностью использовать script_tick (вызывается раз в каждый кадр).

Проверять утечки памяти в папке logs , последняя строка последнего файла пример — время: Number of memory leaks: 0 , если скрипт написан неправильно то этой строчки там не окажется т.к OBS вылетит с ошибкой при закрытии.

3) [фильтры] «Динамическая прокрутка»
Создать программно или выбрать через интерфейс источник который будет фильтроваться,
к этом источнику добавить(если нет) фильтр Прокрутка (scroll_filter), добавить интерфейс и/или горячие клавиши которые меняют значение вертикальной скорости на случайную величину от 0 до 1000 при этом включать/выключать повторение с 50% шансом.

4)[эвенты] «Проверка»
При переключении сцен проверять идёт ли запись.
Если нет — вывести оповещение ( например через error())

5)[время и файлы] «Пост-продакшен»
Создать скрипт который при нажатии горячей клавиши записывает текущее время, относительное время от старта записи, добавляет текст «МЕТКА», а через интерфейс UI кнопку записать текст, и место для набора текста.

6) [предметы сцены] «Сумма»
Посчитать количество сцен и предметов сцен, записать ответ в названии первой сцены.

Не учитывать группы, т.к перебор предметов груп не работает.

7) [фильтры и источники] «Нэйтив скриптинг»
Создать фильтр который будет с интервалом в 2 секунды включать и выключать источник за которым он закреплён.

Ответы на задачи и код скриптов включая первую часть на Github

Источник

Фильтры в OBS Studio. Обзор фильтров сцен, источников и аудиоустройств

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

Вы можете добавить их, щелкнув правой кнопкой мыши по нужной сцене, источнику или устройству и выбрав «Фильтры» (для аудиоустройств нажмите на значок шестеренки рядом с вашим устройством). Но позвольте мне объяснить, что различные фильтры позволяют вам делать.

Фильтры сцены и источника

Маска изображения / смесь

Фильтр Маска / Смешивание изображения дает нам возможность использовать Цветной или Альфа-канал изображения в качестве маски или смешивать изображение (умножение, сложение, вычитание) на вашей сцене или источнике. Это может быть использовано для придания вашей веб-камере круглой границы, например:

урожай

Фильтр обрезки должен объясняться сам по себе, но вкратце он позволяет вам обрезать верхнюю / левую / правую / нижнюю часть источника / сцены, чтобы показать только те части, которые вы хотите.

Цветовая коррекция

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

манускрипт

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

Цветовой ключ и хроматический ключ

Фильтр Color Key и Chroma Key можно использовать для удаления определенного цвета вашего источника и его прозрачности. Это может быть использовано для зеленых экранов и тому подобного. Они ведут себя немного по-другому, поэтому вам нужно будет поэкспериментировать и посмотреть, какой из них лучше всего подходит для вашего личного использования.

Фильтр LUT

Этот фильтр позволяет вам применять LUT к вашим источникам видео.

Резкость

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

Фильтры аудиоустройств

компрессор

Компрессор очень полезен, если ваш источник (обычно микрофон) настроен на нормальный уровень, но иногда может звучать намного громче, например, во время импровизированного крика или в жаркой дискуссии. Он автоматически уменьшит громкость источника, чтобы уменьшить вероятность того, что он достигнет пика выше 0 дБ, что может привести к обрезанию и искажению, а затем снова включит его, как только громкость вернется к нормальной.

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

  • Коэффициент : степень сжатия или уменьшения усиления, применяемая к сигналу, превышающему пороговое значение. Например, 2: 1 будет слабым сжатием (это означает, что уровень звука на 6 дБ выше порогового значения будет на 3 дБ выше после сжатия), тогда как 6: 1 будет гораздо более сильным сжатием.
  • Порог : Как только сигнал достигнет этого уровня, компрессор начнет применять сжатие в заданном соотношении. Когда уровни ниже порога, соотношение составляет 1: 1, что означает отсутствие снижения усиления.
  • Атака : Как быстро в миллисекундах вы хотите, чтобы компрессор достиг полного снижения усиления, когда уровни превышают пороговое значение.
  • Release : Как быстро, в миллисекундах, вы хотите, чтобы компрессор вернулся к нулевому снижению усиления после того, как уровни упадут ниже порогового значения.
  • Выходное усиление : когда вы сжимаете сигнал, он обычно становится тише, что снижает ваш средний уровень. Применение усиления на выходе приводит к восстановлению среднего уровня источника, что может помочь улучшить его присутствие по сравнению с другими источниками звука.
  • Sidechain / Ducking Source : Когда компрессор установлен на выходной источник звука, например на рабочий стол, Sidechain может использовать вход от источника микрофона / вспомогательного сигнала, чтобы уменьшить громкость выходного источника. См. Сжатие боковой цепи / Ducking .

Заметка. Источник может по-прежнему превышать 0 дБ для компрессора, если ваш уровень входного сигнала слишком громкий, ваше соотношение / порог установлены неправильно или вы используете слишком большое выходное усиление. Чтобы убедиться, что вы не превышаете 0 дБ, вы можете использовать ограничитель в конце цепочки фильтров.

Сжатие боковой цепи / Ducking

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

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

  • Соотношение : 32: 1
  • Порог : -36дБ
  • Атака : 100 мс (как быстро будет звучать звук)
  • Релиз : 600 мс (как быстро звук вернется к полной громкости)
  • Выходное усиление : 0 дБ (Вы не применяете выходное усиление при использовании сжатия Sidechain)
  • Sidechain / Ducking Источник : микрофон

расширитель

Расширитель может использоваться для уменьшения фонового шума, такого как вентиляторы компьютера, щелчки мыши / клавиатуры, дыхание и нежелательные шумы во рту. Расширитель снижает уровень аудиосигнала, применяя уменьшение усиления, аналогично компрессору, но ниже порога, а не выше его.

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

Короче говоря, экспандер делает тихие звуки тише и, как правило, помещается ближе к концу цепочки фильтров после любых эффектов сжатия / других эффектов, но перед ограничителем .

  • Presets : Определяет некоторые значения по умолчанию для использования в Ratio и Release.
    • Расширитель : Низкое соотношение и время выпуска, хорошо для уменьшения шума.
    • Gate : высокое соотношение и время выпуска, усиление уменьшит сигнал, аналогичный стробу.
  • Соотношение : величина расширения или уменьшения усиления, применяемая к сигналу, который находится ниже порогового значения. Более низкое соотношение, такое как 2: 1, хорошо для уменьшения светового шума, более высокое соотношение, такое как 10: 1, полностью уменьшит сигнал. Хороший баланс 4: 1, это должно обеспечить адекватное уменьшение усиления без полного стробирования сигнала.
  • Порог : Как только вход достигнет этого уровня, расширитель прекратит усиление, уменьшая сигнал. Регулируйте порог, пока шум, который вы пытаетесь уменьшить, не исчезнет, ​​но не заходите слишком далеко, иначе ваш голос начнет прерываться.
  • Атака : Как быстро в миллисекундах вы хотите, чтобы расширитель прекратил уменьшение усиления или открылся, как только пороговое значение превышено. Рекомендуется атака между 5-10 мс.
  • Release : Как быстро в миллисекундах вы хотите, чтобы расширитель достиг полного уменьшения усиления или закрылся, как только входной сигнал упадет ниже порогового значения. Выпуск между 50-120 мс рекомендуется.
  • Output Gain : увеличивает уровень выходного сигнала расширителя, применяя усиление, которое обычно не требуется, но может использоваться для увеличения уровня микрофона перед его выводом.
  • Обнаружение : изменяет способ измерения уровня входного сигнала, влияя на чувствительность определения порога. RMS рекомендуется.
    • RMS : усредняет измерение уровня входного сигнала за последние 10 мс, чтобы уменьшить чувствительность определения порога, помогает сгладить и предотвратить открытие расширителя из-за быстрых небольших пиков шума.
    • Пик : Измерение входного уровня не усредняется по времени, расширитель быстрее реагирует на изменения пикового уровня.

Усиление

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

Инвертировать полярность

Используется для устранения проблем отмены фазы.

ограничитель

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

  • Порог : максимальный выходной уровень, на который может попасть аудиосигнал, ни один сигнал не может превышать этот уровень.
  • Разблокировка : поскольку ограничитель является компрессором, он применяет уменьшение усиления к кирпичной стене выходного уровня. Если и когда сигнал пытается превысить пороговое значение, освобождение означает, насколько быстро ограничитель прекратит снижение усиления после того, как уровень упадет ниже установленного порогового значения.

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

Шумовые Ворота

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

Подавление шума

Фильтр шумоподавления можно использовать для удаления слабого фонового шума или белого шума, который может присутствовать в любом из ваших аудиоисточников. Хотя это, как правило, неэффективно при большом количестве фонового шума (например, в громкой комнате), оно может быть весьма эффективным для уменьшения таких вещей, как шум вентилятора ПК или другие шумы окружающей среды.

0 выключен. Чем дальше вы перемещаете ползунок влево, тем сильнее будет фильтр и тем больше звуков он будет отфильтровываться. Имейте в виду, что это может искажать другие звуки (например, ваш голос).

VST плагин

OBS Studio поддерживает множество плагинов VST2.x. Добавить VST плагин так же просто, как добавить любой другой аудио фильтр, но есть некоторые ограничения. VST1.x, VST3.x, MIDI-контроль / ввод в плагинах VST и плагины оболочки VST в настоящее время не поддерживаются. Мы не протестировали все плагины, и некоторые плагины VST могут вызвать сбои. Обязательно сохраните и сохраните все настройки, чтобы избежать потери данных при экспериментах с VST.

И наконец, всегда следите за загрузкой процессора, некоторые плагины VST могут сильно загружать процессор!

OBS Studio будет искать плагины в следующих местах:

  • Windows (* .dll)
    • C: / Программные файлы / Steinberg / VstPlugins /
    • C: / Программные файлы / Общие файлы / Steinberg / Общие компоненты /
    • C: / Program Files / Общие файлы / VST2
    • C: / Program Files / Общие файлы / VSTPlugins /
    • C: / Program Files / VSTPlugins /
  • macOS (* .vst)
    • / Library / Audio / Plug-Ins / VST /

      / Library / Audio / Плагины / VST /

  • Linux — НЕ ИСПОЛЬЗУЕТСЯ (* .so и * .o)
    • / USR / Библиотека / VST /
    • / USR / Библиотека / lxvst /
    • / USR / Библиотека / linux_vst /
    • / USR / lib64 / VST /
    • / USR / lib64 / lxvst /
    • / USR / lib64 / linux_vst /
    • / USR / местные / Библиотека / VST /
    • / USR / местные / Библиотека / lxvst /
    • / USR / местные / Библиотека / linux_vst /
    • / USR / местные / lib64 / VST /
    • / USR / местные / lib64 / lxvst /
    • / USR / местные / lib64 / linux_vst /

      / .Lxvst /

    • ПРИМЕЧАНИЕ. Если пользователь установил переменную среды VST_PATH, OBS игнорирует другие местоположения поиска и просто использует местоположения, перечисленные в VST_PATH.

Краткий список бесплатных плагинов, которые использовались для разработки и тестирования поддержки VST в OBS Studio, можно найти ниже. Ваш опыт может отличаться, но это те, которые, как мы знаем, были протестированы для работы в наших средах:

Не проверено, но высоко оценено:

В будущем в OBS Studio будет добавлено больше фильтров, поэтому всегда следите за следующим обновлением программного обеспечения.

Original guide by Jack0r, updates/edits by Fenrir and the #obs-dev team

Источник

Читайте также:  Обеспечить эффективное целевое использование
Оцените статью