基於 Mediasoup 的 Abp vNext 視頻會議模塊

1、安裝

一、建立項目

# 當前目錄:任意
mkdir Sample && cd Sample
abp new Sample

二、安裝 Tubumu.Abp.Meeting 模塊

使用 Abp CLI 安裝:css

# 當前目錄:Sample
cd src/Sample.Web
# 當前目錄:Sample/src/Sample.Web
abp add-package Tubumu.Abp.Meeting

或者手工安裝,在 Nuget 搜索 Tubumu.Abp.Meeting 並安裝,而後修改 SampleWebAbpModule:html

// File: Sample/src/Sample.Web/SampleWebModule.cs
// ...
    typeof(AbpSwashbuckleModule),
    // 配置點:1
    typeof(TubumuAbpMeetingModule)
    )]
public class SampleWebModule : AbpModule
// ...

三、下載配置文件及修改 IP

mediasoupsettings.json 配置文件下載到 Sample.Web 項目中。前端

# 當前目錄:Sample/src/Sample.Web
curl -o mediasoupsettings.json https://raw.githubusercontent.com/albyho/Tubumu.Abp.Meeting/main/samples/Tubumu.Abp.Meeting.Sample/src/Tubumu.Abp.Meeting.Sample.Web/mediasoupsettings.json

打開 mediasoupsettings.json 配置文件,搜索 AnnouncedIp 鍵將值修改成本機在局域網中的 IP 或者公網 IP。git

// File: Sample/src/Sample.Web/mediasoupsettings.json
// ...
    "WebRtcTransportSettings": {
      "ListenIps": [
        {
          "Ip": "0.0.0.0",
          "AnnouncedIp": "192.168.1.5" // 修改成本機在在局域網中的 IP 或者公網 IP 。
        }
      ],
      "InitialAvailableOutgoingBitrate": 1000000,
      "MinimumAvailableOutgoingBitrate": 600000,
      "MaxSctpMessageSize": 262144,
      // Additional options that are not part of WebRtcTransportOptions.
      "MaximumIncomingBitrate": 1500000
    },
    // 用於 FFmpeg 推流
    "PlainTransportSettings": {
      "ListenIp": {
        "Ip": "0.0.0.0",
        "AnnouncedIp": "192.168.1.5" // 修改成本機在在局域網中的 IP 或者公網 IP 。
      },
      "MaxSctpMessageSize": 262144
    }
// ...

四、Web 前端

可將 Sample 的前端項目的源碼是 tubumu-abp-meeting-sample-client 編譯並複製到 Sample.Web 項目的 wwwroot 目錄下。好比:Sample/src/Sample.Web/wwwroot/meeting 目錄。github

# 當前目錄:tubumu-abp-meeting-sample-client
yarn build
cp -R ./dist/* xxxx/Sample.Web/meeting

注意:若有必要,請修改 index.html 文件中的 cssjs 的路徑。web

五、新增菜單

菜單連接至 Web 前端的首頁。shell

// File: Sample/src/Sample.Web/Menus/SampleMenus.cs
public class SampleMenus
{
    private const string Prefix = "Sample";
    public const string Home = Prefix + ".Home";

    //Add your menu items here...

    // `Meeting` menu item
    public const string Meeting = Prefix + ".Meeting";
}
// File: Sample/src/Sample.Web/Menus/SampleMenuContributor.cs
private async Task ConfigureMainMenuAsync(MenuConfigurationContext context)
{
    if (!MultiTenancyConsts.IsEnabled)
    {
        var administration = context.Menu.GetAdministration();
        administration.TryRemoveMenuItem(TenantManagementMenuNames.GroupName);
    }

    var l = context.GetLocalizer<SampleResource>();

    context.Menu.Items.Insert(0, new ApplicationMenuItem(SampleMenus.Home, l["Menu:Home"], "~/"));
    // `Meeting` menu item
    context.Menu.Items.Insert(1, new ApplicationMenuItem(SampleMenus.Meeting, "Meeting", "~/meeting/index.html"));
}

2、啓動

  1. 將 Sample.Web 設爲啓動項進行啓動。json

  2. 打開一個或多個瀏覽器並登陸。若是是局域網或公網還能夠經過其餘電腦或手機訪問。瀏覽器

  3. 訪問會議頁面。操做流程請參考錄屏和截圖。curl

3、錄屏

4、截圖

Screenshots

相關文章
相關標籤/搜索