Project Icon

mirotalksfu

开源WebRTC视频会议系统支持8K分辨率

MiroTalk SFU是一款开源WebRTC视频会议系统,采用SFU架构,支持8K分辨率和60fps帧率。系统兼容主流浏览器和平台,提供无限会议室、实时广播、多语言支持、身份认证等功能。具备屏幕共享、文件传输、聊天、白板等协作工具,并集成ChatGPT和VideoAI。基于WebRTC协议,确保低延迟和高质量的音视频传输。适用于远程会议、在线教育等多种场景,为用户提供高效、安全的视频通信解决方案。

MiroTalk SFU


作者 许可证: AGPLv3 社区

免费WebRTC - SFU - 简单、安全、可扩展的实时视频会议,支持高达8k分辨率和60fps。兼容所有主流浏览器和平台


探索MiroTalk SFU



加入我们的Discord社区,获取问题解答、讨论和支持


功能
  • 完全免费 - 开源(AGPLv3) - 自托管,并且是PWA!
  • 无限会议室,无时间限制。
  • 直播流媒体。
  • 支持133种语言翻译。
  • 支持OpenID Connect (OIDC)认证层。
  • 主持人保护,防止未经授权的访问。
  • 用户认证,防止未经授权的访问。
  • JWT.io安全管理主持人配置和用户认证的凭证,增强安全性并简化流程。
  • 房间密码保护。
  • 房间大厅,中央集会空间。
  • 房间垃圾信息缓解,专注于防止垃圾信息。
  • 地理定位,识别或估计参与者的真实地理位置。
  • 兼容桌面和移动设备。
  • 优化的移动房间URL分享。
  • 网络摄像头流媒体,支持移动设备的前后摄像头。
  • 广播,向广大观众分发音频或视频内容。
  • 清晰的音频流,具有说话检测和音量指示器。
  • 屏幕共享用于演示。
  • 文件共享,支持拖放。
  • 选择音频输入、输出和视频源。
  • 支持高达4K的视频质量。
  • 支持高级画中画(PiP),提供更流畅灵活的观看体验。
  • 在本地或服务器上录制屏幕、音频和视频。
  • 截取视频帧并保存为PNG图像。
  • 聊天功能,包括表情选择器、私人消息、Markdown支持和对话保存。
  • ChatGPT(由OpenAI提供支持)用于回答问题、提供信息和连接用户到相关资源。
  • VideoAI使用户能够自定义AI头像来传递消息、执行任务或表演脚本。
  • 语音识别,仅用语音执行应用功能。
  • 按键通话功能,类似对讲机。
  • 为教师提供高级协作白板。
  • 高级协作功能强大的富文本编辑器。
  • 实时共享YouTube嵌入视频、视频文件(MP4、WebM、OGG)和音频文件(MP3)。
  • 实时投票,允许用户创建和参与实时投票,提供即时反馈和结果。
  • 集成RTMP服务器,完全兼容**OBS**。
  • 支持从文件、URL、网络摄像头、屏幕和窗口进行RTMP流媒体。
  • 全屏模式,一键缩放视频元素和固定/取消固定。
  • 可定制的UI主题。
  • 视频元素右键选项提供额外控制。
  • 支持REST API(应用程序编程接口)。
  • Slack集成以增强通信。
  • 使用Sentry进行错误报告。
  • 还有更多...
关于
直接加入
主持人保护配置

host.protectedhost.user_auth启用时,主持人/用户可以提供有效令牌,直接加入app/src/config.js文件中指定的房间。

| 参数 | 值 | 描述 | | ---------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | | `host.protected` | 如果启用保护则为`true`,否则为`false`(默认为false) | 要求主持人在房间初始化时提供有效的用户名和密码。 | | `host.user_auth` | 如果需要用户认证则为`true`,否则为`false`(默认为false)。 | 决定是否需要主持人认证。 | | `host.users` | 包含用户对象的JSON数组:`{"username": "用户名", "password": "密码"}` | 有效主持人用户及其凭证列表。 |

示例:

    host: {
        protected: true,
        user_auth: true,
        users: [
            {
                username: '用户名',
                password: '密码',
            },
            {
                username: '用户名2',
                password: '密码2',
            },
            //...
        ],
    },
嵌入会议

要使用iframe在您的服务或应用程序中嵌入会议,可以使用以下代码:

<iframe
    allow="camera; microphone; display-capture; fullscreen; clipboard-read; clipboard-write; web-share; autoplay"
    src="https://sfu.mirotalk.com/newroom"
    style="height: 100vh; width: 100vw; border: 0px;"
