簡體   English   中英

是否可以從節點 js 中的 Windows CLI 實用程序獲取數據流?

[英]Is it possible to get a data stream from windows CLI utility in node js?

我想創建一個節點應用程序,用於記錄和解析來自 Windows 10 中系統輸出設備的音頻。看起來這是一個真正的挑戰,因為我檢查了許多 npm 包,但沒有找到任何允許從輸出設備。 所以我找到了一個適用於 Windows 10 的第三方 CLI 實用程序,我不確定我應該給出它的名字,因為它可能像營銷等一樣受到威脅。

所以這個 CLI 實用程序允許為輸出設備記錄一個環回三音節並將其保存到 WAV 文件中。
我想知道是否存在某種方法來攔截來自該實用程序的數據流到來自我的 NODE.js 應用程序的 WAV 文件來處理它? 或者如果 CLI 實用程序沒有提供一些 API 來獲取這些數據,那是不可能的?

我也在考慮立即打開 WAV 文件並在錄制期間讀取此文件以獲取 node.js 應用程序中的最新數據並處理它,但我不確定這是否可能由於寫入/讀取流同一個文件(來自 CLI - 寫入,來自 NODE - 讀取)

感謝您提供任何幫助或信息!

PS對不起,如果我的問題很愚蠢。 我對這種低級的東西不熟悉

經過一夜的研究,我設法在我的特定情況下獲得了數據。
我使用節點子進程包中的一個子進程來創建一個專用進程,在該進程中我使用適當的參數執行 CLI 實用程序,將記錄數據直接發送到 STDOUT。 請記住,由於緩沖區問題exec將無法在此特定任務中工作

這里最重要的是:幸運的是,CLI 實用程序可以將記錄數據塊發送到 STDOUT 而不是文件。 但是,如果不能,我不知道該怎么辦。 我不知道是否存在攔截直接寫入輸出文件的數據的現有方法,所以這個答案不是 100% 適合這個問題。 如果 CLI 不將數據寫入 STDOUT 怎么辦? 如果有人知道:請告訴我,我將不勝感激

這是基本的代碼示例:

import { spawn } from 'node:child_process';

 const child = spawn('fmedia', ['--record', '--dev-loopback=0', '-o', '@stdout.wav']);
  child.stdout.on('data', data => {
    console.log('stdout data -> ', data);
  })
  child.stderr.on('data', data => {
    console.log('stderr data -> ', data);
  })
  child.on('close', code => {
    console.log('child process exited with code ' + code);
  });

親切的問候

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM