惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

MyScale Blog
MyScale Blog
Apple Machine Learning Research
Apple Machine Learning Research
H
Help Net Security
雷峰网
雷峰网
V
Visual Studio Blog
G
Google Developers Blog
Microsoft Azure Blog
Microsoft Azure Blog
Hugging Face - Blog
Hugging Face - Blog
爱范儿
爱范儿
IT之家
IT之家
Engineering at Meta
Engineering at Meta
Microsoft Security Blog
Microsoft Security Blog
aimingoo的专栏
aimingoo的专栏
大猫的无限游戏
大猫的无限游戏
M
MIT News - Artificial intelligence
月光博客
月光博客
A
About on SuperTechFans
B
Blog RSS Feed
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
The GitHub Blog
The GitHub Blog
N
Netflix TechBlog - Medium
J
Java Code Geeks
云风的 BLOG
云风的 BLOG
Blog — PlanetScale
Blog — PlanetScale

博客园 - alby

在 ASP.NET Core Web API 中处理 Patch 请求 一种有界队列(Bounded Buffer)的实现 使用 ASP.NET Core 作为 mediasoup 的信令服务器 ASP.NET Core 的 `Core` 有几种写法? ASP.NET Core MVC 授权的扩展:自定义 Authorize Attribute 和 IApplicationModelProvide OrchardCore 如何实现模块化( Modular )和 Multi-Tenancy [iOS]关于状态栏(UIStatusBar)的若干问题 [iOS]关于视频方向的若干问题 --2015-06-24-- Orchard源码分析(7.2):Controller相关 Orchard源码分析(7.1):Routing(路由)相关 Orchard源码分析(7):ASP.NET MVC相关 Orchard源码分析(4.4):Orchard.Caching.CacheModule类 Orchard源码分析(6):Shell相关 Orchard源码分析(5.3):EndRequest事件处理(DefaultOrchardHost.EndRequest方法) Orchard源码分析(5.2):BeginRequest事件处理(DefaultOrchardHost.BeginRequest方法) Orchard源码分析(5.1):Host初始化(DefaultOrchardHost.Initialize方法) Orchard源码分析(5):Host相关(Orchard.Environment.DefaultOrchardHost类) Orchard源码分析(4.3):Orchard.Events.EventsModule类(Event Bus)
基于 Mediasoup 的 Abp vNext 视频会议模块
alby · 2021-01-27 · via 博客园 - alby

一、安装

1、创建项目

# 当前目录:任意
mkdir Sample && cd Sample
abp new Sample

2、安装 Tubumu.Abp.Meeting 模块

使用 Abp CLI 安装:

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

或者手工安装,在 Nuget 搜索 Tubumu.Abp.Meeting 并安装,然后修改 SampleWebAbpModule:

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

3、下载配置文件及修改 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。

// 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
    }
// ...

4、Web 前端

可将 Sample 的前端项目的源码是 tubumu-abp-meeting-sample-client 编译并复制到 Sample.Web 项目的 wwwroot 目录下。比如:Sample/src/Sample.Web/wwwroot/meeting 目录。

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

注意:如有必要,请修改 index.html 文件中的 cssjs 的路径。

5、新增菜单

菜单链接至 Web 前端的首页。

// 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"));
}

二、启动

  1. 将 Sample.Web 设为启动项进行启动。

  2. 打开一个或多个浏览器并登录。如果是局域网或公网还可以通过其他电脑或手机访问。

  3. 访问会议页面。操作流程请参考录屏和截图。

三、录屏

四、截图

Screenshots