用 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) 浏览(61)

基于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) 浏览(196)

写了个TCP连接状态统计小工具,代替 netstat 和 find 命令组合

作者:V君 发布于:2022-6-26 11:33 Sunday 分类:我的应用

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

然后是使用说明
 ConnectionStat.exe 若干监听端口参数
示例
 ConnectionStat.exe 80
 ConnectionStat.exe 443
 ConnectionStat.exe 80 443
首先会输出当前主机的连接状态统计,接着挨个参数指定的端口筛选统计
最后如果指定两个端口以上,则统计列出的端口连接状态总数

简单扯一扯

工作中有一些TCP协议的服务器用来接入各种设备,经常需要统计连接数来排查状况,经常用 netstat 和 find 命令搭配,每次使用都觉得麻烦,那就写个简单的工具来实现汇总,基于这个工具外面再套一层,从服务配置文件读取监听端口,这就更方便了。

标签: 软件开发 C# 软件故障诊断 TCP

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

【奇怪的工具】压缩包转换器,不产生临时文件

作者:V君 发布于:2022-5-27 23:32 Friday 分类:我的应用

TL;DR:

首先是 源代码 和作为 Release 的 Win64 DEMO
然后是 DEMO 的用法:
SevenRepacker.exe [/out-dir:d:\zips] d:\archives\1.7z d:\archives\2.7z …
  - 输出路径 /out-dir: 可选参数,不指定就会输出到原始文件旁边
  - 输入文件 支持动态个数
限制:输出格式被固定成 zip 压缩算法固定 Copy
限制:目前只确定输入文件是 Copy 算法的 7z 能顺利转换成 zip,其他非预期情况未处理

听简单我扯扯:

我习惯把看过的动画片打包归档,用的是 Copy 算法,视频文件重新压缩无意义。 早些时候打了一堆 7z 包,以为只要是 Copy 算法就可以轻松 mount ,用到才发现并没有支持把 7z 归档 mount 成虚拟驱动器的开源(或免费)软件,自己常用的 ImDisk、Pismo File Mount、OSFMount 全都不支持 7z (Pismo File Mount 支持 zip),那就得安排一下做转换了,把这堆 7z 转成 zip 。

手动解开再压缩是不可能手动的,还得找地方放临时文件。在昨天临睡之前古狗了一下转换压缩包的方法,查到的方法不外乎都是先解压,再重新打包,顶多就来点脚本。太没意思了。

关掉浏览器,想想能不能自己写一个小工具,反正只要能流式读取压缩包,那就能做到像管道那样直达目标。前些年我用过的 SevenZipSharp 库就提供了流式 API,稍微做点 tricks 就能搞定了,于是针对我这个使用场景的实现就出来了,作为 demo 放出来。

这个月依旧差点找不到值得发表的内容 _(:з)∠)_

标签: 软件开发 C# 命令行

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

别再忍受网抑云欺压了,用起外网IP来搭建自己的私有云音乐吧

作者:V君 发布于:2022-3-14 11:01 Monday 分类:我的应用

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

1)解压,用文本编辑器修改配置文件 config.json
 ◆ListenPrefix 用来配置监听的IP和端口,格式是 http://+:12345
  若要指定监听的网卡,将加号改成对应网卡IP即可
 ◆Libraries 里面每一项作为音乐库定义,Key是显示名称,Value是物理路径
  音乐库目录结构
  $/专辑
    cover.jpg
    01.flac
    02.flac
    03.flac
    /BK
      scan1.png
      scan2.png
      scan3.png
    /AAC_
      01.m4a
      02.m4a
      03.m4a
 ◆MediaFilePattern、BkFilePattern 保持默认即可
2)然后直接双击 FNZCM.ConHost.exe 启动,启动后扫描媒体库获取元数据生成列表
在浏览器打开监听的地址就可以浏览媒体库、专辑、音轨、BK,音轨页面可以在线播放
当文件发生变化时,点击首页底部的 Reload 来刷新媒体库
接着就可以将M3U8链接甩给播放器 APP 在线播放
X)进阶:如果嫌FLAC使用流量太多,肉疼的话还可以批量生成高品质AAC(m4a)
(文件大小缩减到一半以下,音质损失可忽略不计)
只是目前配套的批量转换工具还没有发布直接可用的版本
感兴趣的小伙伴可以阅读源代码了解使用方法,自己编译一个来用)

简单扯一扯缘起

由于无法忍受网抑云肆意下架、移除歌单中的收藏项,而且自己上传一些私有音乐,相似但不同的变异版本它识别得乱七八糟,我决定丢掉它找别的方法听歌。(其实最无法忍受的是吃相太难看)

起初回到原始的下载 FLAC 放到电脑或者手机直接播放,在电脑直接播放本地(局域网共享)文件还行,只是手机端就没这么方便了,还得考虑存储空间,得想办法随时随地直接播放家里的媒体库才行。

简单扯一扯开发感想

碍于爱折腾的个性,首先不使用现成的产品,不管你免费与否、开源与否❌

私有云音乐的本质就是一个流媒体服务器,如果是局域网,直接走共享即可,但是出门在外还想用家里的音乐库,这就得想想办法了。

最开始的步伐迈开的太大,想做一个大而全的网页版,扯蛋不说一直没整出一个像样的东西来

后来想起音乐播放 APP 可以载入 M3U8 格式的列表,这样就不用自己造界面的轮子了,咱可以基于静态目录结构实现随时随地用 VLC 之类的 APP 在线播放。用播放器的好处还有兼容性高,已知一些高规格的FLAC文件无法在浏览器播放,而 VLC 能轻松播放。

于是这个简化版的私有云音乐就出来了,它还有一个接地气的内部名称:“土炮云”

标签: 软件开发 C# HTTP 音频 传输协议 流媒体

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

Powered by emlog 去你妹的备案 sitemap