Node-icy 技术文档
2024-12-20 20:42:31作者:龚格成
本文档将为您提供详细的 Node-icy 项目安装指南、使用说明以及项目 API 使用文档。
1. 安装指南
要安装 Node-icy 模块,请使用 npm 命令:
npm install icy
2. 项目的使用说明
Node-icy 是一个 Node.js 模块,用于解析和/或注入 ICY 元数据。该模块提供了以下类:
Reader类:用于从 ICY 流(通常是 SHOUTcast 或 Icecast 广播)中检索原始音频数据和解析元数据。Writer类:允许您将自定义元数据注入数据流中,然后可以被其他 ICY 客户端(如 VLC)显示。Client类:基于 Node 的核心http模块构建,但这个版本支持返回 ICY HTTP 版本的服务器,并自动发送 "Icy-MetaData: 1" HTTP 头,以通知服务器我们需要元数据。最后,它在 "response" 事件中返回一个Reader实例,因此 "res" 对象也会发出 "metadata" 事件。
以下是一个基本示例,演示如何使用 HTTP Client 类连接到远程 ICY 流:
var icy = require('icy');
var lame = require('lame');
var Speaker = require('speaker');
// 已知的 ICY 流 URL
var url = 'http://firewall.pulsradio.com';
// 连接到远程流
icy.get(url, function (res) {
// 输出 HTTP 响应头
console.error(res.headers);
// 输出任何发生的 "metadata" 事件
res.on('metadata', function (metadata) {
var parsed = icy.parse(metadata);
console.error(parsed);
});
// 播放音乐(假设是 MP3 数据)
// lame 解码并使用 Speaker 发送到扬声器
res.pipe(new lame.Decoder())
.pipe(new Speaker());
});
您还可以向请求添加自定义头:
var url = require('url');
// 已知的 ICY 流 URL
var opts = url.parse('http://yourstreamurl.tld/');
// 添加自定义头
opts.headers = { 'User-Agent': 'Your awesome useragent' };
// 连接到远程流
icy.get(opts, callback);
3. 项目 API 使用文档
以下是 Node-icy 模块提供的 API:
Client()
Client 类是 http.ClientRequest 对象的子类。它添加了一个流预处理器来处理 ICY 响应。
request()
request() 方便函数。与 Node 核心的 http.request() 类似,但返回一个 icy.Client 实例。
get()
get() 方便函数。与 Node 核心的 http.get() 类似,但返回一个 icy.Client 实例,并调用 .end() 方法,且不写入请求体(最常见的场景)。
Reader()
ICY 流读取器。这是一个双工流,除了从输出数据中删除元数据本身外,还会发出 "metadata" 事件。
Writer()
Writer 类是一个双工流,接受原始音频/视频数据并原样传递。它还具有一个 queue() 函数,允许在下一个 "metaint" 间隔将元数据注入流中。
Writer#queue(metadata)
将一个元数据片段加入队列,以便在流中发送。metadata 可以是一个字符串,也可以是一个包含至少 "StreamTitle" 键的对象,其值为字符串。序列化的元数据有效载荷必须小于或等于 4080 字节。
parse()
解析包含 ICY 元数据的 Buffer(或字符串)为对象。
stringify()
将对象转换为 ICY 元数据字符串。
4. 项目安装方式
请参考上述安装指南,使用 npm 命令进行安装。
npm install icy
登录后查看全文
热门项目推荐
AutoGLM-Phone-9BAutoGLM-Phone-9B是基于AutoGLM构建的移动智能助手框架,依托多模态感知理解手机屏幕并执行自动化操作。Jinja00
Kimi-K2-ThinkingKimi K2 Thinking 是最新、性能最强的开源思维模型。从 Kimi K2 开始,我们将其打造为能够逐步推理并动态调用工具的思维智能体。通过显著提升多步推理深度,并在 200–300 次连续调用中保持稳定的工具使用能力,它在 Humanity's Last Exam (HLE)、BrowseComp 等基准测试中树立了新的技术标杆。同时,K2 Thinking 是原生 INT4 量化模型,具备 256k 上下文窗口,实现了推理延迟和 GPU 内存占用的无损降低。Python00
GLM-4.6V-FP8GLM-4.6V-FP8是GLM-V系列开源模型,支持128K上下文窗口,融合原生多模态函数调用能力,实现从视觉感知到执行的闭环。具备文档理解、图文生成、前端重构等功能,适用于云集群与本地部署,在同类参数规模中视觉理解性能领先。Jinja00
HunyuanOCRHunyuanOCR 是基于混元原生多模态架构打造的领先端到端 OCR 专家级视觉语言模型。它采用仅 10 亿参数的轻量化设计,在业界多项基准测试中取得了当前最佳性能。该模型不仅精通复杂多语言文档解析,还在文本检测与识别、开放域信息抽取、视频字幕提取及图片翻译等实际应用场景中表现卓越。00
GLM-ASR-Nano-2512GLM-ASR-Nano-2512 是一款稳健的开源语音识别模型,参数规模为 15 亿。该模型专为应对真实场景的复杂性而设计,在保持紧凑体量的同时,多项基准测试表现优于 OpenAI Whisper V3。Python00
GLM-TTSGLM-TTS 是一款基于大语言模型的高质量文本转语音(TTS)合成系统,支持零样本语音克隆和流式推理。该系统采用两阶段架构,结合了用于语音 token 生成的大语言模型(LLM)和用于波形合成的流匹配(Flow Matching)模型。 通过引入多奖励强化学习框架,GLM-TTS 显著提升了合成语音的表现力,相比传统 TTS 系统实现了更自然的情感控制。Python00
Spark-Formalizer-X1-7BSpark-Formalizer 是由科大讯飞团队开发的专用大型语言模型,专注于数学自动形式化任务。该模型擅长将自然语言数学问题转化为精确的 Lean4 形式化语句,在形式化语句生成方面达到了业界领先水平。Python00
最新内容推荐
MQTT 3.1.1协议中文版文档:物联网开发者的必备技术指南 Solidcam后处理文件下载与使用完全指南:提升CNC编程效率的必备资源 Python案例资源下载 - 从入门到精通的完整项目代码合集 TortoiseSVN 1.14.5.29465 中文版:高效版本控制的终极解决方案 CrystalIndex资源文件管理系统:高效索引与文件管理的最佳实践指南 QT连接阿里云MySQL数据库完整指南:从环境配置到问题解决 Windows Server 2016 .NET Framework 3.5 SXS文件下载与安装完整指南 Python开发者的macOS终极指南:VSCode安装配置全攻略 瀚高迁移工具migration-4.1.4:企业级数据库迁移的智能解决方案 STM32到GD32项目移植完全指南:从兼容性到实战技巧
项目优选
收起
deepin linux kernel
C
24
9
OpenHarmony documentation | OpenHarmony开发者文档
Dockerfile
405
3.14 K
Ascend Extension for PyTorch
Python
225
251
暂无简介
Dart
672
159
本项目是CANN提供的数学类基础计算算子库,实现网络在NPU上加速计算。
C++
663
319
🎉 (RuoYi)官方仓库 基于SpringBoot,Spring Security,JWT,Vue3 & Vite、Element Plus 的前后端分离权限管理系统
Vue
1.21 K
657
React Native鸿蒙化仓库
JavaScript
262
325
Nop Platform 2.0是基于可逆计算理论实现的采用面向语言编程范式的新一代低代码开发平台,包含基于全新原理从零开始研发的GraphQL引擎、ORM引擎、工作流引擎、报表引擎、规则引擎、批处理引引擎等完整设计。nop-entropy是它的后端部分,采用java语言实现,可选择集成Spring框架或者Quarkus框架。中小企业可以免费商用
Java
9
1
openGauss kernel ~ openGauss is an open source relational database management system
C++
160
220
仓颉编译器源码及 cjdb 调试工具。
C++
135
868