..
Linux
(Flatpak)
. .
.
? .
Ez néhány figyelemre méltó fejléc, amelyet a pluginok általában használnak:
- .H – A plugin modulok létrehozásához használt elsődleges fejléc.
- libobs/obs.H – A fő Libobs fejléc.
- Libobs/ob-forrás.
- .
- .
- Libobs/OBS-Service.
- .
- .
- .
.txt
. ….
-csatlakoztat/adat-. az én-csatlakoztat/Cmakelists. -csatlakoztat-. --forrás.c az én-/az én-. az én-csatlakoztat-.c az én-csatlakoztat-.c
Ez egy példa egy közönséges cmakelistákra.Az ezekhez a fájlokhoz társított txt fájl:
.TXT projekt (My Plugin) szett (my-plugin_sources my-plugin.c A forrásom.c A kimenetem.C My-kódoló.c A szolgálatom.c) add_library (my-plugin modul $) cél_link_librares (my-plugin libobs) install_obs_plugin_with_data (my-plugin adatok)
Natív plugin inicializálás
A natív plugin modul létrehozásához be kell vonnia a libobs/obs-modulot. . . .
.C, amely minden típusú objektumot regisztrálna:
. () / * A közönséges INI-alapú locale (opcionális) */////////// "My Plugin", ) külső struktúra ob_source_info .c */ ob_output_info my_output; . ; . ob_service_info my_service /* A szolgálatomban definiálva. ob_module_load(üres ( (És); ( ob_register_serviceÉs); Visszatérés >
Források
. . A források felhasználhatók audio- és videószűrők, valamint átmenetek megvalósításához is. A libobok/ob-forrás.H fájl a források végrehajtásához szükséges fejléc. .
/* a forrásom. [. ] . = "My_Source", . Ob_source_type_input, . = , . = , .teremt = , . , . = , .video_render my_source_render, .get_width , .
..
. . struktúra ob_source_info ; . () [. igaz; >
- Szinkron videó forrás: A képforrás
- Aszinkron videó forrás: A véletlenszerű textúra -teszt forrás
- Hangforrás: A szinuszhullám tesztforrás
- Audio szűrő: A Gain Audio szűrő
A kimenetek lehetővé teszik a jelenleg megjelenő audio/videó kiadásának képességét. A streaming és a felvétel a kimenetek két általános példa, de nem az egyetlen típus típusa. . .A H fájl a kimenetek végrehajtásának dedikált fejléce. .
Például egy kimeneti objektum megvalósításához meg kell határoznia egy obs_output_info struktúrát, és kitöltenie kell azt a kimenethez kapcsolódó információkkal és visszahívásokkal:
. [. struktúra .személyazonosság , . = , .get_name = , . , . , . , . , . , . , .kóded_video_codecs , .
.C, felhívná az OBS_REGISTER_OUTPUT () telefonszámot az OBS_MODULE_LOad () -ben, hogy regisztrálja a kimenetet Libobs -szal.
/* My Plugin. [. ] /* A kimenetemben meghatározva.c */ ob_module_load) OBS_Register_Output(my_output . ] igaz
-
- Az FFMPEG MUXER kimenet
Kódolók
A kódolók a videó/audio kódolók obspecifikus megvalósításai, amelyeket kódolókkal rendelkező kimenetekkel használnak. . .. .
Például egy kódoló objektum megvalósításához meg kell határoznia egy obs_encoder_info struktúrát, és kitöltenie kell a kódolóval kapcsolatos információkkal és visszahívásokkal:
. . ob_encoder_info = . "my_encoder", .típus , . , . = my_encoder_name, .teremt = , .elpusztítani , .kódol = , .frissít , . my_encoder_extra_data, . = , . =
..
.c */ [. ] külső ; . Obs_register_encoder(És . ] Visszatérés >
- – .
- – . Általában elvárható, hogy legalább „CBR” sebességszabályozással rendelkezzen. .
- – . .
Példák a kódolókra:
-
- Az FFMPEG AAC/OPUS kódoló
A szolgáltatások a streaming szolgáltatások egyedi megvalósításai, amelyeket az áramlások kimeneteivel használnak. . .A H fájl a szolgáltatások végrehajtásának dedikált fejléce. .
(A szerző megjegyzése: A Service API hiányos az írás óta)
Például egy szolgáltatási objektum megvalósításához meg kell határoznia egy obs_service_info struktúrát, és kitöltenie kell a szolgáltatáshoz kapcsolódó információkkal és visszahívásokkal:
/* szolgálatom.c */ [. ] struktúra ob_service_info .személyazonosság = "my_service", .get_name my_service_name, .teremt my_service_create, .elpusztítani = my_service_destroy, .kódol = , .frissít , . , . = >;
Aztán a Plugin-ban.C, felhívná az OBS_Register_Service () -et az Obs_Module_Load () -ben, hogy regisztrálja a szolgáltatást a Libobs segítségével.
/* My Plugin.c */ [. ] ob_service_info ; . üres ob_register_service(my_service . ] ; >
Az egyetlen két meglévő szolgáltatási objektum a „Common RTMP szolgáltatások” és az „Egyedi RTMP szolgáltatás” objektumok a plugins/RTMP-szolgáltatásokban
Beállítások
.h) a beállítások beszerzésére vagy beállítására szolgálnak, amelyek jellemzően a Libobs objektumokhoz kapcsolódnak, majd menthetők és betölthetők a JSON szövegén keresztül. További információkért lásd az Adatbeállítások API referenciáját (obs_data_t).
A egyenértékű egy JSON objektumnak, ahol az al-objektumok karakterlánc-táblája, és a objektumok, hasonlóan a JSON tömbökhöz (bár nem egészen azonos).
Létrehozni egy Obs_data_t Objektum, felhívja az OBS_DATA_CREATE () vagy OBS_DATA_ARRAY_CREATE () funkciókat. és . Bármikor egy Obs_data_t Obs_data_array_t .
Az értékek beállításához egy Objektum, a következő funkciók egyikét használja:
/ * A funkciók beállítása */ ( adat, higgadt , higgadt csészék * üres *, csészék *, hosszú üres Obs_data_t *adat, higgadt , kettős vall (Obs_data_t adat, csészék *, ); üres adat, higgadt csészék *név, Obs_data_t *); EXPORT üres Obs_data_set_array(Obs_data_t adat, higgadt csészék , Obs_data_array_t );
Hasonlóképpen, hogy értéket szerezzen egy
/ * Funkciókat szerezzen */ csészék OBS_DATA_GET_STRING(Obs_data_t adat, *név); EXPORT hosszú hosszú (Obs_data_t adat, higgadt csészék *név); kettős ( adat, higgadt csészék *név); EXPORT bool ( *adat, higgadt csészék *); EXPORT Obs_data_t *Obs_data_get_obj(Obs_data_t , név); Obs_data_array_t Obs_data_get_array adat, higgadt *
A tipikus JSON adatobjektumokkal ellentétben a . Ez lehetővé teszi a visszaküldés ellenőrzését, ha egy adott karakterlánchoz nincs hozzárendelt érték . Minden egyes libobs objektumnak is van egy get_defaults .
Ezek a funkciók vezérlik az alapértelmezett értékeket a következők:
/* Alapértelmezett értékfunkciók. EXPORT obs_data_set_default_string(Obs_data_t *adat, higgadt csészék *név, ); obs_data_set_default_int( , higgadt , vall üres obs_data_set_default_double(Obs_data_t adat, higgadt csészék *név, kettős ); EXPORT üres ( *adat, csészék *név, bool vall); EXPORT üres Obs_data_t *adat, higgadt csészék *név, Obs_data_t *obj
Tulajdonságok
.h) a felhasználói felület automatikus előállításához használják a Libobs objektum beállításainak módosítására (ha szükséges). Minden Libobs objektumnak van egy . A Tulajdonságok API meghatározza a konkrét tulajdonságokat, amelyek kapcsolódnak az objektum beállításaihoz, és a front-end ezeket a tulajdonságokat használja a kütyü generálására, hogy a felhasználó módosítsa a beállításokat. Például, ha logikai beállítása lenne, akkor obs_properties_add_bool () -ot használna, hogy a felhasználó megváltoztassa ezt a beállítást. További információkért lásd a Tulajdonságok API referenciáját (OBS_PROPERTIES_T).
Példa erre:
statikus Obs_properties_t my_source_properties(üres *adat Obs_properties_t * OBS_PROPERTIES_ADD_BOOL, "my_bool", adat); ppts; [. ] my_source .get_properties = my_source_properties, . ] >;
A A paraméter az objektum adatainak, ha az objektum jelen van. . Lehet nulla, ha a tulajdonságokat a hozzá kapcsolódó objektum nélkül kapják meg.
. .
statikus beállítás_a_modified(Obs_properties_t *, p, *) engedélyezve beállítások, = OBS_PROPERTIES_GET(, "SEUTS_B"); obs_property_set_enabled(p, engedélyezve); ; > . statikus Obs_properties_t *my_source_properties( adat Obs_properties_t *p; OBS_PROPERTIES_ADD_BOOL, , ()); obs_property_set_modified_callback, beállítás_a_modified OBS_PROPERTIES_ADD_TEXT(, , ob_module_text"Beállítás" ", Ob_text_default ppts >
Lokalizáció
. Ennek a módszernek a használatakor az obs_module_use_default_locale () makrót használják, amely automatikusan betölti/megsemmisíti a lokál adatait, a plugin részén extra erőfeszítés nélkül. .h) akkor használják, ha szöveges keresésre van szükség.
Két export van a locale betöltéséhez/megsemmisítéséhez használt modulhoz: obs_module_set_locale () exportálás, és az obs_module_free_locale () export. A libobs az OBS_MODULE_SET_LOCALE () exportot hívja az aktuális nyelv beállításához, majd az OBS_MODULE_FREE_LOCALE () exportot a Libobs hívja a modul megsemmisítéséről. .
© Copyright 2017-2023, Lain Bailey.
. Egyes beépülő modulok lehetővé teszik az OBS Studio számára, hogy kommunikáljon bizonyos hardverekkel, például az Elgato Stream fedélzeten.
Néhány bővítményt a Linux felhasználók számára is elérhetővé teszik a Flathubon keresztül.
Kompatibilitás
. Vannak azonban bizonyos esetek, amikor a plugin nem kompatibilis az OBS Studio másolatával:
- A plugin csak egy platformon érhető el (i..
- A plugin nem érhető el ugyanazon építészethez (i.. x86_64, nem ARM64)
Hogy megnézhesse, milyen pluginok állnak rendelkezésre az OBS Studio 28 platformjaihoz.0, lásd az OBS Studio 28 plugin kompatibilitási listáját.
Telepítse vagy távolítsa el a bővítményeket
Az OBS Studio sok legnépszerűbb pluginja telepítőkkel érkezik. Általában az alább felsorolt helyekre telepítik a plugineket.
Ha manuálisan kell telepítenie a beépülő modulot, akkor a releváns fájloknak valószínűleg ezen mappákba kell menniük. .
ablakok (minden felhasználó)
C: \ Program Files \ Obs-Studio \ Obs-Plugins \ 64bit
.2.4 és csak előzetes)C: \ Program Files \ Obs-Studio \ Obs-Plugins \ 32bit
ablakok (egyetlen felhasználó)
%AppData%\ Obs-Studio \ Obs-Plugins
Mac operációs rendszer
~/Könyvtár/alkalmazás támogatás/OBS-Studio/Plugins
Linux
~/.Config/Obs-Studio/Plugins
Linux
(Flatpak)Telepítse a bővítményeket a Flatpak használatával
Ha az OBS Studio -t egyéni helyre telepíti vagy hordozható módot használja, akkor a telepítő célmappáját az egyéni helyére kell módosítania Data/pluginek mappa.
- libobs/obs.H – A fő Libobs fejléc.