Plugin – OBS Studio 29.1.3 Dokumentasi, Panduan Plugin | Obs
Panduan Plugin
Contents
Linux
Plugin
Hampir semua fungsi kustom ditambahkan melalui modul plugin, yang biasanya merupakan pustaka atau skrip dinamis. .
Plugin dapat mengimplementasikan sumber, output, encoder, dan layanan.
Menulis plugin pertama Anda? Kami menyediakan plugin template dasar untuk membantu Anda memulai.
Header Modul Plugin
Ini adalah beberapa header terkenal yang biasa digunakan oleh plugin:
- Libobs/Obs-Modul.H – Header utama yang digunakan untuk membuat modul plugin. File ini secara otomatis menyertakan file berikut:
- LIBOBS/OBS.. File ini secara otomatis menyertakan file berikut:
- Libobs/Obs-Source.H – Digunakan untuk mengimplementasikan sumber dalam modul plugin
- libobs/obs-output.H – Digunakan untuk mengimplementasikan output dalam modul plugin
- .H – Digunakan untuk mengimplementasikan encoder dalam modul plugin
- Libobs/Obs-Service.
- Libobs/obs-data.h – digunakan untuk mengelola pengaturan untuk objek libobs
- .h – digunakan untuk menghasilkan properti untuk objek libobs
- libobs/grafik/grafik.h – digunakan untuk rendering grafis
Struktur Direktori Umum dan Cmakelists.txt
File sumber cara umum diatur adalah memiliki satu file untuk inisialisasi plugin, dan kemudian file spesifik untuk setiap objek individu yang Anda terapkan. Misalnya, jika Anda membuat plugin yang disebut ‘My-plugin’, Anda akan memiliki sesuatu seperti plugin saya.c Di mana inisialisasi plugin dilakukan, source saya.C Untuk definisi sumber khusus, output saya.C untuk definisi output khusus, dll. (Ini bukan aturan tentu saja)
-ku-plugindata/lokal/en-KITA. -ku-/. -ku-plugin/-ku-plugin.C -plugin/-ku-sumber. -ku-/-ku-keluaran.C -ku--. -ku--ku-melayani.C
.file txt yang terkait dengan file -file ini:
..C-Sumber My.C output saya.C my-encoder..c) add_library (modul my-plugin $) target_link_libraries (my-plugin libobs) install_obs_plugin_with_data (data plugin my-plugin)
Inisialisasi plugin asli
Untuk membuat modul plugin asli, Anda harus menyertakan libobs/obt-module. . Dalam fungsi obs_module_load () Anda, Anda kemudian mendaftarkan salah satu sumber, output, encoder, atau layanan khusus Anda. Lihat Referensi Modul API untuk informasi lebih lanjut.
Berikut ini adalah contoh plugin saya.
/* plugin saya. / * Mendefinisikan fungsi umum (diperlukan) */ Obs_declare_module() / * Mengimplementasikan lokal berbasis INI (opsional) */ (, "en-us") obs_source_info my_source /* Didefinisikan dalam sumber saya.C */ Extern struct obs_output_info ; /* Didefinisikan dalam output saya. Extern struct my_encoder .C */ Extern .C */ obs_module_loadruang kosong) (&my_source); obs_register_outputmy_output); obs_register_encoder( obs_register_service(&my_service BENAR >
. Hal -hal seperti menangkap tampilan/game/audio, memutar video, menampilkan gambar, atau bermain audio. . Libobs/Obs-Source.File h adalah header khusus untuk mengimplementasikan sumber. Lihat referensi API sumber (obs_source_t) untuk informasi lebih lanjut.
Misalnya, untuk mengimplementasikan objek sumber, Anda perlu mendefinisikan struktur obs_source_info dan mengisinya dengan informasi dan panggilan balik yang terkait dengan sumber Anda:
. [. ] struct obs_source_info my_source .pengenal = "my_source", .jenis Obs_source_type_input, .output_flags = Obs_source_video, . = , .membuat my_source_create, . my_source_destroy, .memperbarui , .Video_render = my_source_render, . my_source_width, . = my_source_height >;
..
.C */ [. ] struct ; /* Didefinisikan dalam sumber saya. ) my_source); . BENAR; >
Beberapa contoh sumber sederhana:
- Sumber Video Sinkron: Sumber Gambar
- Sumber Video Asynchronous: Sumber Tes Tekstur Acak
- Filter Video: Filter Video Uji
Output
Output memungkinkan kemampuan untuk mengeluarkan audio/video yang sedang rendering saat ini. Streaming dan perekaman adalah dua contoh umum output, tetapi bukan satu -satunya jenis output. . .file h adalah header khusus untuk menerapkan output. Lihat Referensi API Output (obs_output_t) untuk informasi lebih lanjut.
/* output saya.C */ . ] struct .pengenal , .bendera Obs_output_av | Obs_output_encoded, . my_output_name, .membuat my_output_create, . , .awal my_output_start, .berhenti , .encoded_packet = , .get_total_bytes = my_output_total_bytes, .encoded_video_codecs = , .encoded_audio_codecs =
Lalu, dalam plugin saya.C, Anda akan menelepon obs_register_output () di obs_module_load () untuk mendaftarkan output dengan libobs.
/* plugin saya. . Extern struct obs_output_info ; . bool . ] kembali >
-
- Output FLV
- Output FFMPEG
Encoders
. x264, nvenc, quicksync adalah contoh implementasi encoder. Libobs/obs-encoder.File h adalah header khusus untuk mengimplementasikan encoder. Lihat Referensi API Encoder (obs_encoder_t) untuk informasi lebih lanjut.
Misalnya, untuk mengimplementasikan objek Encoder, Anda perlu mendefinisikan struktur obs_encoder_info dan mengisinya dengan informasi dan panggilan balik yang terkait dengan encoder Anda:
/* my-encoder.C */ . obs_encoder_info my_encoder_encoder . = "my_encoder", . Obs_encoder_video, .codec = , . = my_encoder_name, .membuat = , .menghancurkan = , .menyandi my_encoder_encode, .memperbarui , . , .get_sei_data = , . my_encoder_video_info
..
. . Extern ; . (ruang kosong) obs_register_encoder(&my_encoder); [. ] kembali BENAR
CATATAN PENTING:
- – .
- “Rate_control” – Ini adalah pengaturan yang digunakan untuk encoder video. . .
- – Untuk encoder video, atur nilai interval frame, dalam detik, atau perkiraan terdekat. .)
- Encoders Video:
- Encoder X264
- Encoder QuickSync
Layanan
. . .. .
(Catatan Penulis: API Layanan tidak lengkap pada tulisan ini)
.C */ . ] obs_service_info my_service_service = .pengenal = , .get_name = , .membuat = my_service_create, . my_service_destroy, .menyandi , .memperbarui = , . , . my_service_key
Lalu, dalam plugin saya..
/* plugin saya.C */ [. ] ; /* Didefinisikan dalam layanan saya.C */ bool ruang kosong (&my_service [. kembali >
Pengaturan (lihat libobs/obs-data.h) digunakan untuk mendapatkan atau mengatur data pengaturan yang biasanya terkait dengan objek libobs, dan kemudian dapat disimpan dan dimuat melalui teks JSON. Lihat Referensi API Pengaturan Data (obs_data_t) untuk informasi lebih lanjut.
adalah setara dengan objek JSON, di mana itu adalah tabel string sub-objek, dan obs_data_array_t serupa digunakan untuk menyimpan array obs_data_t .
Untuk membuat atau obs_data_array_t objek, Anda akan memanggil fungsi obs_data_create () atau obs_data_array_create (). obs_data_t Dan obs_data_array_t Objek adalah referensi yang dihitung, jadi ketika Anda selesai dengan objek, hubungi obs_data_release () atau obs_data_array_release () untuk merilis referensi tersebut. Kapan saja .
Objek, Anda akan menggunakan salah satu fungsi berikut:
/ * Mengatur fungsi */ EKSPOR , const *, const arang *Val ruang kosong (obs_data_t , const *nama, panjang panjang ); ruang kosong obs_data_set_double( *data, arang *nama, dobel Val); EKSPOR obs_data_set_bool( , arang *nama, ); ruang kosong obs_data_set_obj(obs_data_t *data, const arang *, OBJ); EKSPOR ruang kosong obs_data_set_array(obs_data_t *, const arang *nama, Himpunan
obs_data_t
EKSPOR obs_data_get_string *data, const arang nama EKSPOR panjang data, *nama); EKSPOR ( data, const arang nama); obs_data_get_boolobs_data_t data, arang ); EKSPOR *obs_data_get_obj data, const arang ); EKSPOR obs_data_array_t *obs_data_get_array(obs_data_t *data, const arang
Tidak seperti objek data JSON yang khas, obs_data_t . obs_data_t . get_defaults .
. ruang kosong data, arang *nama, const *Val); EKSPOR ruang kosong obs_data_set_default_int(obs_data_t *data, const arang *nama, panjang ruang kosong obs_data_set_default_doubleobs_data_t , arang , dobel *data, const arang *nama, bool Val); EKSPOR ( *, arang *nama, *OBJ);
Properti
Properti (lihat Libobs/Obs-Properties.. Setiap objek libobs memiliki a panggilan balik yang digunakan untuk menghasilkan properti. . Misalnya, jika Anda memiliki pengaturan boolean, Anda akan menggunakan obs_propersies_add_bool () untuk memungkinkan pengguna dapat mengubah pengaturan itu. Lihat Referensi API Properties (OBS_PROPERTIES_T) untuk informasi lebih lanjut.
obs_propersies_t *my_source_properties(ruang kosong *data) = obs_propersies_create(); obs_propersies_add_bool(ppts, "my_bool", obs_module_text( Tidak digunakan_parameter(data); kembali ppts; [. ] struct obs_source_info my_source .get_properties = , . >;
Itu . . .
Properti juga dapat dimodifikasi tergantung pada pengaturan apa yang ditampilkan. .
statis pengaturan_a_modifiedobs_propersies_t *, obs_property_t P, obs_data_t Pengaturan Pengaturan, ); = obs_propersies_get(ppts, ); obs_property_set_enabled(P, jika tidak */ ; > . statis ) obs_propersies_t *ppts = obs_propersies_create(); obs_property_t = obs_propersies_add_bool(, "pengaturan_a", obs_module_text P, pengaturan_a_modified ppts, "Pengaturan_B", obs_module_text"Pengaturan", Obs_text_default); kembali ;
Lokalisasi
Biasanya, sebagian besar plugin yang dibundel dengan OBS Studio akan menggunakan metode pelokalan ini-file sederhana, di mana setiap file adalah bahasa yang berbeda. Saat menggunakan metode ini, makro obs_module_use_default_locale () digunakan yang akan secara otomatis memuat/menghancurkan data lokal tanpa upaya tambahan pada bagian dari plugin. .h) digunakan saat pencarian teks diperlukan.
Ada dua ekspor modul yang digunakan untuk memuat/menghancurkan lokal: Obs_module_set_locale () Ekspor, dan ekspor obs_module_free_locale (). Ekspor obs_module_set_locale () dipanggil oleh libobs untuk mengatur bahasa saat ini, dan kemudian ekspor obs_module_free_locale () dipanggil oleh libobs pada penghancuran modul. .
.
Panduan Plugin
OBS Studio mendukung berbagai plugin yang menyediakan jenis sumber, filter, dan fitur baru. .
Beberapa plugin juga tersedia untuk pengguna Linux melalui flathub.
Kesesuaian
Sebagian besar plugin dikembangkan agar dapat digunakan di semua platform di mana OBS Studio tersedia. Namun, ada kasus -kasus tertentu di mana plugin mungkin tidak kompatibel dengan salinan OBS Studio Anda:
- Plugin ini hanya tersedia di satu platform (i.e. Windows, bukan macOS)
- Plugin ini tidak tersedia untuk arsitektur yang sama (i.e. x86_64, bukan ARM64)
- Plugin belum diperbarui untuk versi OBS Studio yang Anda gunakan
Untuk melihat plugin apa yang tersedia untuk platform apa di OBS Studio 28.0, lihat daftar kompatibilitas plugin OBS Studio 28.
Banyak plugin Obs Studio yang paling populer datang dengan installer. Secara umum, mereka memasang plugin ke lokasi yang tercantum di bawah ini.
Jika Anda perlu menginstal plugin secara manual, file yang relevan kemungkinan perlu masuk ke salah satu folder ini. Silakan periksa dokumentasi plugin terlebih dahulu.
Windows (semua pengguna)
C: \ Program Files \ Obs-Studio \ obs-plugins \ 64bit
(Legacy 32-bit plugin; OBS Studio 27..4 dan sebelum saja)C: \ Program Files \ Obs-Studio \ obs-plugins \ 32bit
Windows (pengguna tunggal)
%AppData%\ obs-studio \ obs-plugins
MacOS
Linux
~/.config/obs-studio/plugin
Linux
(Flatpak)Pasang plugin menggunakan flatpak
Jika Anda menginstal OBS Studio ke lokasi khusus atau menggunakan mode portabel, Anda perlu mengubah folder target penginstal ke lokasi khusus Anda data/plugin .
Daftar isi
- LIBOBS/OBS.. File ini secara otomatis menyertakan file berikut: