Dimension

基于 .NET 6 的在线音视频聊天项目

WPF和ASP.NET API开发

使用第三方依赖介绍

公用依赖

  1. log4net 日志记录。
  2. SignalR 用于服务器与客户端的通讯手段,该项目用于好友申请、消息提示、公告、聊天和音视频通话等一系列通知。
  3. EntityFrameworkCore 操作数据库的ORM工具,服务端使用SqlServer,客户端使用Sqlite。
  4. Newtonsoft.Json 序列化和反序列化JSON。

服务端

  1. TencentCloudSDK 操作腾讯云服务API,该项目用于管理通话房间。
  2. aliyun-net-sdk-core 操作阿里云服务API,该项目用于短信服务。
  3. CHSPinYinConv 获取中文拼音。
  4. Portable.BouncyCastle TRTC加密使用。
  5. SixLabors.ImageSharp 操作图片,因c#中操作图片需要微软的GDI绘图,但在linux上操作需要mono的libgdiplus库,处理效果并不理想。

WPF端

  1. TXLiteAV 操作腾讯云的TRTC服务,本地设备音视频推流、获取房间内其他用户音视频数据。
  2. XamlAnimatedGif 播放GIF,因设备效率问题,改动作者源码后重新打包使用。

    源库:https://github.com/XamlAnimatedGif/XamlAnimatedGif 问题:https://github.com/XamlAnimatedGif/XamlAnimatedGif/issues/160

后台部署说明

  1. 修改DimensionService.Common命名空间下 ClassHelper类



    请填写红框内付费服务内容,本程序使用阿里的短信服务和腾讯的TRTC服务,填写内容请见官方说明。
  2. 数据库

    该服务采用sqlserver2019数据库,并使用EF CORE作为主要的ORM框架,首次使用需要迁移数据库。

    打开程序包管理控制台,输入Update-Database InitialCreate



    该项目提供线上测试服务地址,http://47.96.133.119:5000

WPF端



红框内容需与服务端保持一致

已实现的功能

1.登录|注册

2.添加好友

3.音视频在线通话

4.聊天(图片、文字、富文本)

5.截屏(多显示器不同dpi支持)

界面展示















功能演示

作者太懒,以后再写!

我还是提供的测试账号和程序地址吧。

不过需要安装NET6桌面运行时,这是下载地址:https://dotnet.microsoft.com/en-us/download/dotnet/thank-you/runtime-desktop-6.0.3-windows-x64-installer

测试用户

1571221{1~9}177,

密码统一为12345678。

所有用户登录信息我都放在程序包里啦,并且都添加了我做为好友。

程序包

链接:https://pan.baidu.com/s/1aTh_710GpKIIHOHpvVCpBw?pwd=cp4o

提取码:cp4o

--来自百度网盘超级会员V4的分享

演示视频

链接:https://pan.baidu.com/s/1n-sQZFgO9GEhS80jHLVouA?pwd=85x3

提取码:85x3

--来自百度网盘超级会员V4的分享

GitHub地址

https://github.com/qian-o/Dimension

基于 WPF和ASP.NET Core 在线音视频聊天项目的更多相关文章

  1. ASP.NET Core WebAPI 开发-新建WebAPI项目

    ASP.NET Core WebAPI 开发-新建WebAPI项目, ASP.NET Core 1.0 RC2 即将发布,我们现在来学习一下 ASP.NET Core WebAPI开发. 网上已经有泄 ...

  2. ASP.NET Core WebAPI 开发-新建WebAPI项目 转

    转 http://www.cnblogs.com/linezero/p/5497472.html ASP.NET Core WebAPI 开发-新建WebAPI项目   ASP.NET Core We ...

  3. 轻松构建基于 Serverless 架构的弹性高可用音视频处理系统

    前言 随着计算机技术和 Internet 的日新月异,视频点播技术因其良好的人机交互性和流媒体传输技术倍受教育.娱乐等行业青睐,而在当前, 云计算平台厂商的产品线不断成熟完善, 如果想要搭建视频点播类 ...

  4. Asp.Net Core 轻松学系列-3项目目录和文件作用介绍

    目录 前言 结语 前言     上一章介绍了 Asp.Net Core 的前世今生,并创建了一个控制台项目编译并运行成功,本章的内容介绍 .NETCore 的各种常用命令.Asp.Net Core M ...

  5. 如何基于 ZEGO SDK 实现 Flutter 一对一音视频聊天应用?

    之前的文章发布了ZEGO SDK实现Android端音视频通话应用的开发教程,不少开发者反馈很实用,能不能也出一版Flutter的教程. 有求必应,这不小编来了- 我们封装了ZEGO Flutter ...

  6. 基于Citus和ASP.NET Core开发多租户应用

    Citus是基于PsotgreSQL的扩展,用于切分PsotgreSQL的数据,非常简单地实现数据“切片(sharp)”.如果不使用Citus,则需要开发者自己实现分布式数据访问层(DDAL),实现路 ...

  7. 创建基于ASP.NET core 3.1 的RazorPagesMovie项目(二)-应用模型类配合基架生成工具生成Razor页面

    本节中,将学习添加用于管理跨平台的SQLLite数据库中的电影的类Movie.从ASP.NET core 模板创建的应用使用SQLLite数据库. 应用模型类(Movie)配合Entity Frame ...

  8. 创建基于ASP.NET core 3.1 的RazorPagesMovie项目(一)-创建和使用默认的模板

    声明:参考于asp.net core 3.1 官网(以后不再说明) 本教程是系列教程中的第一个教程,介绍生成 ASP.NET Core Razor Pages Web 应用的基础知识. 在本系列结束时 ...

  9. 创建基于ASP.NET core 3.1 的RazorPagesMovie项目(三)-已搭建基架的Razor页面解释和更新

    本节主要介绍在上一节中通过搭建基架而创建的Razor页面,并做一些UI改变. 一.创建.删除.详细信息和编辑页面 1.双击Pages/Movies/Index.cshtml.cs文件,这是一个Razo ...

随机推荐

  1. JZ-023-二叉搜索树的后序遍历序列

    二叉搜索树的后序遍历序列 题目描述 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果.如果是则返回true,否则返回false.假设输入的数组的任意两个数字都互不相同. 题目链接: 二叉 ...

  2. LeetCode-001-两数之和

    两数之和 题目描述:给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标. 你可以假设每种输入只会对应一个答 ...

  3. Python语法3

    目录 模块 Python程序架构 第三方工具包: 创建packet包 模块导入方式 异常处理 六种典型异常 异常处理 自定义异常 模块 Python程序架构 Python源代码文件:*.py 一个py ...

  4. 阿里云CND加速

    1: :2: 3: 4: 5: 6: 7:将解析信息如实添加 8:如果报错添加 CNAME 记录提示和 A 记录冲突,也就是说如果你要添加 CDN 全站加速,域名解析那里就不能再有 A 记录了, 只有 ...

  5. 提升Spring Boot项目中API接口并发能力的一个注解,效果明显

    异步调用几乎是处理高并发Web应用性能问题的万金油,那么什么是"异步调用"?"异步调用"对应的是"同步调用",同步调用指程序按照定义顺序依次 ...

  6. 羽夏看Win系统内核——消息机制篇

    写在前面   此系列是本人一个字一个字码出来的,包括示例和实验截图.由于系统内核的复杂性,故可能有错误或者不全面的地方,如有错误,欢迎批评指正,本教程将会长期更新. 如有好的建议,欢迎反馈.码字不易, ...

  7. uniapp小程序图片前端压缩上传

    目录 1,前言 2,实现代码 1,前言 这次项目中做了一个图片上传,要求是大于2MB的就压缩成2MB一下的再上传,我这边利用了uniapp的文件接口,使用canvas做了一个压缩上传的功能,目前已上线 ...

  8. Ubuntu16.04 oh_my_zsh 安装与配置

    参考文章 Ubuntu上使终端显示Git分支(oh-my-zsh) oh-my-zsh的安装与基本配置 Ubuntu 下安装oh-my-zsh 前言 之前学习Laravel的时候,经常要切换git分支 ...

  9. Spring Data Jpa 更新操作

    第一步,通过Repository对象把实体根据ID查询出来 第二部,往查出来的实体对象进行set各个字段 第三步,通过Repository接口的save方法进行保存 保存和更新方式(已知两种) 第一种 ...

  10. 使用过 Redis 分布式锁么,它是什么回事?

    先拿 setnx 来争抢锁,抢到之后,再用 expire 给锁加一个过期时间防止锁忘记了 释放. 这时候对方会告诉你说你回答得不错,然后接着问如果在 setnx 之后执行 expire 之前进程意外  ...