></iframe>
快速开始
  • 在运行MiroTalk SFU之前,请确保您已安装Node.js和所有要求。此项目已使用Node版本18.X进行测试。

  • Ubuntu 24.04 LTS的要求安装示例

# Gcc g++ make
$ apt-get update
$ apt-get install -y build-essential
# Python 3.8 和 pip
$ DEBIAN_FRONTEND=noninteractive apt-get install -y tzdata
$ apt install -y software-properties-common
$ add-apt-repository -y ppa:deadsnakes/ppa
$ apt update
$ apt install -y python3.8 python3-pip
# FFmpeg
$ apt install -y ffmpeg

使用Node版本管理器安装NodeJS 18.Xnpm


  • 启动服务器
# 克隆此仓库
$ git clone https://github.com/miroslavpejic85/mirotalksfu.git
# 进入mirotalksfu目录
$ cd mirotalksfu
# 将app/src/config.template.js复制到app/src/config.js,并根据需要进行编辑
$ cp app/src/config.template.js app/src/config.js
# 安装依赖 - 请耐心等待,第一次可能需要几分钟,同时可以喝杯咖啡 ;)
$ npm install
# 启动服务器
$ npm start
# 如果要在不同于默认端口上启动服务器,请使用环境变量
$ PORT=3011 npm start

[!注意]

要在Windows操作系统上运行MiroTalk SFU,您可以按照此文档中提供的说明进行操作。

Docker

docker

# 将app/src/config.template.js复制到app/src/config.js 重要(根据您的需求进行编辑)
$ cp app/src/config.template.js app/src/config.js
# 将docker-compose.template.yml复制到docker-compose.yml并根据需要进行编辑
$ cp docker-compose.template.yml docker-compose.yml
# (可选)从Docker Hub获取官方镜像
$ docker-compose pull
# 创建并启动容器
$ docker-compose up # -d
# 停止并删除资源
$ docker-compose down
文档
# 响应将给出活跃的会议(默认禁用)。
$ curl -X GET "http://localhost:3010/api/v1/meetings" -H "authorization: mirotalksfu_default_secret" -H "Content-Type: application/json"
$ curl -X GET "https://sfu.mirotalk.com/api/v1/meetings" -H "authorization: mirotalksfu_default_secret" -H "Content-Type: application/json"
# 响应将给出会议的入口点/房间URL。
$ curl -X POST "http://localhost:3010/api/v1/meeting" -H "authorization: mirotalksfu_default_secret" -H "Content-Type: application/json"
$ curl -X POST "https://sfu.mirotalk.com/api/v1/meeting" -H "authorization: mirotalksfu_default_secret" -H "Content-Type: application/json"
# 响应将给出直接加入会议的入口点/URL。
$ curl -X POST "http://localhost:3010/api/v1/join" -H "authorization: mirotalksfu_default_secret" -H "Content-Type: application/json" --data '{"room":"test","roomPassword":"false","name":"mirotalksfu","audio":"false","video":"false","screen":"false","notify":"false"}'
$ curl -X POST "https://sfu.mirotalk.com/api/v1/join" -H "authorization: mirotalksfu_default_secret" -H "Content-Type: application/json" --data '{"room":"test","roomPassword":"false","name":"mirotalksfu","audio":"false","video":"false","screen":"false","notify":"false"}'
# 响应将给出带令牌直接加入会议的入口点/URL。
$ curl -X POST "http://localhost:3010/api/v1/join" -H "authorization: mirotalksfu_default_secret" -H "Content-Type: application/json" --data '{"room":"test","roomPassword":"false","name":"mirotalksfu","audio":"false","video":"false","screen":"false","notify":"false","token":{"username":"username","password":"password","presenter":"true", "expire":"1h"}}'
$ curl -X POST "https://sfu.mirotalk.com/api/v1/join" -H "authorization: mirotalksfu_default_secret" -H "Content-Type: application/json" --data '{"room":"test","roomPassword":"false","name":"mirotalksfu","audio":"false","video":"false","screen":"false","notify":"false","token":{"username":"username","password":"password","presenter":"true", "expire":"1h"}}'
# 响应将给出会议的有效令牌(默认禁用)
$ curl -X POST "http://localhost:3010/api/v1/token" -H "authorization: mirotalksfu_default_secret" -H "Content-Type: application/json" --data '{"username":"username","password":"password","presenter":"true", "expire":"1h"}'
$ curl -X POST "https://sfu.mirotalk.com/api/v1/token" -H "authorization: mirotalksfu_default_secret" -H "Content-Type: application/json" --data '{"username":"username","password":"password","presenter":"true", "expire":"1h"}'
Hetzner 和 Contabo

