AudioDVServer-Plugin
是SAO Utils的第三方插件,可以提供系统音频数据的可视化服务。安装启用插件后,仅需用SAO Utils的“桌面网页挂件”打开ADV网页客户端即可显示系统音频频谱。网页客户端可由用户自行编写改变其样式,此插件则为客户端提供数据接口(详见开发接口/API)。下载后的插件压缩包内提供了一个简单的网页客户端演示Demo,用户可自行修改其样式。
-
2020-05-26:
V1.2.2
版本更新修复了重启插件或切换不可用设备时造成插件出错等问题,对音频捕捉服务增加错误捕获及处理。 -
2020-05-20:
V1.2.1
版本更新支持EXP 1
实验版的SAO Utils。新增调试版插件下载,可输出日志文件。 -
2020-05-19:
V1.1.0
版本的插件在beta 1
、beta 2(steam)
版本的SAO Utils中测试过通过。已知在实验性版本Exp 1
中会导致程序崩溃。与SAO Utils实验版兼容的插件会在后续中推出,敬请期待。
下载最新版本的插件:Latest Release,将下载的压缩文件解压。
文件夹结构如下
│ readme.txt
│
├─ADVWebClient
│ │ ADVService.js
│ │
│ ├─circle
│ │ index.html
│ │
│ ├─line
│ │ index.html
│ │
│ └─solidcircle
│ index.html
│
└─AudioDVServer
advConfig.ini
module64.dll
将解压缩根目录下的AudioDVServer
文件夹拷贝至SAO Utils根目录的Plugins
文件夹中,重启SAO即可。
安装完成后打开SAO Utils首选项中的插件管理页面,将名称为AudioDVServer
的插件选择启用后点击保存。
安装完成后打开SAO Utils首选项中的插件管理页面,将名称为AudioDVServer
的插件选择启用后点击保存。
通过更改AudioDVServer
文件夹中的advConfig.ini
文件来配置插件。当配置数据错误或无配置文件时使用默认值,配置值不区分大小写。
- ip:可选,默认值为
local
,指代地址127.0.0.1
,可更改为any
,指代地址0.0.0.0
。只支持any
与默认参数local
,定义插件提供服务的地址。 - port:可选,默认值为
5050
,定义插件提供服务的端口号。 - maxClient:可选,默认值为
5
,定义客户端最大连接数。 - logger:可选,默认值为
false
,调试版(Debug Version)专有,发行版(Release Version)可设置,但无效。设置为true
后可在插件所在目录下输出日志文件ADV_Log.log
。
advConfig.ini
文件示例:
[Server]
ip = local
port = 5050
maxClient = 4
logger = true
压缩包内提供了三种频谱显示客户端的示例,可用SAO Utils桌面网页挂件打开。通过设置WebClient
文件夹内的index.html
文件来配置地址,端口号以及显示频谱的样式。必须保证客户端与插件设置的地址与端口号一致。示例文件已配置好,可以直接使用。也可通过编写HTML文件来定义自己的频谱显示客户端。
可以更改index.html
中的以下代码来自定义客户端,值得注意的是IP
与PORT
需要与插件的设置"一致":
- 如果插件配置文件
advConfig.ini
中的ip = any
, 客户端IP
可选"local"
,或者是插件所在主机的的局域网ip
地址(如"192.168.1.107"
)。 - 如果插件配置文件
advConfig.ini
中的ip = local
, 客户端IP
必须为参数"local"
。
更多的客户端样式可在AudioDVClient中下载。
如果你是SAO Utils beta版用户,请不要频繁刷新网页挂件:与浏览器不同的是,网页挂件刷新后不会立即关闭前一个WebSocket
连接,需要等待一段时间后才能释放,而新的连接会被插件计数。所以当频繁刷新次数加上已有的客户端数大于设置的最大客户端连接数时,会造成被刷新的那个客户端无法正常显示。如果出现这种情况,可以通过打开SAO Utils首选项中的插件管理页面重启该插件,或者等待之前的客户端自动断开连接。
WebClient
文件夹内的ADVService.js
封装了一个ADV_Plugin
类,并提供了一个ondata()
接口方便数据的引用。
引用方法:
var IP = "local"; // "192.168.1.107"
var PORT = 5050;
var adv = new ADV_Plugin(IP, PORT);
adv.ondata = function(audioData){ //do something with audioData...};
参数IP
可选值有"local"
,或者是插件所在主机的的局域网ip
地址(如"192.168.1.107"
)。参数"local"
会被解析为"localhost"
。
每当客户端收到插件发送的频谱数据就会触发ondata
事件。
其中audioData
是数据长度为128
的数组,前面64
个数据为左声道FFT数据,后面64
个数据为右声道FFT数据。每一个声道的FFT数据位从低到高对应频谱频率的由低到高。
我博客的文章和这个README
的内容上大致相同,但说明了这个项目的由来与实现,有兴趣的可以看一下。