别再忍受网抑云欺压了,用起外网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 音频 传输协议 流媒体

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

用C♯了写个传声筒——经由局域网在另一台电脑上播放声音

作者:V君 发布于:2022-2-10 22:39 Thursday 分类:我的应用

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

在发送端静音,然后用命令行参数启动
 AudioNTR.exe 操作 参数…
示例
 AudioNTR.exe receiver 2333
 AudioNTR.exe transmitter 192.168.1.2 2333
只在两边都是 Windows 10 的环境下使用过,不确保其他环境也能用…
这玩意的全称是 Audio Net Transmitter Receiver 不要想歪了))

简单扯一扯缘起

在家中电子垃圾堆翻出一块焊满电容的独立声卡,是 PCI 插槽的,又找出一块有 PCI 插槽的主板,直推 XM4 一直当着播放机单独用,效果十分满意。但也有些毛病,经常出现主力机的声音(音箱)听不到或者听不清的情况。偶尔还会有发出声音的网页开着,不注意就很尴尬……

那时候首先去咕狗搜「Play audio on another computer」找到一堆现成的收费软件。(当然在做出来之后又发现了一堆开源的实现…)由于前些年摸过音频处理,知道有 NAudio 这个库在 NT6+ 可以轻松地截取、回放声音,于是就有了这个小玩意。

简单扯一扯开发感想

要狠狠地赞 NAudio 这个音频库,基本上想做的事情都在它的预期范围内,零造轮子,把组件连接起来就能用!

最后配一个简单的不能再简单地原理图

点击查看原图

标签: 软件开发 C# TCP 音频 .NetCore

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

用C♯写了个特别的TCP端口转发器,经由SOCKS5转发TCP连接

作者:V君 发布于:2022-1-14 5:43 Friday 分类:我的应用

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

命令行参数
 TcpRedirector.exe 监听地址 监听端口 SOCKS5地址(或者域名) SOCKS5端口 目的地址(或者域名) 目的端口
示例
 TcpRedirector.exe 127.0.0.1 1234 127.0.0.1 1080 example.com 80
仅支持匿名验证SOCKS5
只在 Windows 10、Server 2019 环境下使用过,不确保其他环境也能用…

简单扯一扯缘起

由于众所周知的原因…………………………

简单扯一扯开发感想

没啥想扯的,无非是不想用别人做好现成的,那就造轮子,在自己的机器上跑了两天,没出问题才发上来(其实是懒得安装py环境,那就自己简单写一个

标签: 软件开发 C# SOCKS SOCKET TCP

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

让 dnsmasq-china-list 分流列表跑在 windows 之用 C♯ 写 DNS 转发器

作者:V君 发布于:2021-12-12 4:48 Sunday 分类:我的应用

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

命令行参数
 DnsForwarder.exe 默认DNS .CN域名DNS 配置文件
示例
 DnsForwarder.exe 192.168.233.233 114.114.114.114 c:\dnsmasq-china-list.conf
只在 Windows 10 环境下调试通过,不确保其他环境也能用…

简单扯一扯缘起

由于众所周知的原因,光是有了可靠的 DNS 还不行,直接使用会让部分国内网站变慢甚至打不开,这时候就只能上分流方案了。网上查到的都是用 dnsmasq 跑在路由器、linux、WSL上,没找到 windows 下直接能用的方案,那就只能自己造轮子了…

简单扯一扯开发感想

要做一个东西首先要确定理论上的可行性。我不想太深入 DNS 协议,先想到的是盲转发,也就是监听 53 端口进来的 DNS 请求,提取报文中的域名,然后原样转发到匹配的 DNS 服务器,得到响应之后再原路返回。那么就稍微啃了一下 DNS 的协议报文。从 DNS 报文中提取域名还算简单,简单 PoC 之后就适配到 dnsmasq-china-list 配置文件了。起初匹配表是个字典,键和值都是字符串,键是域名,值是 DNS 服务器 IP,载入配置文件之后观察内存占用已经将近 40MB 了,然后又抽空优化了一下把大量重复的 DNS 服务器改成查表,这下内存占用就下降了数 MB。UDP 的使用姿势也从无脑循环改为异步收发,对上游服务响应超时的情况也做了应对处理,及早释放资源。

标签: DNS劫持 软件开发 C#

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

用C♯访问共享内存(MACMSharedMemory)调用Afterburner控制显卡风扇转速

作者:V君 发布于:2021-10-26 20:25 Tuesday 分类:我的应用

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

0) 确保 MSI Afterburner 正常运行
1) 一些命令行示例
◆ 显示全部显卡风扇转速: -q
◆ 显示第一块显卡风扇转速: -q0
◆ 将全部显卡风扇设置为自动:-sAUTO
◆ 将全部显卡风扇设置为全速:-s100
◆ 将全部显卡风扇设置为最低转速:-s0
◆ 将第一块显卡风扇设置为自动:-sAUTO -i0
◇ 无参启动会输出完整用法
X) 只在 Windows 10 环境下调试通过,不确保其他环境也能用…

