Node.js 子进程问题与参数 - 引号问题?,FFMPEG 问题?

2024-01-12

我需要能够从 Node.js 应用程序执行 FFMPEG。我相信这个问题可能与正确指定命令行参数有关,而不是特定于 FFMPEG,但由于我无法缩小问题范围,所以我提出了我的整个问题。

我可以执行以下命令从命令提示符成功:

C:\Brad\ffmpeg.exe -f dshow -i audio="Microphone (SoundMAX Integrated" testaaa.mp3

FFMPEG 按预期启动,从我的音频设备录制音频,并写入 MP3 文件。现在,我尝试做我的 Node.js 应用程序中也有同样的事情:

childProcess = child_process.spawn('C:\\Brad\\ffmpeg.exe', ['-f', 'dshow', '-i', 'audio="Microphone (SoundMAX Integrated"', 'testaaa.mp3']);
childProcess.stderr.on('data', function (data) {
    console.log('StdioSource received data from STDERR: ' + data);
});

从 Node.js 内部,FFMPEG 失败了!错误很简单:

[dshow @ 0000000001eded80] Could not find audio device.
audio="Microphone (SoundMAX Integrated": Input/output error

考虑到可能由于某种原因这是一个奇怪的权限错误,我决定运行 FFMPEG-list_devices true从我的 Node 应用程序中,果然,列出了有问题的设备:

[dshow @ 000000000228ecc0] DirectShow video devices
[dshow @ 000000000228ecc0] Could not enumerate video devices.
[dshow @ 000000000228ecc0] DirectShow audio devices
[dshow @ 000000000228ecc0]  "Microphone (SoundMAX Integrated"

关于为什么我无法在 FFMPEG 的参数中正确指定音频输入设备,或者为什么 FFMPEG 在作为 Node.js 的子进程运行时无法识别我的音频输入设备,有什么想法吗?

任何提示将不胜感激。


布兰登走在正确的道路上。当您在 Windows 命令行上的参数周围使用双引号时,shell 会将它们去掉,并且程序会看到它们不带引号。当你使用child_process.spawn()您绕过了 shell,因此程序将文字引号视为参数的一部分,并且不准备处理它们。

例如,我创建了一个小节点脚本,pargs.js,仅由console.log(process.argv);使用与 FFMPEG 相同的参数运行它,我得到:

C:\Documents and Settings\Eric Bohlman>node pargs -f dshow -i audio="Microphone(SoundMAX Integrated" testaaa.mp3
[ 'node',
  'C:\\Documents and Settings\\Eric Bohlman\\pargs',
  '-f',
  'dshow',
  '-i',
  'audio=Microphone (SoundMAX Integrated',
  'testaaa.mp3' ]

C:\Documents and Settings\Eric Bohlman>

正如您所看到的,shell 在使用引号后将其去掉,以避免破坏audio=...空格处的争论。

请注意,Windows shell(至少从 XP SP3 开始)不会去掉单引号或使用它们进行分组,这与 Linux 系统上常用的 bash 不同。因此,如果您正在查看某人的 bash 命令行示例,并且它使用单引号,那么您通常必须将其替换为双引号,才能使其在 Windows 下工作。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Node.js 子进程问题与参数 - 引号问题?,FFMPEG 问题? 的相关文章

