Pluginy

Téměř všechny vlastní funkce jsou přidány prostřednictvím modulů pluginů, což jsou obvykle dynamické knihovny nebo skripty. .

Pluginy mohou implementovat zdroje, výstupy, kodéry a služby.

Psaní prvního pluginu? .

Záhlaví modulů pluginu

Toto jsou některé pozoruhodné záhlaví, které se běžně používají pluginy:

  • libobs/obsc-module.H – Primární záhlaví používanou pro vytváření modulů pluginu.
    • libobs/obs.H – Hlavní záhlaví libobů. Tento soubor automaticky obsahuje následující soubory:
      • .H – Používá se pro implementaci zdrojů v modulech pluginu
      • libobs/obscret.H – Používá se pro implementaci výstupů v modulech pluginu
      • .H – Používá se pro implementaci kodérů v modulech pluginu
      • .
      • .
      • libobs/obs-properties.H – Používá se pro generování vlastností pro objekty Libobs
      • .

      Společná struktura adresářů a cmakelisté.txt

      . Například, pokud byste měli vytvořit plugin s názvem „My-Plugin“, měli byste něco jako My-Plugin…C pro definici vlastního výstupu atd. (To samozřejmě není pravidlo)

      Toto je příklad společné struktury adresáře pro modul nativního pluginu:

      můj-datanárodní prostředíen-NÁS.ini můj-zapojit/Cmakelisté.txt můj-zapojit/můj-zapojit.C můj-zapojit/můj-zdroj.C můj-zapojitmůj-. můj-zapojitmůj-. --servis.C 

      To by byl příklad běžných cmakelistů.

      # my-plugin/cmakelisté..c můj zdroj..c My-Encoder..c) Add_library (Module My-Plugin $) Target_Link_Library (MY-Plugin libobs) install_obs_plugin_with_data (data my-plugin)

      .H HEADER, použijte obs_declare_module () makro a poté vytvořte definici funkce obs_module_load () . . Další informace naleznete v referenci API Module API.

      Následuje příklad mého pluginu.C, který by zaregistroval jeden objekt každého typu:

      /* My-Plugin.c */  / * Definuje běžné funkce (vyžadováno) */ () / * Implementuje běžné národní prostředí (volitelné) */ ("My-Plugin", "en-US"  struktur obs_source_info my_source;; .c */ externí struktur obs_output_info my_output /* Definované v mém výstupu.c */ externí struktur obs_encoder_info my_encoder .c */  struktur  my_service;; /* Definované v mé službě.c */ Bool obs_module_loadneplatné)  obs_register_source obs_register_output(A my_encoder); obs_register_service();  skutečný;; > 

      Zdroje se používají k vykreslení videa a/nebo zvuku na streamu. Věci, jako je zachycení displejů/her/zvuku, přehrávání videa, zobrazení obrázku nebo přehrávání zvuku. . Libobs/obsworce.H soubor je vyhrazená záhlaví pro implementaci zdrojů. Další informace naleznete v části Reference API API (SEC_SOURCE_T).

      Například pro implementaci zdrojového objektu musíte definovat strukturu SEC_SOURCE_INFO a vyplnit ji informacemi a zpětnými voláními souvisejícími s vaším zdrojem:

      /* můj zdroj.c */ [.   obs_source_info   .id  "My_source", . = , .output_flags = Obs_source_video, .get_name = my_source_name, .vytvořit  my_source_create, .zničit = my_source_destroy, .Aktualizace = , . = , . = , .get_height  my_source_height  

      Poté v My-Plugin.C, zavolali byste Obs_register_Source () v obs_module_load () a zaregistrovali zdroj u libobs.

      . . ]  struktur obs_source_info  /* Definované v mém zdroji.c */ Bool (neplatné)  (Amy_source [. ]  skutečný;; > 

      • Synchronní zdroj videa: Zdroj obrázku
      • Asynchronní zdroj videa: Zdroj testu náhodného textury
      • Zvukový filtr: Zisk zvukový filtr

      Výstupy umožňují schopnost vydávat aktuálně vykreslování zvuku/videa. Streamování a nahrávání jsou dva běžné příklady výstupů, ale ne jediné typy výstupů. Výstupy mohou přijímat nezpracovaná data nebo přijímat kódovaná data. Libobs/obscret.. Další informace naleznete v části Reference API API (SEC_OUTPUT_T).

      /* můj výstup. [. ] struktur obs_output_info   .  "My_output", .  Obs_output_av  , . = , .  my_output_create, .zničit  , . = , . = , .concoded_packet = my_output_data, .get_total_bytes = my_output_total_bytes, .concoded_video_codecs  "H264", .concoded_audio_codecs =  >; 

      Poté v My-Plugin.C, zavolali byste Obs_Rregister_output () v Obs_Module_load (), abyste zaregistrovali výstup u libobů.

      /* My-Plugin.c */ [.  externí   my_output /* Definované v mém výstupu. Bool obs_module_load)  (Amy_output); [.  vrátit se  > 

      Některé příklady výstupů:

      • Kódované výstupy videa/zvuku:
        • Výstup FLV
        • Výstup proudu RTMP

        Encoders

        . X264, NVENC, QuickSync jsou příklady implementací kodéru. .. .

        Například pro implementaci objektu kodéru musíte definovat strukturu obs_encoder_info a vyplnit ji informacemi a zpětnými voláními souvisejícími s vaším kodérem:

        .c */ .   obs_encoder_info my_encoder_encoder   .id  , . = Obs_encoder_video, .kodek  "H264", . = my_encoder_name, .vytvořit  my_encoder_create, .zničit  , .zakódovat = , . = , .get_extra_data = my_encoder_extra_data, .get_sei_data  , .get_video_info = my_encoder_video_info  

        ..

        .c */ . ] externí struktur obs_encoder_info my_encoder;; /* Definované v mém encodéru.c */ Bool obs_module_load()  obs_register_encoder(my_encoder .   skutečný  

        • „Bitrate“ – .
        • „Rate_control“ – . . Dalšími běžnými kontrolami sazeb jsou „VBR“, „CQP“.
        • – . (Poznámka autora: Měl to být „Keyint“, ve snímcích.)
          • Kodér FFMPEG NVENC

          Služby jsou vlastní implementace streamovacích služeb, které se používají s výstupy, které streamují. Například byste mohli mít vlastní implementaci pro streamování do Twitch a další pro YouTube, aby se umožnila možnost přihlásit se a použít jejich API k tomu, aby dělali věci, jako je získání serverů RTMP nebo ovládání kanálu. .. Další informace naleznete v části Reference API Service API (SEC_SERVICE_T).

          (Poznámka autora: API Service API je od tohoto psaní neúplné)

          Například pro implementaci objektu služby musíte definovat strukturu SEC_SERVICE_INFO a vyplnit ji informacemi a zpětnými voláními souvisejícími s vaší službou:

          .c */ [. ]  obs_service_info  =  .  , .get_name = my_service_name, . = , .  , .  my_service_encode, . = my_service_update, .  my_service_url, .get_key =  >; 

          .C, zavolali byste Obs_REGISTER_SERVICE () v Obs_Module_load (), abyste zaregistrovali službu u libobs.

          .c */ . ]   obs_service_info my_service;; . Bool neplatné)  obs_register_servicemy_service); . ]    

          Jediné dva existující objekty služeb jsou objekty „běžné služby RTMP“ a „vlastní služby RTMP“ v pluginech/RTMP-Services

          Nastavení

          Nastavení (viz libobs/obs-data.h) se používají k získání nebo nastavení dat nastavení obvykle spojených s objekty Libobs a pak je lze uložit a načíst pomocí textu JSON. .

          The je ekvivalent objektu JSON, kde se jedná o tabulku s řetězci dílčích objektů a obs_data_t objekty, podobné poli JSON (i když ne zcela identické).

          Vytvořit nebo obs_data_array_t objekt, zavolal byste obs_data_create () nebo obs_data_array_create () funkce. . Kdykoli .

          Nastavit hodnoty pro objekt, použili byste jednu z následujících funkcí:

          / * Nastavit funkce */  neplatné obs_data_set_string( *data, const char ,  char *   (obs_data_t *,   název,  dlouho Val VÝVOZNÍ  obs_data_t , const  *název, dvojnásobek Val  neplatné obs_data_set_bool( , const char ,  Val  neplatné obs_data_t *,   *, obs_data_t *);  neplatné obs_data_set_array(obs_data_t *data,  char *, obs_data_array_t *pole); 

          obs_data_t objekt, použili byste jednu z následujících funkcí:

          / * Získejte funkce */ VÝVOZNÍ const  obs_data_get_string( *, const char ); VÝVOZNÍ dlouho dlouho ( *,   *název  dvojnásobek (obs_data_t , const char  VÝVOZNÍ  obs_data_t *data,  char *název);  obs_data_t *obs_data_get_obj( *,  char *);  obs_data_array_t *obs_data_get_array( *data,  char *název); 

          Na rozdíl od typických datových objektů JSON Objekt může také nastavit výchozí hodnoty. obs_data_t . Každý objekt libobs má také a get_defaults zpětné volání, které umožňuje nastavení výchozí nastavení objektu při tvorbě.

          /* Výchozí funkce hodnoty.  VÝVOZNÍ neplatné obs_data_set_default_string(obs_data_t *, const char *,  char *   obs_data_t , const  *,  dlouho Val);   obs_data_set_default_double *data,  char *,  Val VÝVOZNÍ neplatné (obs_data_t , const char název,  Val  neplatné (obs_data_t data, const char *,  obj); 

          .h) se používají k automatickému generování uživatelského rozhraní pro úpravu nastavení pro objekt libobs (pokud je to žádoucí). Každý objekt libobs má a get_properties zpětné volání, které se používá ke generování vlastností. . Například, pokud byste měli booleovské nastavení, použili byste Obs_Properties_Add_Bool (), aby uživateli mohl toto nastavení změnit. Další informace naleznete v části Reference API API (SEC_PROPERTIES_T).

          Příklad tohoto:

          statický obs_properties_t      = (); (PPT, , obs_module_text"Mybool"   ;;  .   obs_source_info   . = , .   

          The . . Může to být nulové, pokud jsou vlastnosti získány bez objektu.

          Vlastnosti lze také upravit v závislosti na tom, jaké nastavení je zobrazeno. .

          Například, pokud jste chtěli booleovskou vlastnost a skrýt textovou vlastnost B:

           Bool Setting_a_modified(obs_properties_t ,  ,  )  Bool povoleno  (Nastavení, );  = ,  obs_property_set_enabled, povoleno /* Vraťte True pro aktualizaci widgetů vlastností, false v opačném případě */  skutečný;; > . ] statický obs_properties_t neplatné      obs_properties_create  *str str = obs_properties_add_bool, , )); str,  , , obs_module_text, );  PPT > 

          . . .h) se používá, když je potřeba vyhledávání textu.

          . . Pokud si přejete implementovat implementaci vlastního národního prostředí pro váš plugin, chcete tyto export definovat spolu s externem obs_module_text () místo toho, abyste se spoléhali na obs_module_use_default_locale () makro.

          .

          . Některé pluginy také umožňují Obs Studio komunikovat s určitými druhy hardwaru, jako je například paluba Elgato Stream.

          .

          Kompatibilita

          . Existují však určité případy, kdy plugin nemusí být kompatibilní s vaší kopií Obs Studio:

          • ..
          • plugin není k dispozici pro stejnou architekturu (i.E.

          .0, viz seznam kompatibility Pluginu Obs Studio 28.

          Nainstalujte nebo odstraňte pluginy

          Mnoho z nejpopulárnějších pluginů Studio Obs je přichází s instalačními pracovníky. .

          . .


          .2.

          (svobodný uživatel)

          Operační Systém Mac

          ~/Knihovna/Aplikační podpora/obs-studio/pluginy

          Linux

          ~/.


          (Flatpak)

          .

          Obsah