Plugins – OBS Studio 29.1.3 Dokumentasjon, Plugins Guide | Obs

Plugins Guide


(Flatpak)

. .

Plugins kan implementere kilder, utganger, kodere og tjenester.

? Vi tilbyr en grunnleggende mal -plugin for å komme i gang.

Dette er noen bemerkelsesverdige overskrifter som ofte brukes av plugins:

  • libobs/obdul.H – Den primære overskriften som brukes til å lage plugin -moduler.
    • libobs/obs.H – den viktigste libobs -overskriften.
      • libobs/obs-source.H – Brukes til å implementere kilder i plugin -moduler
      • .
      • libobs/obs-encoder.H – Brukes til å implementere kodere i plugin -moduler
      • libobs/obs-service.H – Brukes til å implementere tjenester i plugin -moduler
      • libobs/obs-data.
      • libobs/obs-Properties.H – Brukes til å generere egenskaper for Libobs -objekter
      • .

      Vanlig katalogstruktur og cmakelister.

      Den vanlige måten kildefiler er organisert på er å ha en fil for initialisering av plugin, og deretter spesifikke filer for hvert enkelt objekt du implementerer. .c Hvor plugin-initialisering er gjort, min kilde.c for definisjon av en tilpasset kilde, my-output.c for definisjon av en tilpasset utgang osv. (Dette er selvfølgelig ikke en regel)

      Dette er et eksempel på en vanlig katalogstruktur for en naturlig plugin -modul:

      min-plugg inn/data//-OSS.Inn jeg min-plugg inn/.tekst min-/-plugg inn. -plugg inn/min-kilde.c -/min-produksjon.c min-/min-Encoder.c --.c 

      Dette ville være et eksempel på vanlige cmakelister.

      ..C my-source.c my-output..C min service.c) add_library (my-plugin module $) target_link_libraries (my-plugin libobs) install_obs_plugin_with_data (my-plugin data)

      Innfødt plugin -initialisering

      For å opprette en naturlig plugin-modul, må du inkludere Libobs/Obs-Module.h header, bruk obs_declare_module () makro, og lag deretter en definisjon av funksjonen obs_module_load () . . Se modulen API -referanse for mer informasjon.

      Følgende er et eksempel på My-Plugin.C, som ville registrere ett objekt av hver type:

      . #inkludere / * Definerer vanlige funksjoner (påkrevd) */ Obs_declare_module() / * Implementerer vanlige INI-baserte lokale (valgfritt) */ ("My-plugin", "En-oss") ekstern struktur obs_source_info my_source; /* Definert i min kilde.C */  struktur  my_output; /* Definert i my-output.C */ ekstern struktur obs_encoder_info my_encoder; /* Definert i min koder.C */  struktur obs_service_info my_service /* Definert i min service.C */  tomrom  (Og obs_register_output(Ogmy_output); obs_register_encoder(my_encoder); obs_register_service(my_service); komme tilbake ekte; > 

      Kilder

      Kilder brukes til å gjengi video og/eller lyd på strømmen. Ting som å fange skjermer/spill/lyd, spille en video, vise et bilde eller spille lyd. Kilder kan også brukes til å implementere lyd- og videofiltre samt overganger. Libobs/Obs-kilden.H -filen er den dedikerte overskriften for å implementere kilder. Se Source API Reference (obs_source_t) for mer informasjon.

      For å implementere et kildeobjekt, må du for eksempel definere en OBS_SOURCE_INFO -struktur og fylle den ut med informasjon og tilbakeringinger relatert til kilden din:

      .C */ [.  struktur  my_source  .  , .type  Obs_source_type_input, .output_flags  Obs_source_video, . = my_source_name, .skape = my_source_create, .ødelegge  my_source_destroy, .Oppdater  , .video_render  my_source_render, .Get_Width = my_source_width, . = my_source_height >; 

      Da, i min plugin.C, du vil ringe obds_register_source () i obs_module_load () for å registrere kilden hos libobs.

      . [.  ekstern   my_source /* Definert i min kilde.C */ bool obs_module_loadtomrom  Ogmy_source [. ] komme tilbake ekte  

      • Asynkron videokilde: Den tilfeldige teksturtestkilden
      • Lydkilde: Sine Wave -testkilden
      • Videofilter: Testvideofilteret
      • Lydfilter: Gain Audio -filteret

      Utganger

      Utgangene tillater muligheten til å sende ut den for øyeblikket gjengivende lyd/video. Streaming og opptak er to vanlige eksempler på utganger, men ikke de eneste typer utganger. Utgangene kan motta rå data eller motta kodede data. .H -filen er den dedikerte overskriften for å implementere utganger. .

      For å implementere et utgangsobjekt, må du for eksempel definere en OBS_OUTPUT_INFO -struktur og fylle den ut med informasjon og tilbakeringinger relatert til utdataene dine:

      /* my-output.C */ . ] struktur obs_output_info my_output  .id = "my_output", .flagg = Obs_output_av | Obs_output_encoded, .  , .skape  , .  , .start  my_output_start, .Stoppe = , .  my_output_data, .get_total_bytes = my_output_total_bytes, . = "H264", . = "AAC" >; 

      Da, i min plugin.C, du vil ringe obds_register_output () i obs_module_load () for å registrere utdataene med libobs.

      .C */ [. ] ekstern struktur obs_output_info ; /* Definert i my-output. bool obs_module_load(tomrom  (Ogmy_output); . ] komme tilbake ekte > 

      Noen eksempler på utganger:

        • FLV -utgangen
        • FFMPEG -utgangen

        Kodere er OBS-spesifikke implementeringer av video/lydkodere, som brukes med utganger som bruker kodere. X264, Nvenc, QuickSync er eksempler på koderimplementeringer. Libobs/Obs-Ext-koderen.H -filen er den dedikerte overskriften for implementering av kodere. Se Encoder API Reference (obs_encoder_t) for mer informasjon.

        For å implementere et koderobjekt, må du for eksempel definere en obs_encoder_info -struktur og fylle den ut med informasjon og tilbakeringinger relatert til koderen din:

        /* My-encoder. . ] struktur  my_encoder_encoder =  . = "My_encoder", .type = , .kodek = , .få_navn = my_encoder_name, .skape = my_encoder_create, . = my_encoder_destroy, .kode = my_encoder_encode, .Oppdater  , .  my_encoder_extra_data, .get_sei_data = my_encoder_sei, .get_video_info = my_encoder_video_info  

        .C, du vil ringe obs_register_encoder () i obs_module_load () for å registrere koderen med libobs.

        . [.  ekstern  obs_encoder_info ; /* Definert i min koder.  obs_module_load(tomrom)  obs_register_encoderOg .   ; > 

        VIKTIG NOTAT: Koderinnstillinger har for øyeblikket noen få forventede vanlige innstillingsverdier som bør ha en spesifikk navnekonvensjon:

        • “bithastighet” – .
        • “Rate_control” – Dette er en innstilling som brukes til videokodere. . .
        • – . (Forfatterens merknad: Dette burde ha vært “Keyint”, i rammer.

        Eksempler på kodere:

        • Videokodere:

          Tjenester er tilpassede implementeringer av streamingtjenester, som brukes med utganger som strømmer. . .H -filen er den dedikerte overskriften for implementering av tjenester. .

          For å implementere et tjenesteobjekt, må du for eksempel definere en OBS_SERVICE_INFO -struktur og fylle den ut med informasjon og tilbakeringinger relatert til tjenesten din:

          /* Min service. [.  struktur obs_service_info my_service_service =  . = , . = my_service_name, .  , .ødelegge  my_service_destroy, .  my_service_encode, .  my_service_update, .get_url  my_service_url, .  my_service_key >; 

          .C, du vil ringe obds_register_service () i obs_module_load () for å registrere tjenesten med libobs.

          . [.  ekstern struktur obs_service_info ; . bool (tomrom)  obs_register_service(); .   ; > 

          Innstillinger

          .h) brukes til å få eller angi innstillingsdata som vanligvis er assosiert med Libobs -objekter, og kan deretter lagres og lastes via JSON -tekst. Se datainnstillingene API Reference (obs_data_t) for mer informasjon.

          De obs_data_t tilsvarer et JSON-objekt, der det er en strengbord med underobjekter, og obs_data_t objekter, lik JSON Arrays (men ikke helt identisk).

          obs_data_t eller obs_data_array_t Objekt, vil du ringe OBS_DATA_CREATE () eller OBS_DATA_ARRAY_CREATE () Funksjoner. obs_data_t obs_data_array_t Objekter blir referert til referanse, så når du er ferdig med objektet, kan du ringe obs_data_release () eller obs_data_array_release () for å frigjøre disse referansene. obs_data_t obs_data_array_t .

          Å angi verdier for en obs_data_t Objekt, du vil bruke en av følgende funksjoner:

           EKSPORT tomrom obs_data_set_stringobs_data_t *data, const røye *Navn, const røye *Val  tomrom obs_data_set_int data, const røye Navn,   ); EKSPORT tomrom obs_data_set_doubleobs_data_t *data, const røye *Navn, dobbelt  EKSPORT  obs_data_set_bool(obs_data_t *data, const  *Navn,  Val); EKSPORT tomrom (obs_data_t data, const røye *,  *obj EKSPORT tomrom (obs_data_t data,  røye *Navn, obs_data_array_t *); 

          obs_data_t Objekt, du vil bruke en av følgende funksjoner:

          / * Få funksjoner */ EKSPORT const røye (obs_data_t , const røye *Navn); EKSPORT lang  (obs_data_t *data, const  *Navn); EKSPORT dobbelt ( *data, const røye *Navn);   obs_data_get_bool(obs_data_t *, const røye *Navn EKSPORT  *(obs_data_t data,   *Navn  obs_data_array_t obs_data_get_array( , const røye ); 

          Objekt kan også angi standardverdier. Dette tillater muligheten til å kontrollere hva som returneres hvis det ikke er noen verdi tilordnet en spesifikk streng i en . tilbakeringing som gjør det mulig å sette standardinnstillingene for objektet ved opprettelsen.

          Disse funksjonene kontrollerer standardverdiene er som følger:

          /* Standardverdifunksjoner. */ EKSPORT  obs_data_set_default_string(obs_data_t ,   Navn, const røye *Val);  tomrom (obs_data_t *data,  røye , lang lang Val); EKSPORT  (obs_data_t *data,  røye *Navn, dobbelt Val); EKSPORT tomrom obs_data_set_default_boolobs_data_t *data, const  *,  );   obs_data_t *,   *Navn,  obj 

          Egenskaper

          Egenskaper (se Libobs/OBS-Properties.. . . For eksempel, hvis du hadde en boolsk setting, ville du brukt obs_properties_add_bool () for å la brukeren kunne endre den innstillingen. .

          Et eksempel på dette:

          statisk  *my_source_properties(tomrom )   *ppts = obs_properties_create , "My_bool", obs_module_text("Mybool")); (data); komme tilbake  > .    my_source  .get_properties = my_source_properties, .   

          . . Det kan være null hvis egenskapene blir hentet uten et objekt tilknyttet det.

          . For eksempel kan du merke visse egenskaper som funksjonshemmede eller usynlige, avhengig av hva en bestemt innstilling er satt til å bruke OBS_Property_set_Modified_callback () -funksjonen.

          statisk  Setting_a_modifiedobs_properties_t , obs_property_t *p, obs_data_t *Innstillinger  bool aktivert  obs_data_get_bool(Innstillinger, "Setting_a");   obs_properties_get(, "Setting_b"); OBS_PROPERTY_SET_ENABLEDp,  /* Returner sann for å oppdatere eiendomswidgeter, falske ellers */ komme tilbake  > [. ] statisk  *my_source_properties(tomrom *data    = obs_properties_create();  *p  = obs_properties_add_bool(, , obs_module_text)); ,  (ppts, "Setting_b", "SettingB", );  ; > 

          Lokalisering

          Vanligvis vil de fleste plugins som er samlet med OBS-studio bruke en enkel lokaliseringsmetode i filen, der hver fil er et annet språk. Når du bruker denne metoden, brukes obs_module_use_default_locale () makroen som automatisk vil laste/ødelegge lokaldataene uten ekstra krefter på en del av plugin -en. Deretter er Obs_Module_Text () -funksjonen (som automatisk erklæres som en ekstern av libobs/obdul.h) brukes når tekstoppslag er nødvendig.

          Det er to eksport Modulen som brukes til å laste/ødelegge Locale: OBS_MODULE_SET_LOCALE () Eksport, og Obs_Module_Free_Locale () Eksport. . .

          .

          . .

          Noen plugins er også gjort tilgjengelig for Linux -brukere via Flathub.

          De fleste plugins er utviklet for å være brukbare på alle plattformer der OBS -studio er tilgjengelig.

          • Plugin er bare tilgjengelig på en plattform (i.. Windows, ikke macOS)
          • ..
          • Pluginen er ikke oppdatert for versjonen av OBS -studio som du bruker

          .0, se OBS Studio 28 Plugin Compatibility List.

          Installer eller fjern plugins

          . Generelt installerer de plugins på stedene som er oppført nedenfor.

          . Vennligst sjekk plugins dokumentasjon først.

          Vinduer


          (Legacy 32-bit plugins; OBS Studio 27.2.Bare 4 og tidligere)

          Vinduer (enkeltbruker)

          %Appdata%\ obs-studio \ obs-plugins

          .konfigurasjon/obs-studio/plugins

          Linux
          (Flatpak)

          Hvis du installerer OBS -studio til et tilpasset sted eller bruker bærbar modus, må du endre installasjons målmappe til den tilpassede plasseringen mappe.