Hetzner

此应用程序出于演示目的在 Hetzner 上运行,Hetzner 是最佳的云服务提供商专用根服务器之一。


使用我的个人链接可获得 €20 云服务积分


Contabo

同时体验顶级德国网络托管服务 - 专用服务器、VPS 和网络托管,价格无与伦比。可靠、安全,并提供 24/7 全天候支持。立即在此探索


要在专用云服务器上设置您自己的 MiroTalk SFU 实例,请参阅我们全面的自托管文档。该指南将逐步引导您完成整个过程,确保顺利成功部署。

DigitalOcean

DigitalOcean 推荐徽章

对于个人使用,您可以从每月 5 美元的单个云服务器开始,根据需要进行扩展。您可以使用此链接获得 前 60 天 100 美元的信用额度

在线演示

https://sfu.mirotalk.com

mirotalksfu-qr

致谢
- [Davide Pacilio](https://cruip.com/demos/solid/) (HTML模板) - [Dirk Vanbeveren](https://github.com/Dirvann) (SFU逻辑) - [Mediasoup](https://mediasoup.org) (SFU服务器)
贡献
  • 欢迎并非常感谢您的贡献!
  • 只需在提交前运行 npm run lint
许可证

[AGPLv3](https://github.com/miroslavpejic85/mirotalksfu/blob/main/LICENSE

MiroTalk SFU 在 AGPLv3(GNU Affero 通用公共许可证 v3.0)条款下是免费和开源的。请尊重许可条件,特别是修改也需要是免费的并向公众公开。您可以在选择开源许可证快速了解该许可证。

要获得与 AGPLv3 不同条款的 MiroTalk SFU 许可证,您可以方便地在 CodeCanyon 上购买。这使您可以根据具体需求调整许可条件。

支持项目

您是否发现 MiroTalk SFU 对您的需求不可或缺?加入我们,通过成为支持者或赞助商来支持这个变革性项目。这样做不仅可以让您的徽标在此处突出显示,还能推动 MiroTalk SFU 的发展和可持续性。您的支持对确保这个有价值的平台继续蓬勃发展并对所有人保持可访问性至关重要。立即支持 MiroTalk SFU,成为这一激动人心旅程的一部分!

BroadcastXHetzner
LuvLoungeQuestionPro
BrowserStackCrystalSound
CloudronKiquix
广告商

Contabo


深入了解其他 MiroTalk 项目:

MiroTalk P2P

也可以尝试 MiroTalk P2P 点对点实时视频会议,为小群组优化。无限时间,无限并发房间,每个房间可容纳 5-8 名参与者。

MiroTalk C2C

也可以尝试 MiroTalk C2C 点对点实时视频会议,为摄像头对摄像头优化。无限时间,无限并发房间,每个房间可容纳 2 名参与者。

MiroTalk BRO

也可以尝试 MiroTalk BRO 直播广播(点对点)实时视频、音频和屏幕流至所有连接的用户(观众)。无限时间,无限并发房间,每个房间有一个广播者和多个观众。

MiroTalk WEB

也可以尝试 MiroTalk WEB,这是一个允许管理无限数量用户的平台。每个用户必须使用他们的电子邮件、用户名和密码注册,之后他们可以访问自己的个人仪表板。在仪表板中,用户可以管理他们的房间并安排会议,使用所需版本的 MiroTalk 在指定日期和时间进行。可以通过电子邮件发送这些会议的邀请,通过网络浏览器共享,或通过短信发送。


本项目使用 BrowserStack 进行测试。


项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

吐司

探索Tensor.Art平台的独特AI模型,免费访问各种图像生成与AI训练工具,从Stable Diffusion等基础模型开始,轻松实现创新图像生成。体验前沿的AI技术,推动个人和企业的创新发展。

Project Cover

SubCat字幕猫

SubCat字幕猫APP是一款创新的视频播放器,它将改变您观看视频的方式!SubCat结合了先进的人工智能技术,为您提供即时视频字幕翻译,无论是本地视频还是网络流媒体,让您轻松享受各种语言的内容。

Project Cover

美间AI

美间AI创意设计平台,利用前沿AI技术,为设计师和营销人员提供一站式设计解决方案。从智能海报到3D效果图,再到文案生成,美间让创意设计更简单、更高效。

Project Cover

AIWritePaper论文写作

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号