.1.

Linux

插件

. 捕獲和/或輸出音頻/視頻,製作錄製,輸出到RTMP流的能力,x264中的編碼都是通過插件模塊完成的示例.

插件可以實現來源,輸出,編碼器和服務.

? .

插件模塊標頭

這些是插件常用的一些顯著標頭:

  • .H – 用於創建插件模塊的主要標題. 該文件自動包含以下文件:
    • libobs/obs..
      • libobs/obs-source.H – 用於在插件模塊中實現源
      • libobs/obs-uptut.H – 用於在插件模塊中實現輸出
      • libobs/obs-編碼器.
      • libobs/observice.H – 用於在插件模塊中實施服務
      • libobs/obs-data.H – 用於管理Libobs對象的設置
      • libobs/obs-properies.H – 用於生成libobs對象的屬性
      • libobs/圖形/圖形.

      .txt

      組織文件的常見方法是將一個文件進行插件初始化,然後為您實現的每個單獨對象的特定文件. 例如,如果您要創建一個稱為“ my-plugin”的插件,那麼您將有類似My-Plugin.C完成插件初始化,my-source.C用於定義自定義源,my-uptut.. (這當然不是規則)

      這是本機插件模塊的通用目錄結構的一個示例:

      我的-插入/數據/-我們. -插入/.TXT 我的-插入-. --. -/-. -我的-編碼器. 我的--服務. 

      .與這些文件關聯的TXT文件:

      #my-plugin/cmakelists.txt項目(my-plugin)集(my-plugin_sources my-plugin...c my-編碼器..

      . . 在您的obs_module_load()函數中,您可以註冊任何自定義資源,輸出,編碼器或服務. .

      以下是my-plugin的示例.

      .     obs_module_use_default_locale,   結構   .    my_output .C */    ; .C */ 外部 結構   /*在我服務中定義.C */ 布爾   obs_register_source((my_source obs_register_output(();  ((  ;  

      來源用於在流上渲染視頻和/或音頻. 諸如捕獲顯示/遊戲/音頻,播放視頻,顯示圖像或播放音頻之類的內容. . libobs/obs-source.. .

      .C */ [. 這是給出的   my_source  .ID = “ my_source”, .  , . = , . = my_source_name, .  my_source_create, . = , .  my_source_update, . = , .  , .    

      ..

      /* my-plugin.C */ .   結構 obs_source_info ; /*在my-Source中定義. 布爾 ((  obs_register_source [.   真的 > 

      • 同步視頻來源:圖像源
      • 視頻過濾器:測試視頻過濾器

      . 流和記錄是輸出的兩個常見示例,但不是唯一的輸出類型. . libobs/obs-uptut.. .

      . .  結構 obs_output_info   .  “ my_output”, .  obs_output_av | , .get_name = my_output_name, .  , .  , . = , .  , .ENCODED_PACKET  , . = , .  , .    

      ..

      . . 這是給出的    my_output .  ((空白  ((my_output); . 這是給出的  真的;  

        • RTMP流輸出
        • FFMPEG輸出

        編碼器

        編碼器是視頻/音頻編碼器的特定於OBS的實現,它們與使用編碼器的輸出一起使用. x264,nvenc,quicksync是編碼器實現的示例. libobs/obs-編碼器.H文件是用於實現編碼器的專用標題. .

        . . 這是給出的      .  , . = obs_encoder_video, .  , .  , .  my_encoder_create, . = my_encoder_destroy, .編碼  , .更新 = my_encoder_update, .  my_encoder_extra_data, .  my_encoder_sei, .get_video_info =  >; 

        ..

        .C */ . 這是給出的 外部 結構 obs_encoder_info  . 布爾 ((空白  obs_register_encoder .   真的; > 

        重要的提示:

        • “比特率” – 該值應用於視頻和音頻編碼器:比特率,千倍.
        • – 這是用於視頻編碼器的設置. 通常,它至少具有“ CBR”率控制. 其他常見的費率控制是“ VBR”,“ CQP”.
        • “ keyint_sec” – . (作者註:這應該是“鍵入”的框架.

        編碼器的示例:

        • 視頻編碼器:
          • X264編碼器
          • QuickSync編碼器
          • FFMPEG AAC/OPUS編碼器

          服務

          . . .H文件是實施服務的專用標題. 有關更多信息,請參見服務API參考(obs_service_t).

          (作者註:撰寫本文時,服務API是不完整的)

          /*我的服務.C */ . 這是給出的 結構     . = , .  my_service_name, .創造  , .破壞  , . = , .  my_service_update, .  , . = my_service_key >; 

          ..

          . .     ; .  ((   .     

          .. .

          .

          創建一個 obs_data_t obs_data_array_t 對象,您要調用obs_data_create()或obs_data_array_create()functions. obs_data_t . 或者 .

             (( 數據, const  姓名,  char  出口   *,  char ,   瓦爾 出口  obs_data_set_double(( *數據, const  姓名,  );  空白 obs_data_set_boolobs_data_t *數據, const  姓名, 布爾 );   obs_data_set_objobs_data_t *,  char 姓名,   出口  obs_data_set_array(( *, const  ,  *); 

          同樣,要從 obs_data_t

          / *獲得功能 */    *(( , const       ,    出口  obs_data_t 數據,  char   布爾 obs_data_t *數據,  char * 出口  obs_data_get_obj *數據, const  * 出口 obs_data_array_t obs_data_get_array ,    

          obs_data_t 對像還可以設置默認值. . .

          這些函數控制默認值如下:

          /*默認值函數.  出口   數據,   , const  瓦爾   obs_data_set_default_int 數據,   *姓名,    出口  obs_data_set_default_double , const  *姓名,  瓦爾   obs_data_set_default_bool((obs_data_t , const  *姓名, 布爾  出口  obs_data_set_default_obj 數據,  char , obs_data_t  

          .h)用於自動生成用戶界面以修改libobs對象的設置(如果需要). get_properties 用於生成屬性的回調. . . .

          靜止的  *my_source_properties(( *  obs_properties_t *PPT  obs_properties_create , , “ Mybool” UNUSED_PARAMETER數據 返回 PPT  [.      .get_properties = my_source_properties, . 這是給出的  

          . . .

          . .

           布爾 setter_a_modified(( PPT,  p, obs_data_t *設定  布爾   ,  p  obs_properties_get((PPT,  obs_property_set_enabled((, 啟用); /*返回tre tre以更新屬性小部件,false   真的  .  靜止的 obs_properties_t my_source_properties   obs_properties_t *  obs_properties_create obs_property_t * p  obs_properties_add_bool((PPT, , obs_module_text); ((,  , , "設定"), obs_text_default);  ;  

          通常,大多數與obs Studio捆綁在一起的插件將使用一個簡單的INI文件本地化方法,其中每個文件都是不同的語言. 使用此方法時,使用obs_module_use_default_locale()宏,它將自動加載/破壞語言環境數據,而不會在插件的一部分上付出額外的努力. 然後obs_module_text()函數(該函數自動將其聲明為libobs/obs-module..

          有兩個導出用於加載/破壞語言環境的模塊:obs_module_set_locale()導出,obs_module_free_locale()導出. . 如果您想為插件實現自定義的環境實現,則需要與obs_module_text()外部定義這些導出,而不是依靠obs_module_use_default_locale()宏.

          .

          插件指南

          . 某些插件還允許Obs Studio與某些類型的硬件進行通信,例如Elgato Stream Deck.

          .

          相容性

          大多數插件都可以在可用的所有平台上使用.

          • ..
          • ..
          • 該插件尚未更新用於您正在使用的obs Studio版本

          要查看哪些插件可用於obs Studio 28上的哪些平台..

          安裝或刪除插件

          . .

          . .

          視窗

          C:\ Program Files \ obs-Studio \ obs-Plugins \ 64bit


          (傳統32位插件; obs Studio 27..

          C:\ Program Files \ obs-Studio \ obs-Plugins \ 32bit

          視窗 (單用戶)

          蘋果系統

          Linux

          〜/.


          使用Flatpak安裝插件

          .