.1.3 Dokumentasi, Panduan Plugin | Obs
Panduan Plugin
Contents
Plugin
Hampir semua fungsi tersuai ditambah melalui modul plugin, yang biasanya perpustakaan atau skrip dinamik. Keupayaan untuk menangkap dan/atau output audio/video, membuat rakaman, output ke aliran RTMP, Encode dalam x264 adalah semua contoh perkara yang dicapai melalui modul plugin.
Plugin boleh melaksanakan sumber, output, encoder, dan perkhidmatan.
Menulis plugin pertama anda? Kami menyediakan plugin templat asas untuk memulakan anda.
Header Modul Plugin
Ini adalah beberapa tajuk penting yang biasa digunakan oleh plugin:
- Libobs/Obs-Module.H – Header utama yang digunakan untuk membuat modul plugin. Fail ini secara automatik merangkumi fail berikut:
- Libobs/Obs.H – tajuk utama Libebs. Fail ini secara automatik merangkumi fail berikut:
- .H – Digunakan untuk melaksanakan sumber dalam modul plugin
- Libebs/Obs-Output.H – Digunakan untuk melaksanakan output dalam modul plugin
- Libebs/Obs-Encoder.H – Digunakan untuk melaksanakan pengekod dalam modul plugin
- Libebs/Obs-Service.H – Digunakan untuk melaksanakan perkhidmatan dalam modul plugin
- Libobs/Obs-Data.H – Digunakan untuk menguruskan tetapan untuk objek Libobs
- .H – Digunakan untuk menjana sifat untuk objek Libobs
- libebs/grafik/grafik.H – Digunakan untuk rendering grafik
.txt
Fail sumber cara biasa dianjurkan adalah untuk mempunyai satu fail untuk permulaan plugin, dan kemudian fail khusus untuk setiap objek individu yang anda laksanakan. Sebagai contoh, jika anda membuat plugin yang dipanggil ‘my-plugin’, anda akan mempunyai sesuatu seperti my-plugin.C Di mana permulaan plugin dilakukan, sumber my..c Untuk definisi output tersuai, dll.
Ini adalah contoh struktur direktori biasa untuk modul plugin asli:
saya-pasangkan/data/locale/-Kita. saya-/Cmakelists. -pasangkansaya-pasangkan.c -/saya-sumber. -saya-pengeluaran. -pasangkan/-. -pasangkan/saya-.
.Fail TXT yang dikaitkan dengan fail ini:
.TXT Project (My-Plugin) Set (my-plugin_sources my-plugin.c Sumber my.c-output.c-encoder..c) add_library (modul my-plugin $) target_link_libraries (my-plugin libebs) install_obs_plugin_with_data (data my-plugin)
.h header, gunakan obs_declare_module () makro, kemudian buat definisi fungsi obs_module_load () . Dalam fungsi obs_module_load () anda, anda kemudian mendaftarkan mana -mana sumber, output, pengekod, atau perkhidmatan anda. Lihat rujukan API modul untuk maklumat lanjut.
Berikut adalah contoh my-plugin.C, yang akan mendaftarkan satu objek setiap jenis:
/* my-plugin.c */ / * Mentakrifkan fungsi biasa (diperlukan) */ Obs_declare_module Obs_module_use_default_locale, "en-us" my_source .c */ luaran my_output . luaran ; /* Ditakrifkan dalam penyenaraian my. Struktur OBS_SERVICE_INFO my_service .c */ bool obs_module_load(tidak sah) obs_register_source&my_source); OBS_REGISTER_OUTPUT(& (&my_encoder); OBS_REGISTER_SERVICE(&my_service); ; >
Sumber
. Perkara seperti menangkap paparan/permainan/audio, memainkan video, menunjukkan imej, atau bermain audio. Sumber juga boleh digunakan untuk melaksanakan penapis audio dan video serta peralihan. .. .
/* sumber my.c */ . Struktur .ID = "my_source", . = OBS_SOURCE_TYPE_INPUT, . = OBS_SOURCE_VIDEO, .get_name = , . = , . = my_source_destroy, .Kemas kini , .Video_render , .get_width = my_source_width, .get_height = my_source_height >;
Kemudian, di my-plugin..
/* my-plugin.c */ [. /* Ditakrifkan dalam sumber my.c */ bool obs_module_load( obs_register_source&my_source [. ] ;
- Sumber video segerak: Sumber Imej
- Sumber Video Asynchronous: Sumber Ujian Tekstur Rawak
- Sumber Audio: Sumber Ujian Gelombang Sine
- Penapis Video: Penapis Video Ujian
- Penapis Audio: Penapis Audio Keuntungan
Output
Output membenarkan keupayaan untuk mengeluarkan audio/video yang sedang dijalankan. Streaming dan rakaman adalah dua contoh output biasa, tetapi bukan satu -satunya jenis output. . .. Lihat Rujukan API Output (OBS_OUTPUT_T) untuk maklumat lanjut.
/* my-output. . my_output .ID "my_output", . Obs_output_av | , . , . my_output_create, .memusnahkan = , . = my_output_start, . = , .encoded_packet , . , . = "H264", .encoded_udio_codecs >;
..
/* my-plugin. . ] luaran /* Ditakrifkan dalam my-output.c */ ) OBS_REGISTER_OUTPUT&); [. Benar >
- Output video/audio yang dikodkan:
- Output FLV
- Output ffmpeg muxer
- Output FFMPEG
Encoders
. X264, NVENC, QuickSync adalah contoh pelaksanaan encoder. Libebs/encoder.H Fail adalah tajuk khusus untuk melaksanakan encoder. Lihat Rujukan API Encoder (OBS_encoder_t) untuk maklumat lanjut.
Sebagai contoh, untuk melaksanakan objek pengekod, anda perlu menentukan struktur obs_encoder_info dan mengisi dengan maklumat dan panggilan balik yang berkaitan dengan pengekod anda:
/* My-encoder. [. . "my_encoder", .Jenis = Obs_encoder_video, .codec = , . = , . = my_encoder_create, . = my_encoder_destroy, . = my_encoder_encode, . , .get_extra_data = my_encoder_extra_data, .get_sei_data my_encoder_sei, . my_encoder_video_info
..
/* my-plugin. . luaran Struktur ; . (tidak sah obs_register_encodermy_encoder); . ] >
- – .
- “Rate_control” – Ini adalah tetapan yang digunakan untuk encoder video. Ia biasanya dijangka mempunyai sekurang -kurangnya kawalan kadar “CBR”. .
- “KEYINT_SEC” – Untuk pengekod video, menetapkan nilai selang kerangka utama, dalam beberapa saat, atau penghampiran yang paling dekat. .)
Contoh pengekod:
- Pengekod video:
- Pengekod X264
- Pengekod QuickSync
. . .H Fail adalah tajuk khusus untuk melaksanakan perkhidmatan. .
Sebagai contoh, untuk melaksanakan objek perkhidmatan, anda perlu menentukan struktur obs_service_info dan isi dengan maklumat dan panggilan balik yang berkaitan dengan perkhidmatan anda:
.c */ [. ] OBS_SERVICE_INFO = . = , . = , . my_service_create, . = , .encode , . = my_service_update, . , .get_key = >;
Kemudian, di my-plugin.c, anda akan memanggil obs_register_service () dalam obsc_module_load () untuk mendaftarkan perkhidmatan dengan libebs.
. . Struktur my_service; /* Ditakrifkan dalam perkhidmatan saya. obs_module_load( (my_service . ] kembali Benar;
Satu-satunya objek perkhidmatan yang sedia ada ialah objek “Perkhidmatan RTMP Biasa” dan “perkhidmatan RTMP tersuai” dalam plugin/RTMP-Services
Tetapan
.. .
The adalah bersamaan dengan objek JSON, di mana ia adalah jadual rentetan sub-objek, dan objek, serupa dengan tatasusunan JSON (walaupun tidak sama).
atau obs_data_array_t objek, anda akan memanggil fungsi obs_data_create () atau obs_data_array_create (). dan obs_data_array_t . obs_data_t .
objek, anda akan menggunakan salah satu fungsi berikut:
*, *nama, const *val); EKSPORT tidak sah (obs_data_t *data, const , panjang panjang EKSPORT tidak sah ( , Char , ganda ); obs_data_set_bool(obs_data_t *data, *nama, bool ( *, nama, obj tidak sah obs_data_set_array(obs_data_t *data, Char *,
/ * Dapatkan fungsi */ EKSPORT const *obs_data_get_stringobs_data_t *, const EKSPORT panjang obs_data_t *, const Char ); ganda obs_data_get_doubleobs_data_t , nama EKSPORT , Char ); EKSPORT obs_data_t ( , const ); obs_data_array_t *(obs_data_t , const *);
. objek apabila data itu dimuatkan dari rentetan json atau fail json. Setiap objek Libobs juga mempunyai get_defaults Panggilan balik yang membolehkan menetapkan tetapan lalai untuk objek pada penciptaan.
. tidak sah obs_data_t , Char *, Char *); tidak sah ( *, Char *nama, obs_data_t , const Char , val); *data, const Char nama, val); , Char , );
Sifat
.h) digunakan untuk menjana antara muka pengguna secara automatik untuk mengubah suai tetapan untuk objek LIBOBS (jika dikehendaki). get_properties . . . Lihat Rujukan API Properties (OBS_Properties_t) untuk maklumat lanjut.
*) obs_properties_t = obs_properties_create(); (, , "Mybool")); (); kembali ppts > [. ] Struktur .get_properties my_source_properties, .
data Parameter adalah data objek jika objek hadir. . Ia boleh menjadi batal jika sifat diambil tanpa objek yang berkaitan dengannya.
. .
bool obs_properties_t , OBS_PROPERTY_T p, obs_data_t * bool , "tetapan_a" p = (, "tetapan_b" , didayakan Benar; [. statik tidak sah data obs_properties_t = obs_properties_create(); OBS_PROPERTY_T p obs_properties_add_bool, "tetapan_a", "Tetapan")); p, ); , , , ); kembali
Biasanya, kebanyakan plugin yang dibundel dengan OBS Studio akan menggunakan kaedah lokalisasi ini yang mudah, di mana setiap fail adalah bahasa yang berbeza. . ..
. . Jika anda ingin melaksanakan pelaksanaan locale tersuai untuk plugin anda, anda ingin menentukan eksport ini bersama -sama dengan OBS_MODULE_TEXT () luaran sendiri dan bukannya bergantung pada OBS_MODULE_USE_DEFAULT_LOCALE () makro.
.
. Sesetengah plugin juga membenarkan OBS Studio untuk berkomunikasi dengan jenis perkakasan tertentu, seperti dek aliran elgato.
.
Keserasian
.
- .. Tingkap, bukan macOS)
- Plugin tidak tersedia untuk seni bina yang sama (i.e. x86_64, bukan ARM64)
Untuk melihat plugin apa yang tersedia untuk platform apa di OBS Studio 28.0, lihat Senarai Keserasian Plugin OBS Studio 28.
Pasang atau keluarkan plugin
Banyak plugin paling popular di Studio OBS datang dengan pemasang. Secara umum, mereka memasang plugin ke lokasi yang disenaraikan di bawah.
Sekiranya anda perlu memasang plugin secara manual, fail yang berkaitan mungkin perlu masuk ke dalam satu folder ini. Sila periksa dokumentasi plugin terlebih dahulu.
Tingkap (semua pengguna)
C: \ Program Files \ Obs-Studio \ Obs-Plugins \ 64bit
Tingkap
.2.4 dan sebelumnya sahaja)C: \ Program Files \ Obs-Studio \ Obs-Plugins \ 32bit
Tingkap (pengguna tunggal)
%AppData%\ obs-studio \ obs-plugins
~/Perpustakaan/Sokongan Aplikasi/Obs-Studio/Plugin
Linux
~/.Config/Obs-Studio/Plugin
Linux
(Flatpak)Pasang plugin menggunakan flatpak
Sekiranya anda memasang OBS Studio ke lokasi tersuai atau gunakan mod mudah alih, anda perlu menukar folder sasaran pemasang ke lokasi tersuai anda data/plugin folder.
Isi kandungan
- Libobs/Obs.H – tajuk utama Libebs. Fail ini secara automatik merangkumi fail berikut: