用 Blazor WebAssembly 和 Web Socket 写一个网页语音聊天室

作者:V君 发布于:2022-12-2 15:46 Friday 分类:我的应用

TL;DR [ 下载 ] [ 源代码 ]

用法:
 1. 下载 SimpleWebChat.Pre-Release-2.7z 解压,运行 SimpleWebChat.ConHost.exe
 F. 修改配置文件 config.json 中的 ListenPrefix 可以监听外部请求,支持 HTTPS
 A. 这次更新在原来的文字聊天基础上增加了两种语音聊天

文字聊天:
 1. 访问首页,点击【Text chat】按钮进入
 2. 输入昵称,点击【Connect】按钮或者按回车键,进入聊天室
 3. 输入内容,点击【Send】按钮或者按回车键,发送消息

一对一语音聊天:
 1. 访问首页,点击【Voice chat】按钮进入
 2. 输入昵称,点击【Open Microphone】按钮,允许使用麦克风
 3. 使用拨号盘或者在文本框输入号码,点击【→】按钮
 4. 在另一个设备使用拨号盘或者在文本框输入相同的号码,点击【→】按钮,开始语音聊天

多人语音聊天:
 1. 访问首页,点击【Voice meeting】按钮进入
 2. 输入昵称,点击【Open Microphone and Connect】按钮,允许使用麦克风,开始多人聊天

最后是固定的扯扯环节

凭兴趣使用零零散散的业余时间开发,难免会有各种照顾不到的情形,有问题就刷新了重试,有能力的就自行调试(欢迎反馈问题❌)

访问麦克风和回放的实现是纯 JS 实现的,因为 Blazor 没有封装这些功能,而且不支持 safari 浏览器,因为写死了用 OPUS 音频编码 增加了 MP4A 音频编码,现已支持较新版本的 safari 浏览器 _(:з)∠)_

好啦,这就是这次的 Hello world 级的 语音聊天 案例 (←美其名曰),顺便预告一下土炮云已经实现(PC端浏览器)拖放排序,等把播放队列做出来再发表吧

标签: C# Web技术 前端工程 WebSocket .NetCore

评论(0) 引用(0) 浏览(63)

使用 Blazor 为土炮云增加 Web 界面,定制歌单已可用

作者:V君 发布于:2022-10-29 14:05 Saturday 分类:我的应用

TL;DR for 立即想拿来用的人:[ 下载 | 源代码 ]

用法: 下载 FNZCM.ConHost.7z 解压得到一个 EXE 和 JSON 配置文件,然后把 wwwroot.zip 下载放到解压出来的两个文件边上,双击 EXE 看看有没有错误, 其余用法参见首发的土炮云[ 别再忍受网抑云欺压了,用起外网IP来搭建自己的私有云音乐吧 ]。

这次的界面调整了专辑(❌Disc)列表布局,做了个卡片列表,还做了个按标题搜索(其实搜索还可以再做细一些),最后就是歌单管理功能了,做了勉强能用的上下移动顺序调整按钮,谁让网页拖动实现这么难呢 °皿°

简单扯一扯缘起

上一次发布的土炮云内置 Web 界面只能使用固定的 m3u 歌单,不爽,那就加个接口吐出元数据集,然后用 Blazor 写个界面,配合 Blob 实现导出定制歌单。

这两次发布时间间隔有亿点长,主要原因有俩,对 Blazor 还比较生疏,外加一直有零碎修改,迟迟没有让自己满意,认为拿出来丢人。又到月底了,得刷存在感,那就告一段落发出来吧

简单扯一扯开发感想

首先点名致谢 KeudellCoding 的 Select2 封装项目,参考这个项目受益匪浅,让我有参照地把需要的 Bootstrap 组件封装起来。(后来用不上了依旧下代码做纪念❌)

针对解析大型(?) JSON 时,界面冻结的问题从爆栈上找到个流式读取的方法,期间定时松绑(?)一下脚本,这样界面就不卡死了。

起初还用了前端路由,发现这东西太难驾驭,后来就索性不动 URL 了,把控件状态写进 localStorage 里,页面载入的时候还原,这也还凑合吧。

最后我来帮懒得吐槽的家伙吐槽一下我还在用老掉牙的 HttpListener ,前端都先进到在浏览器跑 C♯ 了,而后端虽然用了 Core 但还在用上古时期的方式。我只能说这就是习惯了吧,实际上改成 Core 的 Host 方式看起来也问题不大,甚至还能兼容 IIS 呢。

最后我只能说:别想这么多。这只是个玩具项目,首先要能满足自己,其次如果能给有需要的人帮上忙,我就偷着乐了。

标签: 软件开发 C# HTTP Web技术 前端工程 .NetCore

评论(1) 引用(0) 浏览(73)

用 Blazor WebAssembly 和 Web Socket 写一个网页聊天室

作者:V君 发布于:2022-9-26 17:38 Monday 分类:我的应用

TL;DR [ 下载 ] [ 源代码 ]

用法:
 1. 下载 SwcRelease-1.7z 解压,运行 SimpleWebChat.ConHost.exe
 F. 修改配置文件 config.json 中的 ListenPrefix 可以监听外部请求,支持 HTTPS

这次只扯 °皿°

最近这段时间几乎把全部的业余时间花在 Blazor WASM 上了,一边给土炮云增加前端界面,一边盘算着发表点什么出来。由于土炮云一直没有达到认为能拿出来的段落,就一直咕着没有发表,直到月底慌了,就搞点东西发出来刷存在感,这次是 Hello world 级的 WebSocket 案例 (←美其名曰)

标签: 软件开发 C# Web技术 WebSocket

评论(0) 引用(0) 浏览(97)

基于FFMPEG,用C♯实现CUE分割(分轨),不重新编码(CueSharp)

作者:V君 发布于:2022-8-1 13:17 Monday 分类:我的应用

TL;DR [ 下载 ] [ 源代码 ]

效果:指定整轨音频文件和 CUE,自动解析时间,调用 FFMPEG 提取分轨
限制:CUE 文件仅支持 UTF-8、GB2312、SHIFT-JIS、EUC-KR 编码,其他编码请转 UTF-8
环境:已测试在 Win10 下正常工作
用法:
 1. 下载 CueSplitter 解压,下载 FFMPEG 放入同一目录文件夹或者 PATH 环境变量
 F. 例子: CueSplitter image.m4a image.cue z:\SplitOut

稍微扯扯缘起:

如果没有特殊需求,一般用 CUETools 可以应对大部分情况,还能顺便打 Tag。那么二般来了:对有损音频文件做分轨,又不想重新编码的话,CUETools 做不到,于是就有了这个玩意儿。用我这玩意儿提取出来的分轨不会自动打 Tag,推荐使用 Mp3Tag 这个免费工具来批量打 Tag。

然后扯扯开发心得:

在开坑之前肯定为了避免弃坑而先确保可行性,要分割 CUE 首先要解析 CUE,尽管里面有看起来像是明显时间的格式,但我还是没有一开始就自己造轮子,而是找找现有的库。咕狗了亿会,发现只有 CueSharp 这个库,而且还没有 nuget 包,那就只能拖进项目里面了(后来还找到一个修改版)。解析 CUE 之后,只是能获取标题和时间偏移量,还得手动过一下获得每个音轨的时长,最后一个音轨直接拉到整轨末尾就完事。这里用 TagLib 来获取音频文件总时长。有了偏移量和时长,就可以调用 FFMPEG 跑 copy 来分段提取了。启动进程的方法和旧 Framework 的不一样,用了 ArgumentList 属性,把参数作为集合元素一个个放进去,不需要自己处理双引号和转义的问题。

标签: 软件开发 C# 音频 FFMPEG

评论(2) 引用(0) 浏览(275)

写了个控制台图标修改工具

作者:V君 发布于:2022-7-13 19:57 Wednesday 分类:我的应用

TL;DR [ 下载 ][ 源代码 ]

效果:将当前控制台窗口图标(包括任务栏和Alt+Tab界面)设置成指定的 ICO 文件
限制:任务栏合并时不起作用
环境:在 Win10、WinServer2019 下正常工作
用法:
 1. 下载 ConsoleIcon.exe,放入 Windows 文件夹或者 PATH 环境变量或者使用绝对路径
 2. 在 bat 文件中调用,传入图标文件路径,支持相对或绝对路径
 F. 例子: @ConsoleIcon Logo.ico

稍微扯扯:

这玩意儿纯属一时脑洞想出来的,由于自己的服务器上会跑许多批处理,不爽默认图标就尝试去修改它。

最初的实现没有持久,后来增加了一个后台进程来维持图标句柄(?)于是持久了,多次调用不会增加后台进程数量。

标签: 软件开发 控制台

评论(0) 引用(0) 浏览(102)

Powered by emlog 去你妹的备案 sitemap