Pluginy – OBS Studio 29.1.
Sprievodca doplnkom
Contents
Linux
(Flatpak)
Doplnky
Takmer všetky vlastné funkcie sa pridávajú prostredníctvom doplnkových modulov, ktoré sú zvyčajne dynamickými knižnicami alebo skriptmi. Schopnosť zachytiť a/alebo výstup audio/video, vytvorenie nahrávania, výstupu do toku RTMP, kódovanie v x264 sú príklady vecí, ktoré sa dosahujú prostredníctvom doplnkových modulov.
Doplnky môžu implementovať zdroje, výstupy, kódovače a služby.
Písanie prvého doplnku? Poskytujeme základný doplnok šablóny, aby sme vás začali.
Hlavičky doplnkových modulov
Jedná sa o niektoré pozoruhodné hlavičky, ktoré bežne používajú doplnky:
- libob/Obs-Module.H – Primárna hlavička použitá na vytváranie modulov doplnkov. Tento súbor automaticky obsahuje nasledujúce súbory:
- libobs/Obs.H – hlavná hlavička Libobs. Tento súbor automaticky obsahuje nasledujúce súbory:
- libobs/obs-source.H – Používa sa na implementáciu zdrojov v doplnkových moduloch
- libobs/poscksput.H – Používa sa na implementáciu výstupov v doplnkových moduloch
- libobs/Obs-Encoder.
- libobs/obs-služba.H – Používa sa na implementáciu služieb v moduloch doplnkov
- libobs/obdata.H – Používa sa na správu nastavení pre objekty libobs
- libobs/obscerties.H – Používa sa na generovanie vlastností pre objekty libobs
- libobs/grafika/grafika.H – Používa sa na grafické vykreslenie
Spoločná štruktúra adresára a CMAKELISTI.txt
Zaručené sú súbory na bežné spôsoby, ako sú usporiadané jeden súbor na inicializáciu doplnkov a potom konkrétne súbory pre každý jednotlivý objekt, ktorý implementujete. Napríklad, ak by ste vytvorili doplnok s názvom „My-Plugin“, mali by ste niečo ako My-plugin.C, kde sa vykonáva inicializácia doplnku, My-Source.c pre definíciu vlastného zdroja, my-výstup.c pre definíciu vlastného výstupu atď. (Toto samozrejme nie je pravidlo)
Toto je príklad spoločnej štruktúry adresára pre natívny doplnkový modul:
môj-zapojiť/údaje/miestny/udeliť-My.ini môj-zapojiť/Cmakelista.TXT môj-zapojiť/môj-zapojiť.c môj-zapojiť/môj-zdroj.c môj-/môj-výkon.c môj-zapojiť/môj-. môj-zapojiť-služba.c
Toto by bol príklad bežných cmakelistov.
.Sada projektu TXT (My-Plugin) (My-plugin_sources my-plugin..c My-výstup.c My-Encoder..c) add_library (My-plugin modul $) target_link_library (my-plugin libobs) install_obs_plugin_with_data (my-plugin dáta)
Natívna inicializácia doplnkov
Ak chcete vytvoriť natívny modul doplnku, budete musieť zahrnúť libobs/Obs-Module.H Header, použite makro Obs_declare_Module () a potom vytvorte definíciu funkcie Ob_module_Load () . Vo svojej funkcii Obs_Module_Load () potom zaregistrujete ktorýkoľvek z vašich vlastných zdrojov, výstupov, kódovačov alebo služieb. Viac informácií nájdete v referencii API Module API.
Nasleduje príklad my-plugin.C, ktorý by zaregistroval jeden objekt každého typu:
.c */ #vrátane / * Definuje bežné funkcie (požadované) */ Ob_declare_module() / * Implementuje bežné lokalizácie založené na INI (voliteľné) */ Ob_module_use_default_locale(„My-plugin“, ) extern striedať sa Obs_source_info my_source; /* Definované v myšloch.c */ extern striedať sa Obs_output_info my_output; /* Definované v myšom.c */ extern striedať sa Obs_encoder_info my_encoder; /* Definované v my-encoder.c */ striedať sa ob_service_info my_service; /* Definované v mojej službe.c */ vyrovnanie ob_module_load() Obs_register_source(my_source); Obs_register_output(Amy_output); Obs_register_encoder(A); Obs_register_service(Amy_service); pravdivý; >
Zdroje
Zdroje sa používajú na vykreslenie videa a/alebo zvuku na stream. Veci ako zachytávanie displejov/hier/zvuku, prehrávanie videa, zobrazovanie obrázka alebo prehrávanie zvuku. Zdroje môžu byť tiež použité na implementáciu zvukových a video filtrov, ako aj prechodov. Libobs/obs-source.. Viac informácií nájdete v referencii API Source API (ob_source_t).
.c */ [. ] striedať sa Obs_source_info . = "my_source", . Obs_source_type_input, .output_flags = Obs_source_video, .get_name = my_source_name, . = my_source_create, .zničiť = , .aktualizácia , .video_render = my_source_render, .get_width = my_source_width, .get_height = my_source_height >;
Potom v mojom plugin.C, zavolali by ste na Obs_register_source () v ob_module_load (), aby ste zaregistrovali zdroj v libobs.
/* My-plugin.c */ [. ] striedať sa Obs_source_info my_source; /* Definované v myšloch.c */ vyrovnanie (neplatný) Obs_register_source(Amy_source); [. ] pravdivý; >
Niektoré jednoduché príklady zdrojov:
- Synchrónny zdroj videa: Zdroj obrázka
- Zdroj asynchrónneho videa: Zdroj náhodného textúry
- Zvukový zdroj: Zdroj testu sínusovej vlny
- Video filter: Testový video filter
- Zvukový filter: Zvukový zvukový filter
Výstupy
Výstupy umožňujú možnosť výstupu v súčasnosti vykresľujúcej zvuku/videa. Streamovanie a zaznamenávanie sú dva bežné príklady výstupov, ale nie jediné typy výstupov. . Libobs/Presyput.H súbor je vyhradená hlavička na implementáciu výstupov. Viac informácií nájdete v referencii výstupného rozhrania API (ob_output_t).
/* My-výstup.c */ [. ] Obs_output_info my_output .id = "my_output", . Ob_output_av | Obs_output_encoded, . my_output_name, .vytvárať = my_output_create, .zničiť = , . my_output_start, .zastavenie my_output_stop, .kódovaný_packet my_output_data, .get_total_bytes my_output_total_bytes, .encoded_video_codecs = "H264", .Encoded_audio_codecs = „AAC“
.C, zavolali by ste na Obs_register_output () v ob_module_load () na registráciu výstupu s libobs.
/* My-plugin.c */ [. ] extern striedať sa Obs_output_info my_output; /* Definované v myšom.c */ vyrovnanie ob_module_load(neplatný) Obs_register_output(Amy_output); . ] návrat pravdivý; >
Niektoré príklady výstupov:
- Kódované výstupy videa/zvuku:
- Výstup FFMPEG Muxer
- Výstup prúdu RTMP
- Výstup FFMPEG
Kodéry sú špecifické implementácie video/zvukových kódov, ktoré sa používajú s výstupmi, ktoré používajú kódovače. X264, NVENC, QuickSync sú príklady implementácií kódovača. Libobs/Obs-encoder.H súbor je vyhradená hlavička na implementáciu kódovačov. Viac informácií nájdete v referencii API Encoder API (Obs_encoder_t).
/* My-Engoder.c */ . ] striedať sa my_encoder_encoder = . = "my_encoder", .typ = Obs_encoder_video, .kodek = "H264", . = my_encoder_name, .vytvárať = , .zničiť = my_encoder_destroy, . = my_encoder_encode, .aktualizácia = my_encoder_update, .get_extra_data my_encoder_extra_data, .get_sei_data my_encoder_sei, .get_video_info >;
Potom v mojom plugin..
.c */ [. striedať sa Obs_encoder_info my_encoder; .c */ vyrovnanie (neplatný Obs_register_encoder(Amy_encoder); [. ] návrat ;
DÔLEŽITÁ POZNÁMKA: Nastavenia kódovača majú v súčasnosti niekoľko očakávaných spoločných hodnôt nastavenia, ktoré by mali mať konkrétny konvent pomenovávania:
- „Bitrate“ – Táto hodnota by sa mala použiť pre video aj pre zvukové kódovače: Bitrate, v kilobits.
- „RATE_CONTROL“ – Toto je nastavenie používané pre video kódovače. . Ďalšími bežnými kontrolami rýchlosti sú „VBR“, „CQP“.
- – Pre video kódovače nastaví hodnotu intervalu kľúčového rámca v sekundách alebo najbližšej možnej aproximácii. (Poznámka autora: Malo to byť „kľúč“, v rámcoch.)
Príklady kódovačov:
-
- Kódovač FFMPEG NVENC
- Kódovač QuickSync
Služby
Služby sú vlastné implementácie streamingových služieb, ktoré sa používajú s výstupmi, ktoré streamujú. Napríklad by ste mohli mať vlastnú implementáciu na streamovanie, aby ste sa Twitch Twitch a ďalšia pre YouTube, aby ste umožnili prihlásiť sa a používať svoje rozhrania, aby robili veci, ako napríklad získanie serverov RTMP alebo ovládanie kanála. Libobs/obs-služba.H Súbor je vyhradenou hlavičkou pre implementáciu služieb. Viac informácií nájdete v referencii API Service API (ob_service_t).
(Poznámka autora: API Service API je od tohto písania neúplné)
Napríklad na implementáciu objektu servisu musíte definovať štruktúru Obs_Service_info a vyplniť ju informáciami a spätnými spätnými hovormi súvisiacimi s vašou službou:
/* moja služba. [. ] striedať sa ob_service_info .id = "my_service", .get_name = , .vytvárať = my_service_create, .zničiť = my_service_destroy, .kódovať = my_service_encode, .aktualizácia = my_service_update, .get_url = my_service_url, .get_key =
Potom v mojom plugin..
/* My-plugin.c */ [. striedať sa ob_service_info my_service; /* Definované v mojej službe.c */ vyrovnanie ob_module_load(neplatný Obs_register_service(Amy_service [. pravdivý
Jediné dva existujúce objekty služieb sú objekty „Bežné služby RTMP“ a „Custom RTMP Service“ v doplnkoch/RTMP-službách
Nastavenia
Nastavenia (pozri libobs/obsdata.h) sa používajú na získanie alebo nastavenie údajov o nastaveniach zvyčajne spojené s objektmi libobs a potom sa dajú uložiť a načítať pomocou textu JSON. .
Ten ob_data_t ob_data_array_t sa podobne používa na uloženie množstva ob_data_t Objekty, podobné ako pri poliach JSON (aj keď nie celkom identické).
ob_data_t alebo ob_data_array_t Object, zavolali by ste funkcie Obs_data_create () alebo Obs_data_array_create (). ob_data_t a ob_data_array_t . Kedykoľvek ob_data_t alebo ob_data_array_t Objekt sa vracia funkciou, ich referencie sa zvyšujú, takže tieto referencie musíte zakaždým uvoľniť.
Nastavenie hodnôt pre ob_data_t Object, použijete jednu z nasledujúcich funkcií:
/ * Nastavte funkcie */ EXPORT neplatný ob_data_set_string(ob_data_t údaje, konštantný char *názov, konštantný char val EXPORT neplatný ob_data_set_intob_data_t *, konštantný char *názov, dlhý dlhý ); Obs_data_set_double(ob_data_t údaje, char *názov, zdvojnásobiť EXPORT neplatný ob_data_set_bool( *údaje, konštantný *názov, vyrovnanie val); EXPORT neplatný ob_data_set_obj(ob_data_t *údaje, konštantný char *názov, ob_data_t *obj EXPORT neplatný ob_data_set_array(ob_data_t *údaje, konštantný char *názov, ob_data_array_t rad);
Podobne na získanie hodnoty z ob_data_t
/ * Získajte funkcie */ EXPORT konštantný char *ob_data_get_stringob_data_t *, konštantný char názov); EXPORT dlhý dlhý ob_data_get_int(ob_data_t *údaje, char *názov); EXPORT zdvojnásobiť ob_data_get_double(ob_data_t *údaje, konštantný char *názov); vyrovnanie (ob_data_t údaje, konštantný char *názov EXPORT *(ob_data_t *, konštantný char *názov); EXPORT ob_data_array_t *ob_data_get_array(ob_data_t *údaje, konštantný char *názov);
Na rozdiel od typických dátových objektov JSON, ob_data_t Objekt môže tiež nastaviť predvolené hodnoty. To umožňuje schopnosť ovládať to, čo sa vracia, ak nie je priradená žiadna hodnota k konkrétnemu reťazcovi v ob_data_t Object, keď sa tieto údaje načítajú zo reťazca JSON alebo súboru JSON. Každý objekt libobs má tiež get_defaults spätné volanie, ktoré umožňuje nastavenie predvolených nastavení pre objekt pri tvorbe.
Tieto funkcie riadia predvolené hodnoty sú nasledujúce:
/* Funkcie predvolenej hodnoty. *// EXPORT neplatný ob_data_set_default_string(ob_data_t *údaje, konštantný char *názov, konštantný char *val); EXPORT neplatný Obs_data_set_default_int(ob_data_t *údaje, *, dlhý dlhý val); ob_data_set_default_double(ob_data_t *údaje, konštantný char názov, zdvojnásobiť val); EXPORT ob_data_set_default_boolob_data_t *údaje, konštantný *, vyrovnanie ); EXPORT neplatný (ob_data_t , char *, ob_data_t *obj);
Vlastnosti
Vlastnosti (pozri libobs/obscerties.h) sa používajú na automatické vygenerovanie používateľského rozhrania na úpravu nastavení pre objekt libobs (ak je to potrebné). Každý objekt libobs má a get_properties . Vlastnosti API definuje konkrétne vlastnosti, ktoré sú prepojené s nastaveniami objektu, a front-end tieto vlastnosti používa na generovanie widgetov, aby umožnil užívateľovi upraviť nastavenia. Napríklad, ak ste mali booleovské nastavenie, použili by ste Obs_properties_add_bool (), aby ste používateľovi umožnili zmeniť toto nastavenie. Viac informácií nájdete v referencii API API (Obs_properties_T).
Príklad toho:
statický *my_source_propertiesneplatný *údaje) * = obs_properties_create(); ob_properties_add_boolppts, "my_bool", („Mybool“)); Nevyužitý_parameterúdaje); návrat ppts . ] Obs_source_info my_source .get_properties my_source_properties, [. ] >;
Ten . . .
Vlastnosti je možné upraviť aj v závislosti od toho, aké nastavenia sú zobrazené. Napríklad môžete označiť určité vlastnosti ako zakázané alebo neviditeľné v závislosti od toho, aké konkrétne nastavenie je nastavené na používanie funkcie Obs_property_Modified_callback ().
statický vyrovnanie ob_properties_t *, ob_property_t *p, ob_data_t *nastavenie vyrovnanie = ob_data_get_boolnastavenie, ); p = ob_properties_get(, ); ob_property_set_enabled(, inak */ návrat pravdivý [. statický *my_source_properties(neplatný *) ob_properties_t ppts = obs_properties_create(); ob_property_t *p p = ob_properties_add_bool(ppts, "setting_a", („Nastavte“)); Obs_property_set_modified_callback(p, setting_a_modified); ob_properties_add_text(ppts, "setting_b", („Nastavenieb“), Obs_text_default); návrat ppts;
. Pri použití tejto metódy sa používa makro Obs_Module_use_default_locale (), ktorý automaticky načíta/zničí údaje o miestnych nasadeniach bez ďalšieho úsilia pri časti doplnku. ..
. Vývoz Obs_Module_set_locale () nazýva libobs na nastavenie aktuálneho jazyka a potom export Obs_Module_free_locale () nazýva Libobs pri zničení modulu modulu. .
© Copyright 2017-2023, Lain Bailey.
Sprievodca doplnkom
OBS Studio podporuje rôzne doplnky, ktoré poskytujú nové druhy zdrojov, filtrov a funkcií. Niektoré doplnky tiež umožňujú štúdiu Obs Studio komunikovať s určitými druhmi hardvéru, ako je napríklad palubná paluba Elgato Stream.
Niektoré doplnky sú tiež k dispozícii používateľom Linuxu prostredníctvom FlatHub.
Kompatibilita
. Existujú však určité prípady, keď doplnok nemusí byť kompatibilný s vašou kópiou OBS Studio:
- Doplnok je k dispozícii iba na jednej platforme (i.e.
- Doplnok nie je k dispozícii pre rovnakú architektúru (i.e.
Ak chcete zistiť, aké doplnky sú k dispozícii pre aké platformy v OBS Studio 28.0, pozri zoznam doplnkov OBS Studio 28.
Nainštalujte alebo odstráňte doplnky
Mnoho najobľúbenejších doplnkov OBS Studio prichádza s inštalatérmi. .
. Najskôr skontrolujte dokumentáciu doplnku.
(všetci používatelia)
Okná
(Legacy 32-bitové doplnky; OBS Studio 27.2.C: \ Program Files \ Obs-Studio \ Obs-plugins \ 32bit
Okná (jeden používateľ)
%AppData%\ Obs-Studio \ Obs-plugins
~/Knižnica/podpora aplikácie/Obs-Studio/Plugins
Linux
~/.
Linux
Inštalujte doplnky pomocou FlatPak
Ak nainštalujete OBS Studio do vlastného umiestnenia alebo použijete prenosný režim, budete musieť zmeniť cieľový priečinok inštalátora na svoju vlastnú polohu dáta/doplnky priečinok.
Obsah
- libobs/Obs.H – hlavná hlavička Libobs. Tento súbor automaticky obsahuje nasledujúce súbory: