Приставки – Obs Studio 29.1.3 Документация, Ръководство за приставки | Наб
Ръководство за приставки
Contents
Plugins
. .
Приставките могат да внедряват източници, изходи, енкодери и услуги.
? .
Заглавие на модула на приставката
Това са някои забележителни заглавки, които обикновено се използват от плъгини:
- libobs/obs-module.H – Основната заглавка, използвана за създаване на модули за приставки.
- .H – Основната заглавка на Libobs.
- libobs/obs-източник.H – Използва се за внедряване на източници в модули за приставки
- .H – Използва се за внедряване на изходи в модули за приставки
- .
- libobs/obs-service.H – Използва се за внедряване на услуги в модули за приставки
- libobs/obs-данни.
- libobs/obs-properties.H – Използва се за генериране на свойства за обекти на Libobs
- libobs/графики/графики.H – Използва се за графично изобразяване
Обща структура на директорията и cmakelists.txt
Организират се общият начин на изходните файлове е да има един файл за инициализация на плъгини, а след това и конкретни файлове за всеки отделен обект, който изпълнявате. …c За дефиницията на персонализиран изход и т.н.
Това е пример за обща структура на директорията за естествен модул за приставки:
-плъгин/ /локал-НАС.ini моя-плъгин.текст моя-моя-.° С моя-плъгинмоя-. моя--. -моя-енкодер.° С моя-плъгинмоя-.
Това би било пример за обикновени cmakelists.
# my-plugin/cmakelists.TXT Project (my-plugin) набор (my-plugin_sources my-plugin.C my-source.C my-output..C my-service.в) add_library (my-plugin модул $) target_link_libraries (my-plugin libobs) install_obs_plugin_with_data (my-plugin данни)
Инициализация на естествен плъгин
За да създадете Native Plugin Module, ще трябва да включите libobs/obs-module. . Във вашата функция obs_module_load () след това регистрирате някой от вашите персонализирани източници, изходи, енкодери или услуги. Вижте референтната API на модула за повече информация.
.c, който ще регистрира по един обект от всеки тип:
/* my-plugin.° С */ #include / * Определя общи функции (задължително) */ () / * Реализира обикновен локал на базата на ini (незадължително) */ (, "en-us" Външен структура obs_source_info ; /* Дефиниран в моя източник.° С */ Външен структура obs_output_info ; /* Дефиниран в моя изход.° С */ Външен структура obs_encoder_info my_encoder; .° С */ Външен структура obs_service_info my_service; /* Дефиниран в My-Service. Бул (празнота) ); obs_register_output&my_output obs_register_encoder&my_encoder); obs_register_service(&my_service вярно
Източници
Източниците се използват за изобразяване на видео и/или аудио в поток. Неща като заснемане на дисплеи/игри/аудио, възпроизвеждане на видео, показване на изображение или възпроизвеждане на аудио. Източниците могат да се използват и за внедряване на аудио и видео филтри, както и преходи. Libobs/obs-източник.. Вижте Източника API Справка (OBS_SOURCE_T) за повече информация.
. . структура . , .Тип = Obs_source_type_input, . = , .get_name = , .Създаване = , .унищожи = my_source_destroy, .Актуализация my_source_update, . = my_source_render, .get_width my_source_width, .get_height >;
..
/* my-plugin.° С */ . ] Външен obs_source_info my_source; /* Дефиниран в моя източник.° С */ obs_module_loadпразнота) (& . ] вярно; >
Някои прости примери за източници:
- Синхронен видео източник: Източникът на изображението
- Видео филтър: Тестовият видео филтър
- Аудио филтър: аудио филтър за усилване
Изходи
Изходите позволяват възможността за извеждане на текущото изобразяване на аудио/видео. Стрийминг и запис са два често срещани примера за изходи, но не и единствените видове изходи. Изходите могат да получават суровите данни или да получават кодирани данни. Libobs/obs-Output.H файл е специализираният заглавие за внедряване на изходи. Вижте Изходната референция на API (OBS_OUTPUT_T) за повече информация.
Например, за да внедрите изходен обект, трябва да дефинирате структура obs_output_info и да я попълните с информация и обратни повиквания, свързани с вашия изход:
/* my-output.° С */ . ] obs_output_info . = "my_output", . = Obs_output_av | , .get_name = my_output_name, . my_output_create, .унищожи = , . = my_output_start, . my_output_stop, .encoded_packet = , . = , . , .encoded_audio_codecs >;
След това, в my-plugin..
. . ] структура obs_output_info my_output /* Дефиниран в моя изход. obs_module_load() obs_register_output(&my_output); . ] връщане ; >
Някои примери за резултати:
-
- Изходът на FLV
- Изходът на RTMP потока
Енкодерите са специфични за наблюдаването на видео/аудио енкодери, които се използват с изходи, които използват енкодери. . Libobs/obs-encoder.H файл е специализираното заглавие за внедряване на енкодери. Вижте референцията на API на енкодера (OBS_ENCODER_T) за повече информация.
/* my-encoder.° С */ . ] структура = .документ за самоличност = "my_encoder", .Тип = , .кодек = "H264", . = my_encoder_name, . = my_encoder_create, .унищожи = my_encoder_destroy, .кодиране = my_encoder_encode, . my_encoder_update, .get_extra_data = my_encoder_extra_data, .get_sei_data = , . = my_encoder_video_info
След това, в my-plugin.c, бихте се обадили.
/* my-plugin.° С */ . ] Външен структура obs_encoder_info my_encoder; /* Дефиниран в My-Encoder.° С */ () &); . ] >
- “битрейт” – .
- – . . .
- – За видео енкодери задава стойността на интервала на ключовата рамка, за секунди или най -близкото възможно приближение. .
Примери за енкодери:
- Видео енкодери:
- Енкодерът X264
- Енкодерът FFMPEG AAC/OPUS
. . Libobs/obs-service.. .
(Забележка на автора: API на услугата е непълен от това писане)
. . obs_service_info .документ за самоличност = "my_service", .get_name , . = , .унищожи = my_service_destroy, .кодиране = my_service_encode, . my_service_update, .get_url = , . my_service_key >;
.c, бихте се обадили.
/* my-plugin. . Външен ; . obs_module_load) (my_service); . >
Настройки
.з) се използват за получаване или задаване на данни за настройки, които обикновено се свързват с обекти на Libobs, и след това могат да бъдат запазени и заредени чрез JSON текст. Вижте Справочник за настройки на данни (OBS_DATA_T) за повече информация.
е еквивалент на JSON обект, където е струнна таблица с под-обекти и Обекти, подобни на масиви от JSON (макар и не съвсем идентични).
За да създадете obs_data_t или OBS_DATA_ARRAY_T Обект, ще се обадите на функциите obs_data_create () или obs_data_array_create (). obs_data_t OBS_DATA_ARRAY_T Обектите се преброяват, така че когато приключите с обекта, обадете се. По всяко време или OBS_DATA_ARRAY_T Обектът се връща от функция, техните референции са увеличени, така че трябва да пускате тези референции всеки път.
За да зададете стойности за obs_data_t
Експорт празнота obs_data_set_string( *данни, const Чар , const Чар ); празнота obs_data_set_int( *данни, const *, Вал); Експорт obs_data_set_double(obs_data_t *, const Чар *, Вал); Експорт празнота obs_data_set_bool(obs_data_t данни, Чар *, Бул Вал); obs_data_set_objobs_data_t *, const Чар *, obs_data_t obj); празнота OBS_DATA_SET_ARRAYobs_data_t *данни, const Чар *име, OBS_DATA_ARRAY_T масив);
По същия начин, за да получите стойност от obs_data_t Обект, ще използвате една от следните функции:
/ * Вземете функции */ const obs_data_get_stringobs_data_t , const Чар ); дълго дълго obs_data_get_int(obs_data_t *, име); Експорт obs_data_get_doubleobs_data_t данни, const *име); ( данни, const Чар име obs_data_t OBS_DATA_GET_OBJ(obs_data_t *, *име); Експорт *OBS_DATA_GET_ARRAY(obs_data_t *данни, Чар *);
За разлика от типичните обекти на JSON Data, obs_data_t . Това позволява възможността да се контролира това, което се връща, ако няма стойност, присвоена на конкретен низ в . Всеки обект Libobs също има a .
. Експорт празнота obs_data_set_default_string( данни, , Вал); (obs_data_t , Чар , obs_data_t *данни, const , obs_data_t *данни, Чар *, Вал); obs_data_set_default_obj данни, , obs_data_t obj);
.з) се използват за автоматично генериране на потребителски интерфейс за промяна на настройките за обект Libobs (ако желаете). Всеки обект Libobs има a get_properties . API на свойствата определя специфични свойства, които са свързани с настройките на обекта, а предният край използва тези свойства за генериране на джаджи, за да позволи на потребителя да променя настройките. . Вижте Свойството на API на свойствата (obs_properties_t) за повече информация.
Пример за това:
статично (празнота данни *ppts = obs_properties_create(); obs_properties_add_boolppts, "my_bool", "MyBool")); Unused_Parameter(данни); ppts > . ] .get_properties , . >;
данни . . .
Свойствата също могат да бъдат модифицирани в зависимост от това какви настройки са показани. .
Например, ако искате булева собственост А да скрие текстово свойство B:
Бул Настройка_а_modified(obs_properties_t , *, ) , ); = obs_properties_get(ppts, ); (, ); /* Връщане вярно за актуализиране на джаджи за собственост, невярно в противен случай */ връщане . статично my_source_properties(празнота obs_properties_t obs_properties_create obs_property_t *p (ppts, "Настройка_а", obs_module_text)); obs_property_set_modified_callback, ); obs_properties_add_text, "Настройка_B", obs_module_text("Настройка"), ppts; >
Локализация
Обикновено повечето плъгини, свързани с OBS Studio, ще използват прост метод за локализация на INI-файл, където всеки файл е различен език. . Тогава функцията obs_module_text () (която автоматично се декларира като външен от libobs/obs-module..
. . .
© Copyright 2017-2023, Lain Bailey.
Obs Studio поддържа разнообразие от плъгини, които предоставят нови видове източници, филтри и функции. Някои приставки също позволяват на OBS Studio да комуникира с определени видове хардуер, като например палубата на потока Elgato.
Някои приставки също са предоставени на потребителите на Linux чрез Flathub.
Съвместимост
Повечето приставки са разработени така, че да бъдат използвани във всички платформи, където е достъпно OBS Studio. Има обаче определени случаи, когато приставката може да не е съвместима с вашето копие на OBS Studio:
- .. Windows, а не macOS)
- .E. x86_64, а не ARM64)
- Приставката не е актуализирана за версията на OBS Studio, която използвате
За да видите какви плъгини са достъпни за какви платформи в OBS Studio 28.0, вижте списъка за съвместимост с приставки на OBS Studio 28.
Инсталирайте или премахнете приставките
. По принцип те инсталират приставки на местата, изброени по -долу.
. Моля, първо проверете документацията на приставката.
(всички потребители)
Windows
.2.C: \ Програмни файлове \ Obs-Studio \ Obs-Plugins \ 32bit
(единичен потребител)
.
(Flatpak)Ако инсталирате Obs Studio на персонализирано местоположение или използвате преносим режим, ще трябва да промените целевата папка на инсталатора на персонализираното си местоположение данни/приставки папка.
- .H – Основната заглавка на Libobs.