प्लगइन्स – ओबीएस स्टूडियो 29.1.3 प्रलेखन, प्लगइन्स गाइड | ओ बीएस

प्लगइन्स गाइड

लिनक्स
(फ्लैटपैक)

प्लगइन्स 

प्लगइन मॉड्यूल के माध्यम से लगभग सभी कस्टम कार्यक्षमता जोड़ी जाती है, जो आमतौर पर गतिशील पुस्तकालय या स्क्रिप्ट होती हैं. ऑडियो/वीडियो को कैप्चर करने और/या आउटपुट करने की क्षमता, एक रिकॉर्डिंग, एक RTMP स्ट्रीम के लिए आउटपुट, X264 में एनकोड करें सभी चीजों के उदाहरण हैं जो प्लगइन मॉड्यूल के माध्यम से पूरा किया जाता है.

प्लगइन्स स्रोतों, आउटपुट, एनकोडर और सेवाओं को लागू कर सकते हैं.

अपना पहला प्लगइन लिखना? हम आपको शुरू करने के लिए एक बुनियादी टेम्पलेट प्लगइन प्रदान करते हैं.

प्लगइन मॉड्यूल हेडर्स

ये कुछ उल्लेखनीय हेडर हैं जो आमतौर पर प्लगइन्स द्वारा उपयोग किए जाते हैं:

  • libobs/अवलोकन-मॉड्यूल.एच – प्लगइन मॉड्यूल बनाने के लिए उपयोग किया जाने वाला प्राथमिक हेडर. इस फ़ाइल में स्वचालित रूप से निम्न फ़ाइलें शामिल हैं:
    • libobs/अवलोकन.एच – मुख्य लिबॉब हेडर. इस फ़ाइल में स्वचालित रूप से निम्न फ़ाइलें शामिल हैं:
      • libobs/अवलोकन-स्रोत.एच – प्लगइन मॉड्यूल में स्रोतों को लागू करने के लिए उपयोग किया जाता है
      • libobs/अवलोकन-आउटपुट.एच – प्लगइन मॉड्यूल में आउटपुट लागू करने के लिए उपयोग किया जाता है
      • libobs/obs-encoder.एच – प्लगइन मॉड्यूल में एन्कोडर्स को लागू करने के लिए उपयोग किया जाता है
      • libobs/obs- सेवा.एच – प्लगइन मॉड्यूल में सेवाओं को लागू करने के लिए उपयोग किया जाता है
      • libobs/obs-data.एच – libobs ऑब्जेक्ट्स के लिए सेटिंग्स के प्रबंधन के लिए उपयोग किया जाता है
      • libobs/अवलोकन-संपत्ति.एच – libobs ऑब्जेक्ट्स के लिए गुण उत्पन्न करने के लिए उपयोग किया जाता है
      • libobs/ग्राफिक्स/ग्राफिक्स.एच – ग्राफिक्स प्रतिपादन के लिए उपयोग किया जाता है

      सामान्य निर्देशिका संरचना और cmakelists.txt

      सामान्य तरीके से स्रोत फ़ाइलों का आयोजन किया जाता है, प्लगइन इनिशियलाइज़ेशन के लिए एक फ़ाइल है, और फिर प्रत्येक व्यक्तिगत ऑब्जेक्ट के लिए विशिष्ट फाइलें जो आप लागू कर रहे हैं. उदाहरण के लिए, यदि आप ‘माय-प्लगिन’ नामक एक प्लगइन बनाना चाहते थे, तो आपके पास मेरी-प्लगिन जैसा कुछ होगा.c जहां प्लगइन इनिशियलाइज़ेशन किया जाता है, मेरा-स्रोत.c एक कस्टम स्रोत की परिभाषा के लिए, मेरे-आउटपुट.c एक कस्टम आउटपुट की परिभाषा के लिए, आदि. (यह निश्चित रूप से एक नियम नहीं है)

      यह एक देशी प्लगइन मॉड्यूल के लिए एक सामान्य निर्देशिका संरचना का एक उदाहरण है:

      मेरा-लगाना//स्थान/एन-हम.आरं मेरा-लगाना/सीमेलिस्ट.TXT मेरा-लगाना/मेरा-लगाना.सी मेरा-लगाना/मेरा-स्रोत.सी मेरा-लगाना/मेरा-आउटपुट.सी मेरा-लगाना/मेरा-एनकोडर.सी मेरा-लगाना/मेरा-सेवा.सी 

      .TXT फ़ाइल इन फ़ाइलों से जुड़ी:

      # मेरे-प्लगिन/cmakelists.TXT प्रोजेक्ट (my-plugin) सेट (my-plugin_sources my-plugin.सी माय-सोर्स.c मेरे-आउटपुट.सी माय-एन्कोडर.c मेरी सेवा.ग) add_library (my-plugin मॉड्यूल $) target_link_libraries (my-plugin libobs) install_obs_plugin_with_data (my-plugin data)

      देशी प्लगइन इनिशियलाइज़ेशन

      एक देशी प्लगइन मॉड्यूल बनाने के लिए, आपको libobs/अवलोकन-मॉड्यूल को शामिल करना होगा.H हेडर, OBS_DECLARE_MODULE () मैक्रो का उपयोग करें, फिर फ़ंक्शन की एक परिभाषा बनाएं OBS_MODULE_LOAD () . आपके obs_module_load () फ़ंक्शन में, आप फिर अपने किसी भी कस्टम स्रोत, आउटपुट, एनकोडर या सेवाओं को पंजीकृत करते हैं. अधिक जानकारी के लिए मॉड्यूल एपीआई संदर्भ देखें.

      निम्नलिखित मेरे-प्लगिन का एक उदाहरण है.सी, जो प्रत्येक प्रकार की एक वस्तु को पंजीकृत करेगा:

      /* मेरी-प्लगिन.सी */ #शामिल करना / * सामान्य कार्यों को परिभाषित करता है (आवश्यक) */ Obs_declare_module() / * आम INI- आधारित लोकेल (वैकल्पिक) * को लागू करता है// Obs_module_use_default_locale("मेरे प्लगिन", "एन-यू") बाहरी struct obs_source_info my_source; /* मेरे-स्रोत में परिभाषित किया गया.सी */ बाहरी struct obs_output_info my_output; /* मेरे-आउटपुट में परिभाषित किया गया.सी */ बाहरी struct obs_encoder_info my_encoder; /* मेरे-एन्कोडर में परिभाषित किया गया.सी */ बाहरी struct obs_service_info my_service; /* मेरी सेवा में परिभाषित किया गया.सी */ बूल obs_module_load(खालीपन)  obs_register_sourceऔरmy_source); obs_register_output(औरmy_output); (औरmy_encoder); obs_register_service(औरmy_service); वापस करना सत्य; > 

      स्रोत

      सूत्रों का उपयोग स्ट्रीम पर वीडियो और/या ऑडियो रेंडर करने के लिए किया जाता है. डिस्प्ले/गेम्स/ऑडियो को कैप्चर करने, वीडियो खेलने, छवि दिखाने या ऑडियो खेलने जैसी चीजें. सूत्रों का उपयोग ऑडियो और वीडियो फिल्टर के साथ -साथ संक्रमण को लागू करने के लिए भी किया जा सकता है. लिबॉब्स/ओब्स-सोर्स.एच फ़ाइल स्रोतों को लागू करने के लिए समर्पित हेडर है. अधिक जानकारी के लिए स्रोत API संदर्भ (obs_source_t) देखें.

      उदाहरण के लिए, एक स्रोत ऑब्जेक्ट को लागू करने के लिए, आपको एक OBS_SOURCE_INFO संरचना को परिभाषित करने और अपने स्रोत से संबंधित जानकारी और कॉलबैक के साथ इसे भरने की आवश्यकता है:

      /* माय-सोर्स.सी */ . ] struct obs_source_info my_source  .पहचान = "my_source", .प्रकार = , .output_flags = Obs_source_video, .get_name = my_source_name, .बनाएं = my_source_create, .नष्ट करना = my_source_destroy, .अद्यतन = , .VIDEO_RENDER = my_source_render, .get_width  my_source_width, .get_height = my_source_height >; 

      फिर, मेरे-प्लगिन में.c, आप obs_register_source () को obs_module_load () में libobs के साथ स्रोत को पंजीकृत करने के लिए कॉल करेंगे.

      /* मेरी-प्लगिन.सी */ [. ] बाहरी struct obs_source_info my_source; /* मेरे-स्रोत में परिभाषित किया गया.सी */ बूल obs_module_load(खालीपन)  obs_register_source(औरmy_source); [. ] वापस करना सत्य; > 

      स्रोतों के कुछ सरल उदाहरण:

      • सिंक्रोनस वीडियो स्रोत: छवि स्रोत
      • एसिंक्रोनस वीडियो स्रोत: यादृच्छिक बनावट परीक्षण स्रोत
      • ऑडियो स्रोत: साइन वेव टेस्ट सोर्स
      • वीडियो फ़िल्टर: परीक्षण वीडियो फ़िल्टर
      • ऑडियो फ़िल्टर: लाभ ऑडियो फ़िल्टर

      आउटपुट

      आउटपुट वर्तमान में ऑडियो/वीडियो को आउटपुट करने की क्षमता की अनुमति देते हैं. . आउटपुट कच्चे डेटा प्राप्त कर सकते हैं या एन्कोडेड डेटा प्राप्त कर सकते हैं. Libobs/अवलोकन-आउटपुट.एच फ़ाइल आउटपुट को लागू करने के लिए समर्पित हेडर है. अधिक जानकारी के लिए आउटपुट एपीआई संदर्भ (OBS_OUTPUT_T) देखें.

      उदाहरण के लिए, एक आउटपुट ऑब्जेक्ट को लागू करने के लिए, आपको एक obs_output_info संरचना को परिभाषित करने और अपने आउटपुट से संबंधित जानकारी और कॉलबैक के साथ इसे भरने की आवश्यकता है:

      /* मेरे-आउटपुट.सी */ [. ] struct obs_output_info my_output  .पहचान = "my_output", .झंडे = Obs_output_av | Obs_output_encoded, .get_name = my_output_name, .बनाएं = my_output_create, .नष्ट करना = my_output_destroy, .शुरू = my_output_start, .रुकना = my_output_stop, .encoded_packet = my_output_data, .get_total_bytes = my_output_total_bytes, .encoded_video_codecs = "H264", .encoded_audio_codecs = "एएसी" >; 

      फिर, मेरे-प्लगिन में.c, आप obs_register_output () को obs_module_load () में LIBOBS के साथ आउटपुट दर्ज करने के लिए कॉल करेंगे.

      /* मेरी-प्लगिन.सी */ [. ] बाहरी struct obs_output_info my_output; /* मेरे-आउटपुट में परिभाषित किया गया. बूल obs_module_load(खालीपन)  obs_register_output(औरmy_output); [. ] वापस करना सत्य; > 

      आउटपुट के कुछ उदाहरण:

      • एन्कोडेड वीडियो/ऑडियो आउटपुट:
        • FLV आउटपुट
        • FFMPEG MUXER आउटपुट
        • RTMP स्ट्रीम आउटपुट
        • FFMPEG आउटपुट

        एनकोडर्सो

        एनकोडर वीडियो/ऑडियो एनकोडर के अवलोकन-विशिष्ट कार्यान्वयन हैं, जिनका उपयोग आउटपुट के साथ किया जाता है जो एन्कोडर्स का उपयोग करते हैं. X264, NVENC, QuickSync एनकोडर कार्यान्वयन के उदाहरण हैं. Libobs/अवलोकन-एन्कोडर.एच फ़ाइल एनकोडर को लागू करने के लिए समर्पित हेडर है. अधिक जानकारी के लिए एनकोडर एपीआई संदर्भ (obs_encoder_t) देखें.

        उदाहरण के लिए, एक एनकोडर ऑब्जेक्ट को लागू करने के लिए, आपको एक obs_encoder_info संरचना को परिभाषित करने और अपने एनकोडर से संबंधित जानकारी और कॉलबैक के साथ इसे भरने की आवश्यकता है:

        /* मेरे-एन्कोडर.सी */ [. ] struct obs_encoder_info my_encoder_encoder =  .पहचान = "my_encoder", .प्रकार  Obs_encoder_video, . = "H264", .get_name = my_encoder_name, .बनाएं = my_encoder_create, .नष्ट करना = my_encoder_destroy, .एन्कोड = my_encoder_encode, .अद्यतन = my_encoder_update, .get_extra_data = my_encoder_extra_data, .get_sei_data = my_encoder_sei, .get_video_info = my_encoder_video_info >; 

        फिर, मेरे-प्लगिन में.c, आप obs_register_encoder () को obs_module_load () में कॉल करेंगे () एन्कोडर को libobs के साथ पंजीकृत करने के लिए.

        /* मेरी-प्लगिन.सी */ . ] बाहरी struct  my_encoder; /* मेरे-एन्कोडर में परिभाषित किया गया.सी */ बूल obs_module_load(खालीपन)  obs_register_encoder(औरmy_encoder); [.  वापस करना सत्य;  

        महत्वपूर्ण लेख: एनकोडर सेटिंग्स में वर्तमान में कुछ अपेक्षित सामान्य सेटिंग मान हैं जिनमें एक विशिष्ट नामकरण सम्मेलन होना चाहिए:

        • “बिटरेट” – इस मान का उपयोग वीडियो और ऑडियो एनकोडर दोनों के लिए किया जाना चाहिए: बिटरेट, किलोबिट्स में.
        • “मूल्य नियंत्रण” – यह वीडियो एनकोडर के लिए उपयोग की जाने वाली एक सेटिंग है. यह आम तौर पर कम से कम “सीबीआर” दर नियंत्रण होने की उम्मीद है. अन्य सामान्य दर नियंत्रण “VBR”, “CQP” हैं.
        • “Keyint_sec” – वीडियो एनकोडर के लिए, सेकंड में, या निकटतम संभव सन्निकटन में कीफ्रेम अंतराल मान सेट करता है. (लेखक का नोट: यह फ्रेम में “कीट” होना चाहिए था.)

        एनकोडर के उदाहरण:

        • वीडियो एनकोडर:
          • X264 एनकोडर
          • FFMPEG NVENC ENCODER
          • क्विकसिंक एनकोडर
          • FFMPEG AAC/OPUS एनकोडर

          सेवाएँ

          सेवाएं स्ट्रीमिंग सेवाओं के कस्टम कार्यान्वयन हैं, जो उस स्ट्रीम के आउटपुट के साथ उपयोग की जाती हैं. उदाहरण के लिए, आपके पास ट्विच करने के लिए स्ट्रीमिंग के लिए एक कस्टम कार्यान्वयन हो सकता है, और YouTube के लिए एक और लॉग इन करने और अपने एपीआई का उपयोग करने की क्षमता की अनुमति देने के लिए जैसे कि आरटीएमपी सर्वर प्राप्त करने या चैनल को नियंत्रित करने के लिए अपने एपीआई का उपयोग करने के लिए. लिबॉब्स/ऑब्स-सर्विस.एच फ़ाइल सेवाओं को लागू करने के लिए समर्पित हेडर है. अधिक जानकारी के लिए सेवा एपीआई संदर्भ (obs_service_t) देखें.

          (लेखक का नोट: सेवा एपीआई इस लेखन के रूप में अधूरी है)

          उदाहरण के लिए, एक सेवा ऑब्जेक्ट को लागू करने के लिए, आपको एक obs_service_info संरचना को परिभाषित करने और अपनी सेवा से संबंधित जानकारी और कॉलबैक के साथ इसे भरने की आवश्यकता है:

          /* मेरी सेवा.सी */ [. ] struct  my_service_service =  .पहचान = "my_service", .get_name = my_service_name, .बनाएं = my_service_create, .नष्ट करना = my_service_destroy, .एन्कोड = my_service_encode, .अद्यतन = my_service_update, .get_url = my_service_url, .चाबी देना = my_service_key >; 

          फिर, मेरे-प्लगिन में.c, आप obs_register_service () को obs_module_load () में libobs के साथ सेवा पंजीकृत करने के लिए कॉल करेंगे.

          /* मेरी-प्लगिन.सी */ [. ] बाहरी struct obs_service_info my_service; /* मेरी सेवा में परिभाषित किया गया.सी */ बूल obs_module_load(खालीपन)  obs_register_serviceऔरmy_service); [. ] वापस करना सत्य; > 

          केवल दो मौजूदा सेवा ऑब्जेक्ट्स “सामान्य आरटीएमपी सेवाएं” और “कस्टम आरटीएमपी सेवा” ऑब्जेक्ट्स हैं जो प्लगइन्स/आरटीएमपी-सेवाओं में हैं

          सेटिंग

          सेटिंग्स (libobs/अवलोकन-डेटा देखें.ज) सेटिंग्स डेटा प्राप्त करने या सेट करने के लिए उपयोग किया जाता है, आमतौर पर लिबॉब ऑब्जेक्ट्स के साथ जुड़ा हुआ है, और फिर इसे सहेजा जा सकता है और JSON टेक्स्ट के माध्यम से लोड किया जा सकता है. अधिक जानकारी के लिए डेटा सेटिंग्स एपीआई संदर्भ (OBS_DATA_T) देखें.

          obs_data_t एक JSON ऑब्जेक्ट के बराबर है, जहां यह उप-वस्तुओं की एक स्ट्रिंग तालिका है, और obs_data_array_t इसी तरह की एक सरणी को स्टोर करने के लिए उपयोग किया जाता है obs_data_t ऑब्जेक्ट, JSON ARRAYS के समान (हालांकि काफी समान नहीं है).

          बनाने के लिए obs_data_t या ऑब्जेक्ट, आप obs_data_create () या obs_data_array_create () फ़ंक्शंस पर कॉल करेंगे. obs_data_t और obs_data_array_t ऑब्जेक्ट को संदर्भ गिना जाता है, इसलिए जब आप ऑब्जेक्ट के साथ समाप्त हो जाते हैं,. किसी भी समय obs_data_t या ऑब्जेक्ट को एक फ़ंक्शन द्वारा लौटा दिया जाता है, उनके संदर्भों को बढ़ाया जाता है, इसलिए आपको हर बार उन संदर्भों को जारी करना होगा.

          एक के लिए मान सेट करने के लिए obs_data_t ऑब्जेक्ट, आप निम्नलिखित कार्यों में से एक का उपयोग करेंगे:

          / * फ़ंक्शंस सेट करें */ निर्यात खालीपन obs_data_set_string(obs_data_t *डेटा, कॉन्स्ट लपेटना *नाम, कॉन्स्ट लपेटना *वैल); निर्यात खालीपन obs_data_set_int(obs_data_t *डेटा, कॉन्स्ट लपेटना *नाम, लंबा लंबा वैल); निर्यात खालीपन obs_data_set_double(obs_data_t *डेटा, कॉन्स्ट लपेटना *नाम, दोहरा वैल); निर्यात खालीपन obs_data_set_bool(obs_data_t *डेटा, कॉन्स्ट लपेटना *नाम, बूल वैल); निर्यात खालीपन obs_data_set_obj(obs_data_t *डेटा, कॉन्स्ट लपेटना *नाम, obs_data_t *ओबीजे); निर्यात खालीपन obs_data_set_array(obs_data_t *डेटा, कॉन्स्ट लपेटना नाम, obs_data_array_t *सरणी); 

          इसी तरह, एक मूल्य प्राप्त करने के लिए obs_data_t ऑब्जेक्ट, आप निम्नलिखित कार्यों में से एक का उपयोग करेंगे:

          / * कार्य प्राप्त करें */ निर्यात कॉन्स्ट लपेटना *obs_data_get_string(obs_data_t *डेटा, कॉन्स्ट लपेटना *नाम); निर्यात लंबा लंबा obs_data_get_int(obs_data_t *डेटा,  लपेटना *नाम); निर्यात दोहरा obs_data_get_double(obs_data_t *डेटा, कॉन्स्ट लपेटना *नाम); निर्यात बूल obs_data_get_bool(obs_data_t *डेटा, कॉन्स्ट लपेटना *नाम); निर्यात obs_data_t *obs_data_get_obj(obs_data_t *डेटा, कॉन्स्ट लपेटना *नाम); निर्यात obs_data_array_t *obs_data_get_array(obs_data_t *डेटा, कॉन्स्ट लपेटना *नाम); 

          ठेठ JSON डेटा ऑब्जेक्ट्स के विपरीत, obs_data_t ऑब्जेक्ट डिफ़ॉल्ट मान भी सेट कर सकता है. यह नियंत्रित करने की क्षमता को अनुमति देता है कि क्या लौटा दिया गया है यदि कोई मान एक विशिष्ट स्ट्रिंग को सौंपा गया है obs_data_t ऑब्जेक्ट जब उस डेटा को JSON स्ट्रिंग या JSON फ़ाइल से लोड किया जाता है. प्रत्येक libobs ऑब्जेक्ट में भी ए get_defaults कॉलबैक जो निर्माण पर ऑब्जेक्ट के लिए डिफ़ॉल्ट सेटिंग्स सेट करने की अनुमति देता है.

          ये फ़ंक्शन डिफ़ॉल्ट मानों को नियंत्रित करते हैं: इस प्रकार हैं:

          /* डिफ़ॉल्ट मान कार्य. * निर्यात खालीपन obs_data_set_default_string(obs_data_t *डेटा, कॉन्स्ट लपेटना नाम, कॉन्स्ट लपेटना *वैल); निर्यात खालीपन (obs_data_t *डेटा, कॉन्स्ट लपेटना *नाम, लंबा लंबा वैल); निर्यात खालीपन obs_data_set_default_double(obs_data_t *डेटा, कॉन्स्ट लपेटना *नाम, दोहरा ); निर्यात खालीपन obs_data_set_default_bool( *डेटा, कॉन्स्ट लपेटना *नाम, बूल वैल); निर्यात खालीपन obs_data_set_default_obj(obs_data_t *, कॉन्स्ट लपेटना *नाम, obs_data_t *ओबीजे); 

          गुण

          गुण (libobs/अवलोकन-संपत्ति देखें.ज) का उपयोग स्वचालित रूप से एक LIBOBS ऑब्जेक्ट के लिए सेटिंग्स को संशोधित करने के लिए उपयोगकर्ता इंटरफ़ेस उत्पन्न करने के लिए किया जाता है (यदि वांछित है). प्रत्येक libobs ऑब्जेक्ट में एक है get_properties कॉलबैक जो गुण उत्पन्न करने के लिए उपयोग किया जाता है. गुण API विशिष्ट गुणों को परिभाषित करता है जो ऑब्जेक्ट की सेटिंग्स से जुड़े होते हैं, और फ्रंट-एंड उन गुणों का उपयोग करता है जो उपयोगकर्ता को सेटिंग्स को संशोधित करने की अनुमति देने के लिए विजेट उत्पन्न करने के लिए हैं।. उदाहरण के लिए, यदि आपके पास एक बूलियन सेटिंग थी, तो आप उपयोगकर्ता को उस सेटिंग को बदलने में सक्षम होने की अनुमति देने के लिए obs_properties_add_bool () का उपयोग करेंगे।. अधिक जानकारी के लिए गुण API संदर्भ (obs_properties_t) देखें.

          इसका एक उदाहरण:

          स्थिर obs_properties_t *my_source_properties(खालीपन *डेटा)  obs_properties_t *पीपीटीएस = obs_properties_create(); obs_properties_add_bool(पीपीटीएस, "my_bool", ("मायबूल" UNUSED_PARAMETER(डेटा); वापस करना पीपीटीएस; > [. ] struct obs_source_info my_source  .get_properties = my_source_properties, [. ] >; 

          डेटा यदि ऑब्जेक्ट मौजूद है तो पैरामीटर ऑब्जेक्ट का डेटा है. आमतौर पर यह अप्रयुक्त है और यदि संभव हो तो शायद उपयोग नहीं किया जाना चाहिए. यह शून्य हो सकता है यदि गुणों को इसके साथ जुड़ी वस्तु के बिना पुनर्प्राप्त किया जाता है.

          क्या सेटिंग्स दिखाए गए हैं, इसके आधार पर गुणों को भी संशोधित किया जा सकता है. उदाहरण के लिए, आप कुछ गुणों को अक्षम या अदृश्य के रूप में चिह्नित कर सकते हैं, जो इस बात पर निर्भर करता है कि किसी विशेष सेटिंग को OBS_Property_set_modified_callback () फ़ंक्शन का उपयोग करने के लिए क्या सेट किया गया है.

          उदाहरण के लिए, यदि आप पाठ संपत्ति को छिपाने के लिए बूलियन प्रॉपर्टी ए चाहते थे तो बी:

          स्थिर बूल setting_a_modified(obs_properties_t *पीपीटीएस, obs_property_t पी,  *समायोजन)  बूल सक्रिय = obs_data_get_bool(समायोजन, "सेटिंग_ए"); पी = obs_properties_get(, "सेटिंग_ब"); obs_property_set_enabled(पी, सक्रिय /* प्रॉपर्टी विजेट्स को अपडेट करने के लिए सही वापसी करें, गलत अन्यथा */ वापस करना सत्य; > [. ] स्थिर obs_properties_t *my_source_properties(खालीपन *डेटा)  obs_properties_t *पीपीटीएस = obs_properties_create(); obs_property_t *; पी = obs_properties_add_bool(पीपीटीएस, "सेटिंग_ए", obs_module_text("सेटिंग" obs_property_set_modified_callback(पी, setting_a_modified); obs_properties_add_text(पीपीटीएस, "सेटिंग_ब", obs_module_text("सेटिंग"), Obs_text_default); वापस करना पीपीटीएस; > 

          स्थानीयकरण

          आमतौर पर, OBS स्टूडियो के साथ बंडल किए गए अधिकांश प्लगइन्स एक साधारण INI-File स्थानीयकरण विधि का उपयोग करेंगे, जहां प्रत्येक फ़ाइल एक अलग भाषा है. इस पद्धति का उपयोग करते समय, OBS_MODULE_USE_DEFAULT_LOCALE () मैक्रो का उपयोग किया जाता है जो प्लगइन के हिस्से पर कोई अतिरिक्त प्रयास के साथ स्वचालित रूप से लोड/लोकेल डेटा को नष्ट कर देगा।. तब obs_module_text () फ़ंक्शन (जो स्वचालित रूप से libobs/obs- मॉड्यूल द्वारा एक बाहरी के रूप में घोषित किया जाता है.एच) का उपयोग तब किया जाता है जब टेक्स्ट लुकअप की आवश्यकता होती है.

          लोकेल को लोड/नष्ट करने के लिए उपयोग किए जाने वाले मॉड्यूल में दो निर्यात हैं: OBS_MODULE_SET_LOCALE () निर्यात, और OBS_MODULE_FREE_LOCALE () निर्यात. . यदि आप अपने प्लगइन के लिए एक कस्टम लोकेल कार्यान्वयन को लागू करना चाहते हैं, तो आप OBS_MODULE_USE_DEFAULT_LOCALE () मैक्रो पर भरोसा करने के बजाय इन निर्यातों को obs_module_text () के साथ -साथ अपने आप को परिभाषित करना चाहते हैं।.

          © कॉपीराइट 2017-2023, लेन बेली.

          प्लगइन्स गाइड

          OBS स्टूडियो विभिन्न प्रकार के प्लगइन्स का समर्थन करता है जो नए प्रकार के स्रोत, फिल्टर और सुविधाएँ प्रदान करते हैं. कुछ प्लगइन्स भी ओबीएस स्टूडियो को कुछ प्रकार के हार्डवेयर के साथ संवाद करने की अनुमति देते हैं, जैसे कि एल्गाटो स्ट्रीम डेक.

          कुछ प्लगइन्स को लिनक्स उपयोगकर्ताओं को फ्लैथब के माध्यम से भी उपलब्ध कराया जाता है.

          अनुकूलता

          अधिकांश प्लगइन्स उन सभी प्लेटफार्मों पर उपयोग करने योग्य हैं जहां OBS स्टूडियो उपलब्ध है. हालाँकि, कुछ ऐसे मामले हैं जहां एक प्लगइन आपकी OBS स्टूडियो की कॉपी के साथ संगत नहीं हो सकता है:

          • प्लगइन केवल एक प्लेटफॉर्म पर उपलब्ध है (मैं).इ. विंडोज, मैकओएस नहीं)
          • प्लगइन एक ही वास्तुकला के लिए उपलब्ध नहीं है (मैं.इ. x86_64, ARM64 नहीं)
          • OBS स्टूडियो के संस्करण के लिए प्लगइन को अपडेट नहीं किया गया है जो आप उपयोग कर रहे हैं

          यह देखने के लिए कि OBS स्टूडियो 28 पर कौन से प्लेटफार्मों के लिए प्लगइन्स उपलब्ध हैं.0, OBS स्टूडियो 28 प्लगइन संगतता सूची देखें.

          प्लगइन्स को स्थापित या निकालें

          . सामान्य तौर पर, वे नीचे सूचीबद्ध स्थानों पर प्लगइन्स स्थापित करते हैं.

          यदि आपको मैन्युअल रूप से एक प्लगइन स्थापित करने की आवश्यकता है, तो प्रासंगिक फ़ाइलों को इन फ़ोल्डरों में जाने की आवश्यकता है. कृपया पहले प्लगइन के प्रलेखन की जाँच करें.

          खिड़कियाँ (सभी उपयोगकर्ता)

          खिड़कियाँ
          (विरासत 32-बिट प्लगइन्स; ओबीएस स्टूडियो 27.2.4 और केवल पहले)

          C: \ Program Files \ OBS-STUDIO \ OBS-PLUGINS \ 32bit

          खिड़कियाँ (एकल उपयोगकर्ता)

          %Appdata%\ obs-studio \ obs-plugins

          मैक ओएस

          ~/लाइब्रेरी/एप्लिकेशन सपोर्ट/ऑब्स-स्टूडियो/प्लगइन्स

          लिनक्स

          ~/.config/obs-studio/प्लगइन्स

          लिनक्स
          (फ्लैटपैक)

          फ्लैटपैक का उपयोग करके प्लगइन्स स्थापित करें

          यदि आप किसी कस्टम स्थान पर OBS स्टूडियो स्थापित करते हैं या पोर्टेबल मोड का उपयोग करते हैं, तो आपको इंस्टॉलर के लक्ष्य फ़ोल्डर को अपने कस्टम स्थान पर बदलना होगा डेटा/प्लगइन्स फ़ोल्डर.

          विषयसूची