随机推荐

  • IBrokers - 如何发送 100000 至 IBrokers:::.placeOrder?

    我正在使用 IBrokers 在 IDEALPRO 上开立澳元兑美元订单 以下语法对我卖出 90 000 件很有效 myscript r libPaths rpackages library IBrokers myconid 3 twsob
  • 如何检查核心数据是否为空

    如何使用 Swift 检查核心数据是否为空 我尝试了这个方法 var people NSManagedObject if people nil 但这会导致此错误 二元运算符 不能应用于 NSManagedObject 和 nil 类型的操作
  • 查找对象数组中属性的最大值[重复]

    这个问题在这里已经有答案了 在 Java 程序中 我有一个 WaterBody 类 其中一个属性是电力输出的双精度值 如何找到数组中的最大电功率输出值WaterBody实例 这是我的原型 public static WaterBody mo
  • 如何在 webview 中加载 html 字符串?

    我有一个包含以下内容的 html 字符串
  • 使用 ADB 跟踪应用程序的网络统计信息 (netstats)

    我感觉这是可能的 我只是不太确定信息保存在哪里 我想获取特定应用程序的上 下统计信息 但我想使用 ADB 而不是wireshark 或 netty 来完成此操作 我知道我可以使用查看 vmData adb shell cd proc cd
  • 有没有办法让

    只是想知道是否有办法获取 HTML
  • 应用程序关闭时的任务处理

    我有一个 Net v4 0 Windows 服务应用程序 它在开始时旋转 tpl 任务 执行某些长时间运行的活动 并且基本上在应用程序的生命周期内保持活动状态 因此是使用 TaskCreationOptions 创建的 长跑参数值 每当服务
  • XAMPP 或 WAMP 服务器与 IIS 之间有什么区别?

    我想知道 XAMPP 或 WAMP 服务器与 IIS 服务器之间的主要区别是什么 WAMP 是 的缩写W窗口 操作系统 Apache 网络服务器 MmySQL 数据库 PHP 语言 XAMPP 和 WampServer 都是 WAMP 的免
  • Ionic 4 Ios 构建出现黑屏

    我正进入 状态Failed to load resource The requested URL was not found on this server 在 iOS 模拟和设备中运行应用程序时出错 在 Android 中运行正常 I ha
  • Firestore 通过数组的字段值进行查询

    我正在尝试运行一个简单的查询 在其中搜索包含对象数组内的值的文档 例如 看看我的数据库结构 我想运行与此类似的查询 db collection identites where partyMembers array contains name
  • 向 Objective-C 添加“forCount”控制结构的最佳方法?

    Adam Ko 为这个问题提供了一个很好的解决方案 感谢 Adam Ko 顺便说一句 如果您像我一样喜欢 c 预处理器 处理 defines 的东西 您可能不知道 XCode 中有一个方便的东西 右键单击您的一个开源文件的主体 然后向下靠近
  • Vertex AI - 部署的模型预测与评估结果的预测不同

    我使用 AutoML 训练了一个多标签文本分类模型 然后 我部署了模型并尝试测试我们在模型注册表的评估选项卡中提供的一些输入 我遇到的问题是 我通过两种测试方法获得的预测输出值与模型注册表的评估选项卡中显示的输出值不匹配 我已经包含了一个此
  • 使用 LINQ 在 ASP.NET MVC 中传递数据 - 疯狂

    首先请允许我说 我是 ASP NET MVC 方面的高手 我喜欢它 但我是个n00b 我正在尝试从 LINQ 查询传回 复杂 数据 我了解如何使用数据上下文 然后在发送回数据时强制转换该数据 但是当我执行返回匿名类型的更复杂的 LINQ 查
  • 关于 PermissionEx (WIX) 的问题

    我是 WIX 新手 我正在使用 util PermissionEx 创建 ACL 我可以成功设置读 写 读和执行等权限 但找不到有关设置修改权限的任何信息 我尝试使用 Append 属性来实现此功能 这似乎是唯一可以实现所需功能的属性 但是
  • CSS 转换导致 div 在 Safari 中重叠?

    为什么transform rotateY 导致 div 仅在 Safari 中重叠 以下是一些屏幕截图 可以更好地解释 它应该是什么样子 它不应该是什么样子 仅出现在 Safari 中 这是非常奇怪的行为 我已经删除了transform r
  • Discord.py on_member_join 没有响应

    我正在使用一个 client event为我的功能on member join事件 我希望它在用户加入时发送消息 但是控制台没有响应或错误 这是我当前尝试的代码 client event async def on member join m
  • Java 中的 String[] args 有什么意义?

    每当您在类中声明 main 方法时 您总是必须执行String名为 args 的数组 重点是什么 除非我生活在岩石下 否则 Java 中的命令行参数几乎不再使用 当我尝试运行这个时 this program won t compile pu
  • C# 给定货币代码格式化货币(如 USD / GBP / FRF)

    我正在与返回货币的数据库集成 System Decimal 和货币代码 货币代码是类似的字符串 USD GBP 乃至 FRF mscorlib 是否有内置的东西可以帮助我格式化这些货币 我首先想到的是在数据库货币代码和CultureInfo
  • 使用 vscode 作为 sops 的编辑器

    我似乎无法得到sops跟 共事Visual Studio Code作为其编辑 vscode已经在PATH 然而 sops在控制台上打印解密的内容 而不是打开编辑器 c gt code this opens the Visual Studio
  • Node.js 子进程问题与参数 - 引号问题?,FFMPEG 问题?

    我需要能够从 Node js 应用程序执行 FFMPEG 我相信这个问题可能与正确指定命令行参数有关 而不是特定于 FFMPEG 但由于我无法缩小问题范围 所以我提出了我的整个问题 我可以执行以下命令从命令提示符成功 C Brad ffmp