Pluginy – OBS Studio 29.1.

Sprievodca doplnkom

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