扯一扯这次折腾的经历

〇缘起

我为啥没事要控制显卡风扇转速呢?我只敷衍一下说懂得都懂吧 _(:з)∠)_
原因这部分略过,在找到 MSI Afterburner 共享内存的方式之前我还尝试了许多不靠谱的其他方式,最终选择了小飞机。

①使用来自 guru3D 论坛别人封装库的尝试:有BUG啊

起初在咕狗上找小飞机的 API,然后就找到 guru3D 论坛上标题为
MSI Afterburner .NET Class Library》 的帖子,提供了一个加密混淆了的 .NET 程序集和一份文档。用起来感觉还行,读取全部显卡的风扇转速。 但是要设置风扇转速的时候它只能动前两块显卡,如果要设置第三块及以上的显卡,(不要问…),这个库会出现内存访问违规,也就是传说中的 Access Violation(AV)…… 由于这个程序集不提供源代码,那就只能自己实现了,况且 MSI Afterburner 提供了 SDK 示例,虽然是用 C++ 写的,但也能勉强读懂吧,反正只要能调整风扇转速就达到了这次的目的。

②自己照着 SDK 实现:还凑合

默认情况下 SDK 示例能在 C:\Program Files (x86)\MSI Afterburner\SDK\Samples\SharedMemory\MACMSharedMemorySample 找到。 主要看 MACMSharedMemorySampleDlg.cpp 就可以了。 整个流程大概分成四个阶段:连接、读取、修改、写入,读写的时候有个全局互斥锁,还有个 MACM 签名用来避免误操作,最后不要忘了释放资源。 结构体定义我就懒得自己重新扒 C++ 而是从《MSI Afterburner .NET Class Library》里面直接扒出来了,对外公开的数据结构没有混淆,也不能混淆 乂目

●结语

这只能称之为一个小作品或者小节目吧,还可以再扩展一下吧核心、显存频率引出来的,但是懒了 _(:з)∠)_ 其实是月底还没写这个月的博客,有点慌了w 因为要恰饭,所以就算是家里蹲,留给自己的时间也不多,一直想做一个自己的个人博客还在咕着 _(:з)∠)_ 忙完这阵子之后我想先深入了解一下 Blazor 然后尝试做个博客管理界面,至于前台嘛,为了方便互联网档案馆之类的场景,我决定还是做成全站伪静态,服务端渲染的页面。

★题外话(?)

对于不想安装小飞机又想用命令行控制显卡风扇转速的小伙伴,我这里有个方法能将小飞机强行精简绿化,最终的 7z 压缩包只有 1.2MB。 去官网下载安装包,然后用 7-zip 解开,挑出下面列出的文件,然后再修改一下配置文件 MSIAfterburner.cfgMSI Afterburner v4.6.4.16117 Beta 4
│  LogitechLcd.dll
│  MSIAfterburner.cfg
│  MSIAfterburner.dat
│  MSIAfterburner.exe
│  MSIAfterburner.oem
│  MSIAfterburner.oem1
│  MSIAfterburner.oem2
│  RTCore.cfg
│  RTCore.dll
│  RTCore32.sys
│  RTCore64.sys
│  RTFC.dll
│  RTHAL.dll
│  RTMUI.dll
│  RTUI.dll

├─Profiles
│      MSIAfterburner.cfg

└─Skins
        MSIModern.usf
配置文件内容[Settings]
Skin=MSIModern.usf
用这种方式需要自己打32、64位的 VC2008 运行库

标签: 软件开发 C#

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

Powered by emlog 去你妹的备案 sitemap