Plugins – OBS Studio 29.1.3 Tài liệu, Hướng dẫn plugin | OBS

Hướng dẫn plugin

Linux
(Flatpak)

Plugins

Hầu như tất cả các chức năng tùy chỉnh được thêm vào thông qua các mô -đun plugin, thường là các thư viện động hoặc tập lệnh. Khả năng chụp và/hoặc xuất âm thanh/video, tạo bản ghi, xuất vào luồng RTMP, mã hóa trong x264 đều là những ví dụ về những điều được thực hiện thông qua các mô -đun plugin.

Plugin có thể triển khai các nguồn, đầu ra, bộ mã hóa và dịch vụ.

Viết plugin đầu tiên của bạn? Chúng tôi cung cấp một plugin mẫu cơ bản để giúp bạn bắt đầu.

Tiêu đề mô -đun plugin

Đây là một số tiêu đề đáng chú ý thường được sử dụng bởi các plugin:

  • libobs/mô-đun quan sát.H – Tiêu đề chính được sử dụng để tạo các mô -đun plugin. Tệp này tự động bao gồm các tệp sau:
    • libobs/obs.H – Tiêu đề Libobs chính. Tệp này tự động bao gồm các tệp sau:
      • libobs/nguồn quan sát.H – Được sử dụng để triển khai các nguồn trong các mô -đun plugin
      • libobs/obs-putput.H – Được sử dụng để thực hiện đầu ra trong các mô -đun plugin
      • libobs/obs-reCoder.H – Được sử dụng để triển khai bộ mã hóa trong các mô -đun plugin
      • libobs/dịch vụ quan sát.H – Được sử dụng để triển khai các dịch vụ trong các mô -đun plugin
      • libobs/obrata.H – Được sử dụng để quản lý cài đặt cho các đối tượng Libobs
      • libobs/quan sát.H – Được sử dụng để tạo thuộc tính cho các đối tượng Libobs
      • libobs/đồ họa/đồ họa.H – Được sử dụng để kết xuất đồ họa

      Cấu trúc thư mục phổ biến và CMAKELIST.txt

      Các tệp nguồn thông thường được tổ chức là có một tệp để khởi tạo plugin và sau đó các tệp cụ thể cho từng đối tượng mà bạn đang triển khai. Ví dụ: nếu bạn đã tạo một plugin có tên ‘My-plugin, thì bạn sẽ có một cái gì đó giống như tôi-plugin.c Khi hoàn thành khởi tạo plugin, nguồn của tôi.c Đối với định nghĩa của một nguồn tùy chỉnh, đầu ra của tôi.c cho định nghĩa của đầu ra tùy chỉnh, v.v. (Tất nhiên đây không phải là một quy tắc)

      Đây là một ví dụ về cấu trúc thư mục chung cho mô -đun plugin gốc:

      Của tôi-cắm vào/dữ liệu/địa phương/en-CHÚNG TA.ini Của tôi-cắm vào/Cmakelists.TXT Của tôi-cắm vào/Của tôi-cắm vào.c Của tôi-cắm vào/Của tôi-nguồn.c Của tôi-cắm vào/Của tôi-đầu ra.c Của tôi-cắm vào/Của tôi-mã hoá.c Của tôi-cắm vào/Của tôi-dịch vụ.c 

      Đây sẽ là một ví dụ về những người theo chủ nghĩa cmakels thông thường.Tệp TXT được liên kết với các tệp này:

      # My-plugin/cmakelists.Dự án TXT (My-plugin) Set (My-plugin_source My-plugin.C-nguồn của tôi.c đầu ra của tôi.c của tôi-mã hóa.c dịch vụ của tôi.c) add_l Library (mô-đun My-plugin $) Target_Link_L Libries (My-Plugin Libobs) install_OBS_PLUGIN_WITH_DATA (dữ liệu My-Plugin)

      Khởi tạo plugin gốc

      Để tạo mô-đun plugin gốc, bạn sẽ cần bao gồm các mô-đun Libobs/OBS.h tiêu đề, sử dụng macro obs_declare_module (), sau đó tạo định nghĩa của hàm obs_module_load () . Trong hàm obs_module_load () của bạn, sau đó bạn đăng ký bất kỳ nguồn, đầu ra, bộ mã hóa hoặc dịch vụ tùy chỉnh nào của mình. Xem tham chiếu API mô -đun để biết thêm thông tin.

      Sau đây là một ví dụ về plugin của tôi.C, sẽ đăng ký một đối tượng của từng loại:

      /* My-plugin.c */ #bao gồm / * Xác định các chức năng chung (bắt buộc) */ OBS_DECLARE_MODULE() / * Thực hiện địa phương dựa trên Ini (tùy chọn) */// Obs_module_use_default_locale"My-plugin", "En-us") Extern cấu trúc obs_source_info My_Source; /* Được xác định trong nguồn của tôi.c */ Extern cấu trúc obs_output_info my_output; /* Được xác định trong đầu ra của tôi.c */ Extern cấu trúc obs_encoder_info my_encoder; /* Được xác định trong bộ mã hóa của tôi.c */ Extern cấu trúc obs_service_info my_service; /* Được xác định trong dịch vụ của tôi.c */ bool OBS_MODULE_LOADVô hiệu)  OBS_REGISTER_SOURCEKhông có giá trịMy_Source); OBS_REGISTER_OUTPUTKhông có giá trịmy_output); OBS_REGISTER_ENCODERKhông có giá trịmy_encoder); obs_register_serviceKhông có giá trịmy_service); trở lại ĐÚNG VẬY; > 

      Nguồn

      Các nguồn được sử dụng để hiển thị video và/hoặc âm thanh trên luồng. Những thứ như chụp màn hình/trò chơi/âm thanh, phát video, hiển thị hình ảnh hoặc phát âm thanh. Các nguồn cũng có thể được sử dụng để triển khai các bộ lọc âm thanh và video cũng như chuyển tiếp. Libobs/OBS nguồn.H tệp là tiêu đề chuyên dụng để triển khai các nguồn. Xem tham chiếu API nguồn (obs_source_t) để biết thêm thông tin.

      Ví dụ: để thực hiện một đối tượng nguồn, bạn cần xác định cấu trúc obs_source_info và điền vào thông tin và cuộc gọi lại liên quan đến nguồn của bạn:

      /* nguồn của tôi.c */ [. ] cấu trúc obs_source_info My_Source  .nhận dạng = "My_Source", .kiểu = Obs_source_type_input, .output_flags = Obs_source_video, .get_name = my_source_name, .tạo nên = my_source_create, .hủy hoại = My_Source_Destroy, .cập nhật = my_source_update, .Video_Render = My_Source_Render, .get_width = my_source_width, .get_height = My_Source_Height >; 

      Sau đó, trong plugin của tôi.C, bạn sẽ gọi obs_register_source () trong obs_module_load () để đăng ký nguồn bằng libobs.

      /* My-plugin.c */ [. ] Extern cấu trúc obs_source_info My_Source; /* Được xác định trong nguồn của tôi.c */ bool OBS_MODULE_LOADVô hiệu)  OBS_REGISTER_SOURCEKhông có giá trịMy_Source); [. ] trở lại ĐÚNG VẬY; > 

      Một số ví dụ đơn giản về các nguồn:

      • Nguồn video đồng bộ: Nguồn hình ảnh
      • Nguồn video không đồng bộ: Nguồn kiểm tra kết cấu ngẫu nhiên
      • Nguồn âm thanh: Nguồn kiểm tra sóng hình sin
      • Bộ lọc video: Bộ lọc video thử nghiệm
      • Bộ lọc âm thanh: Bộ lọc âm thanh tăng

      Đầu ra

      Đầu ra cho phép khả năng xuất ra âm thanh/video hiện đang kết xuất. Truyền phát và ghi là hai ví dụ phổ biến về đầu ra, nhưng không phải là loại đầu ra duy nhất. Đầu ra có thể nhận dữ liệu thô hoặc nhận dữ liệu được mã hóa. Libobs/OB-Out.H Tệp là tiêu đề chuyên dụng để thực hiện đầu ra. Xem tham chiếu API đầu ra (obs_output_t) để biết thêm thông tin.

      Ví dụ: để thực hiện một đối tượng đầu ra, bạn cần xác định cấu trúc obs_output_info và điền vào thông tin và cuộc gọi lại liên quan đến đầu ra của bạn:

      /* đầu ra của tôi.c */ [. ] cấu trúc obs_output_info my_output  .nhận dạng = "my_output", .cờ = Obs_output_av | Obs_output_encoded, .get_name = my_output_name, .tạo nên = my_output_create, .hủy hoại = my_output_destroy, .bắt đầu = my_output_start, .dừng lại = my_output_stop, .Đã mã hóa_packet = my_output_data, .get_total_bytes = my_output_total_bytes, .Đã mã hóa_video_codecs = "H264", .Đã mã hóa_AUDIO_CODECS = "AAC" >; 

      Sau đó, trong plugin của tôi.C, bạn sẽ gọi obs_register_output () trong obs_module_load () để đăng ký đầu ra bằng libobs.

      /* My-plugin.c */ [. ] Extern cấu trúc obs_output_info my_output; /* Được xác định trong đầu ra của tôi.c */ bool OBS_MODULE_LOADVô hiệu)  OBS_REGISTER_OUTPUTKhông có giá trịmy_output); [. ] trở lại ĐÚNG VẬY; > 

      Một số ví dụ về đầu ra:

      • Đầu ra video/âm thanh được mã hóa:
        • Đầu ra FLV
        • Đầu ra của FFMPEG
        • Đầu ra luồng RTMP
        • Đầu ra FFMPEG

        Bộ mã hóa

        Bộ mã hóa là các triển khai cụ thể của bộ mã hóa video/âm thanh, được sử dụng với đầu ra sử dụng bộ mã hóa. x264, NVENC, QuickSync là những ví dụ về triển khai bộ mã hóa. Libobs/obs-rector.H tệp là tiêu đề chuyên dụng để triển khai bộ mã hóa. Xem tham chiếu API của bộ mã hóa (obs_encoder_t) để biết thêm thông tin.

        Ví dụ: để thực hiện một đối tượng bộ mã hóa, bạn cần xác định cấu trúc obs_encoder_info và điền vào nó với thông tin và cuộc gọi lại liên quan đến bộ mã hóa của bạn:

        /* Bộ mã hóa của tôi.c */ [. ] cấu trúc obs_encoder_info my_encoder_encoder =  .nhận dạng = "My_encoder", .kiểu = Obs_encoder_video, .codec = "H264", .get_name = my_encoder_name, .tạo nên = my_encoder_create, .hủy hoại = my_encoder_destroy, .mã hóa = my_encoder_encode, .cập nhật = my_encoder_update, .get_extra_data = my_encoder_extra_data, .get_sei_data = my_encoder_sei, .get_video_info = my_encoder_video_info >; 

        Sau đó, trong plugin của tôi.C, bạn sẽ gọi obs_register_encoder () trong obs_module_load () để đăng ký bộ mã hóa bằng libobs.

        /* My-plugin.c */ [. ] Extern cấu trúc obs_encoder_info my_encoder; /* Được xác định trong bộ mã hóa của tôi.c */ bool OBS_MODULE_LOADVô hiệu)  OBS_REGISTER_ENCODERKhông có giá trịmy_encoder); [. ] trở lại ĐÚNG VẬY; > 

        LƯU Ý QUAN TRỌNG: Cài đặt bộ mã hóa hiện có một vài giá trị cài đặt phổ biến dự kiến ​​sẽ có quy ước đặt tên cụ thể:

        • “Bitrate” – Giá trị này nên được sử dụng cho cả bộ mã hóa video và âm thanh: bitrate, tính bằng kilobit.
        • “Rate_control” – Đây là một cài đặt được sử dụng cho bộ mã hóa video. Nó nói chung được dự kiến ​​sẽ có ít nhất một quyền kiểm soát tỷ lệ của CBR. Các điều khiển tỷ lệ phổ biến khác là VBR VBR, CQP.
        • “Keyint_sec” – Đối với bộ mã hóa video, đặt giá trị khoảng thời gian khóa, tính bằng giây hoặc gần đúng nhất có thể. (Tác giả Lưu ý: Điều này đáng lẽ phải là Key Key.)

        Ví dụ về bộ mã hóa:

        • Bộ mã hóa video:
          • Bộ mã hóa X264
          • Bộ mã hóa FFMPEG NVENC
          • Bộ mã hóa QuickSync
          • Bộ mã hóa FFMPEG AAC/Opus

          Dịch vụ

          Các dịch vụ là việc triển khai tùy chỉnh các dịch vụ phát trực tuyến, được sử dụng với các đầu ra phát trực tuyến. Ví dụ: bạn có thể có một triển khai tùy chỉnh để phát trực tuyến để Twitch và một cách khác cho YouTube để cho phép khả năng đăng nhập và sử dụng API của chúng để làm những việc như lấy máy chủ RTMP hoặc điều khiển kênh. Libobs/obs-dervice.H Tệp là tiêu đề chuyên dụng để thực hiện các dịch vụ. Xem tham chiếu API dịch vụ (obs_service_t) để biết thêm thông tin.

          (Tác giả Lưu ý: API dịch vụ không đầy đủ khi viết bài này)

          Ví dụ: để thực hiện một đối tượng dịch vụ, bạn cần xác định cấu trúc obs_service_info và điền vào thông tin và cuộc gọi lại liên quan đến dịch vụ của bạn:

          /* Dịch vụ của tôi.c */ [. ] cấu trúc obs_service_info my_service_service =  .nhận dạng = "my_service", .get_name = my_service_name, .tạo nên = my_service_create, .hủy hoại = my_service_destroy, .mã hóa = my_service_encode, .cập nhật = my_service_update, .get_url = my_service_url, .get_key = my_service_key >; 

          Sau đó, trong plugin của tôi.C, bạn sẽ gọi obs_register_service () trong obs_module_load () để đăng ký dịch vụ bằng libobs.

          /* My-plugin.c */ [. ] Extern cấu trúc obs_service_info my_service; /* Được xác định trong dịch vụ của tôi.c */ bool OBS_MODULE_LOADVô hiệu)  obs_register_serviceKhông có giá trịmy_service); [. ] trở lại ĐÚNG VẬY; > 

          Hai đối tượng dịch vụ hiện có là các dịch vụ RTMP phổ biến của RTMP và các đối tượng dịch vụ RTMP tùy chỉnh trong các plugin/rtmp-service

          Cài đặt

          Cài đặt (xem libobs/obs-data.h) được sử dụng để lấy hoặc đặt dữ liệu cài đặt thường được liên kết với các đối tượng libobs và sau đó có thể được lưu và tải qua văn bản JSON. Xem Tài liệu tham khảo API Cài đặt dữ liệu (OBS_DATA_T) để biết thêm thông tin.

          Các OBS_DATA_T là tương đương với một đối tượng JSON, trong đó nó là một bảng chuỗi các đối tượng phụ và obs_data_array_t được sử dụng tương tự để lưu trữ một mảng OBS_DATA_T các đối tượng, tương tự như mảng json (mặc dù không hoàn toàn giống nhau).

          Để tạo một OBS_DATA_T hoặc obs_data_array_t Đối tượng, bạn đã gọi các hàm obs_data_create () hoặc obs_data_array_create (). OBS_DATA_Tobs_data_array_t Các đối tượng được tính tham chiếu, vì vậy khi bạn kết thúc với đối tượng, hãy gọi obs_data_release () hoặc obs_data_array_release () để phát hành các tham chiếu đó. Bất cứ lúc nào an OBS_DATA_T hoặc obs_data_array_t Đối tượng được trả về bởi một hàm, các tài liệu tham khảo của chúng được tăng lên, vì vậy bạn phải phát hành các tài liệu tham khảo mỗi lần.

          Để đặt giá trị cho một OBS_DATA_T Đối tượng, bạn đã sử dụng một trong các chức năng sau:

          / * Đặt chức năng */ XUẤT KHẨU Vô hiệu OBS_DATA_SET_STRINGOBS_DATA_T *dữ liệu, hằng số char *tên, hằng số char *val); XUẤT KHẨU Vô hiệu OBS_DATA_SET_INTOBS_DATA_T *dữ liệu, hằng số char *tên, dài dài val); XUẤT KHẨU Vô hiệu obs_data_set_doubleOBS_DATA_T *dữ liệu, hằng số char *tên, gấp đôi val); XUẤT KHẨU Vô hiệu obs_data_set_boolOBS_DATA_T *dữ liệu, hằng số char *tên, bool val); XUẤT KHẨU Vô hiệu obs_data_set_objOBS_DATA_T *dữ liệu, hằng số char *tên, OBS_DATA_T *obj); XUẤT KHẨU Vô hiệu obs_data_set_arrayOBS_DATA_T *dữ liệu, hằng số char *tên, obs_data_array_t *mảng); 

          Tương tự, để nhận được một giá trị từ một OBS_DATA_T Đối tượng, bạn đã sử dụng một trong các chức năng sau:

          / * Nhận các chức năng */ XUẤT KHẨU hằng số char *OBS_DATA_GET_STRINGOBS_DATA_T *dữ liệu, hằng số char *tên); XUẤT KHẨU dài dài obs_data_get_intOBS_DATA_T *dữ liệu, hằng số char *tên); XUẤT KHẨU gấp đôi obs_data_get_doubleOBS_DATA_T *dữ liệu, hằng số char *tên); XUẤT KHẨU bool obs_data_get_boolOBS_DATA_T *dữ liệu, hằng số char *tên); XUẤT KHẨU OBS_DATA_T *obs_data_get_objOBS_DATA_T *dữ liệu, hằng số char *tên); XUẤT KHẨU obs_data_array_t *obs_data_get_arrayOBS_DATA_T *dữ liệu, hằng số char *tên); 

          Không giống như các đối tượng dữ liệu JSON điển hình, OBS_DATA_T Đối tượng cũng có thể đặt các giá trị mặc định. Điều này cho phép khả năng kiểm soát những gì được trả lại nếu không có giá trị được gán cho một chuỗi cụ thể trong một OBS_DATA_T Đối tượng khi dữ liệu đó được tải từ tệp JSON hoặc tệp JSON. Mỗi đối tượng Libobs cũng có một get_defaults Callback cho phép cài đặt cài đặt mặc định cho đối tượng khi tạo.

          Các chức năng này kiểm soát các giá trị mặc định như sau:

          /* Chức năng giá trị mặc định. */ XUẤT KHẨU Vô hiệu OBS_DATA_SET_DEFAULT_STRINGOBS_DATA_T *dữ liệu, hằng số char *tên, hằng số char *val); XUẤT KHẨU Vô hiệu obs_data_set_default_intOBS_DATA_T *dữ liệu, hằng số char *tên, dài dài val); XUẤT KHẨU Vô hiệu obs_data_set_default_doubleOBS_DATA_T *dữ liệu, hằng số char *tên, gấp đôi val); XUẤT KHẨU Vô hiệu obs_data_set_default_boolOBS_DATA_T *dữ liệu, hằng số char *tên, bool val); XUẤT KHẨU Vô hiệu obs_data_set_default_objOBS_DATA_T *dữ liệu, hằng số char *tên, OBS_DATA_T *obj); 

          Thuộc tính

          Thuộc tính (xem libobs/obs-properies.h) được sử dụng để tự động tạo giao diện người dùng để sửa đổi cài đặt cho đối tượng libobs (nếu muốn). Mỗi đối tượng libobs có một get_properies gọi lại được sử dụng để tạo các thuộc tính. API thuộc tính xác định các thuộc tính cụ thể được liên kết với cài đặt đối tượng và phần đầu sử dụng các thuộc tính đó để tạo các tiện ích để cho phép người dùng sửa đổi cài đặt. Ví dụ: nếu bạn có cài đặt boolean, bạn sẽ sử dụng obs_properies_add_bool () để cho phép người dùng có thể thay đổi cài đặt đó. Xem tham chiếu API thuộc tính (obs_properies_t) để biết thêm thông tin.

          Một ví dụ về điều này:

          tĩnh OBS_PROPERTIES_T *My_Source_ProperiesVô hiệu *dữ liệu)  OBS_PROPERTIES_T *ppts = obs_properies_create(); obs_properies_add_boolppts, "My_bool", OBS_MODULE_TEXT"Mybool")); UNUSED_PARAMETERdữ liệu); trở lại ppts; > [. ] cấu trúc obs_source_info My_Source  .get_properies = My_Source_Properies, [. ] >; 

          Các dữ liệu tham số là dữ liệu đối tượng nếu đối tượng có mặt. Thông thường, điều này không được sử dụng và có lẽ không nên được sử dụng nếu có thể. Nó có thể là vô hiệu nếu các thuộc tính được truy xuất mà không có đối tượng được liên kết với nó.

          Thuộc tính cũng có thể được sửa đổi tùy thuộc vào cài đặt nào được hiển thị. Ví dụ: bạn có thể đánh dấu một số thuộc tính nhất định là bị vô hiệu hóa hoặc vô hình tùy thuộc vào những gì một cài đặt cụ thể được đặt để sử dụng chức năng obs_property_set_modified_callback ().

          Ví dụ: nếu bạn muốn thuộc tính Boolean A để ẩn thuộc tính B:

          tĩnh bool Cài đặt_A_ModifiedOBS_PROPERTIES_T *ppts, OBS_PROPERTY_T *P, OBS_DATA_T *Cài đặt)  bool Đã bật = obs_data_get_boolCài đặt, "Cài đặt_A"); P = obs_properies_getppts, "Cài đặt_B"); obs_property_set_enablesP, Đã bật); /* Trả về đúng để cập nhật các widget thuộc tính, sai nếu không thì */ trở lại ĐÚNG VẬY; > [. ] tĩnh OBS_PROPERTIES_T *My_Source_ProperiesVô hiệu *dữ liệu)  OBS_PROPERTIES_T *ppts = obs_properies_create(); OBS_PROPERTY_T *P; P = obs_properies_add_boolppts, "Cài đặt_A", OBS_MODULE_TEXT"Cài đặt")); obs_property_set_modified_callbackP, Cài đặt_A_Modified); obs_properies_add_textppts, "Cài đặt_B", OBS_MODULE_TEXT"Cài đặt"), OBS_TEXT_DEFAULT); trở lại ppts; > 

          Bản địa hóa

          Thông thường, hầu hết các plugin đi kèm với OBS Studio sẽ sử dụng phương pháp định vị tệp đơn giản, trong đó mỗi tệp là một ngôn ngữ khác nhau. Khi sử dụng phương pháp này, macro obs_module_use_default_locale () được sử dụng sẽ tự động tải/phá hủy dữ liệu locale mà không cần nỗ lực thêm trên một phần của plugin. Sau đó, hàm obs_module_text () (được tự động khai báo dưới dạng extern bởi libobs/obs-module.h) được sử dụng khi tra cứu văn bản là cần.

          Có hai lần xuất khẩu mô -đun được sử dụng để tải/tiêu diệt Locale: OBS_MODULE_SET_LOCALE () Xuất. Xuất khẩu obs_module_set_locale () được gọi bởi libobs để đặt ngôn ngữ hiện tại, và sau đó xuất khẩu obs_module_free_locale () được gọi bằng libobs khi phá hủy mô -đun. Nếu bạn muốn triển khai triển khai địa phương tùy chỉnh cho plugin của mình, bạn sẽ muốn xác định các xuất xuất này cùng với obs_module_text () bên ngoài thay vì dựa vào macro obs_module_use_default_locale ().

          © Bản quyền 2017-2023, Lain Bailey.

          Hướng dẫn plugin

          OBS Studio hỗ trợ nhiều loại plugin cung cấp các loại nguồn, bộ lọc và tính năng mới. Một số plugin cũng cho phép OBS Studio giao tiếp với các loại phần cứng nhất định, chẳng hạn như.

          Một số plugin cũng được cung cấp cho người dùng Linux thông qua Flathub.

          Khả năng tương thích

          Hầu hết các plugin được phát triển để có thể sử dụng trên tất cả các nền tảng nơi OBS Studio có sẵn. Tuy nhiên, có một số trường hợp một số plugin có thể không tương thích với bản sao của OBS Studio của bạn:

          • plugin chỉ có sẵn trên một nền tảng (tôi.e. Windows, không phải macOS)
          • plugin không có sẵn cho cùng một kiến ​​trúc (tôi.e. x86_64, không phải arm64)
          • plugin chưa được cập nhật cho phiên bản OBS Studio mà bạn đang sử dụng

          Để xem những plugin nào có sẵn cho những nền tảng nào trên OBS Studio 28.0, xem danh sách tương thích plugin OBS Studio 28.

          Cài đặt hoặc xóa các plugin

          Nhiều plugin phổ biến nhất của OBS Studio đi kèm với trình cài đặt. Nói chung, họ cài đặt các plugin vào các vị trí được liệt kê bên dưới.

          Nếu bạn cần cài đặt một plugin theo cách thủ công, các tệp có liên quan có thể cần phải đi trong một thư mục này. Vui lòng kiểm tra tài liệu của plugin trước tiên.

          các cửa sổ (tất cả người dùng)

          C: \ Tệp chương trình \ obs-studio \ obs-plugins \ 64bit

          các cửa sổ
          (plugin di sản 32 bit; OBS Studio 27.2.4 và chỉ trước)

          C: \ Tệp chương trình \ obs-studio \ obs-plugins \ 32bit

          các cửa sổ (một người dùng)

          %Appdata%\ obs-studio \ obs-plugins

          hệ điều hành Mac

          ~/Thư viện/hỗ trợ ứng dụng/obs-studio/plugin

          Linux

          ~/.config/obs-studio/plugin

          Linux
          (Flatpak)

          Cài đặt các plugin bằng cách sử dụng FlatPak

          Nếu bạn cài đặt OBS Studio vào một vị trí tùy chỉnh hoặc sử dụng chế độ di động, bạn sẽ cần thay đổi thư mục đích của trình cài đặt thành vị trí tùy chỉnh của bạn Dữ liệu/Plugin thư mục.

          Mục lục