我想使用 ytdl-core 和 Fluent-ffmpeg 将声音输出到我的扬声器
我从 yt 获取声音并使用 ffmpeg 将其转换为 pcm,现在我想将其通过管道传输到我的扬声器
扬声器使用
internal.Writable
naudiodon 使用
NodeJS.WritableStream
当管道到
speaker
时一切正常
当管道到
naudiodon
时,我收到打字稿错误,但什么也没听到
两个流之间有什么区别,我可以转换它们吗?因为我需要使用
naudiodon
,因为我可以指定我的输出设备
WritableStream 是一个 Web API,internal.Writable 来自 Node.js
我可以将
Writable
转换为 WritableStream
吗?
您需要创建一个
WritableStream
以将操作应用于底层 Writable
。这是一个例子。
function toWebWritable<T extends Uint8Array>(writable: Writable): WritableStream<T> {
return new WritableStream<T>({
write(chunk, controller) {
return new Promise((resolve, reject) => {
let result: boolean
result = writable.write(Buffer.from(chunk), (error) => {
if (error) {
controller.error(error);
reject(error);
} else if (!result) {
writable.once('drain', resolve);
} else {
resolve();
}
});
});
},
close() {
// Assuming a graceful closure is desired:
return new Promise((resolve) => {
writable.end(resolve);
// If there's an error, it should be handled by listening to the 'error' event on the writable itself.
});
},
abort(reason) {
writable.destroy(reason);
}
});
}