从 nodejs 向 FFmpeg 发送 2 个流

     2023-03-13     93

关键词:

【中文标题】从 nodejs 向 FFmpeg 发送 2 个流【英文标题】:Sending 2 streams to FFmpeg from nodejs 【发布时间】:2019-12-16 22:18:48 【问题描述】:

我正在尝试将 2 ReadableStreams 从 nodejs 发送到 FFmpeg。我曾尝试使用 fluent-ffmpeg 库来执行此操作,但它只支持发送一个流进行处理。检查here

我的问题是: 我有 2 个传入的单声道音频流,我想将它们发送到 ffmpeg 以创建立体声流,然后我将其发送到谷歌的语音到文本服务,以生成转录。

我已成功接收到 nodejs 服务器的两个单声道流。 如何利用 FFmpeg 实时合并它们仍不清楚,我可以生成一个 FFmpeg 子进程,但我不确定如何将 2 ReadableStreams 作为输入并将输出作为另一个流? FFmpeg 支持多种输入流。

如果这两个单声道流位于两个单独的文件中,我可以使用此代码合并它们。

const  spawn  = childProcess;
const ffmpeg = spawn('ffmpeg', [
  '-i', this.phoneAudioFile,
  '-i', this.micAudioFile,
  '-filter_complex', '[0:a][1:a]amerge=inputs=2[a]',
  '-map', '[a]',
  this.outputLosslessFile,
]);

如何使用 2 个流而不是 2 个文件来实现相同的目标?

编辑

传入的流都有 PCM 音频数据。 整个过程在 linux Ubuntu 服务器上运行。 最终输出必须是 wav 文件。

【问题讨论】:

您应该告诉我们您使用的是什么平台,以及该源音频格式是什么。命名管道通常可以使用,但它们有一些怪癖并且并非随处可用。 我在问题中添加了更多信息。 【参考方案1】:

假设您的源音频流是常规 PCM 音频(例如在 WAV 文件中最常见的音频),我会在您的应用程序内部合并这些流,并将单个流输出到 FFmpeg。

这可以像交替读取从哪个流中一样简单地完成,有效地交错样​​本。

如果您的样本是 16 位的,那么每个样本是两个字节。因此,您的流将如下所示:

[LL][RR][LL][RR][LL][RR]

(其中每个LL 是左声道单个样本的 2 个字节,RR 也是如此)

如果您要将其通过管道传输到 FFmpeg,则需要为 RAW PCM 设置适当的参数。或者,您也可以在应用程序中生成 WAV 文件头。

【讨论】:

通过 Observable 从 Angular 向 nodejs 发送 POST 请求

】通过Observable从Angular向nodejs发送POST请求【英文标题】:SendingPOSTrequestviaObservablefromangulartonodejs【发布时间】:2018-05-0415:26:04【问题描述】:我有一个Angular5应用程序正在运行并将ExpressJs配置为后端,我在尝试订阅Angular中的observa... 查看详情

从 Flutter 应用程序向 nodejs 服务器发送图像

】从Flutter应用程序向nodejs服务器发送图像【英文标题】:Sendinganimagetonodejsserverfromaflutterapp【发布时间】:2020-12-1511:15:41【问题描述】:我正在尝试从Flutter应用程序将图像发送到节点jsrestapi,并且在服务器上没有收到图像(它在... 查看详情

在开发中设置用于从 Angular 向 NodeJS 发送 API 请求的服务器端口

】在开发中设置用于从Angular向NodeJS发送API请求的服务器端口【英文标题】:SettheserverportforsendingAPIrequestsfromAngulartoNodeJSindevelopment【发布时间】:2019-03-3023:11:00【问题描述】:我有这个MEANStack应用程序,对于我使用Angular6的前端,... 查看详情

如何使用nodejs向android chrome浏览器发送通知?

】如何使用nodejs向androidchrome浏览器发送通知?【英文标题】:howtosendnotificationtoandroidchromebrowserusingnodejs?【发布时间】:2020-01-2204:06:33【问题描述】:我想从节点js向我的android设备的chrome浏览器发送推送通知。这可能吗?如果是... 查看详情

从 nodejs 服务器发送推送通知

】从nodejs服务器发送推送通知【英文标题】:Sendpushnotificationsfromnodejsserver【发布时间】:2017-09-0723:46:59【问题描述】:我有一个使用mongoDB的node.js服务器,我想使用我的ionic应用程序向区域内的特定用户发送推送通知。寻找最近... 查看详情

从公会 1 向公会 2 发送邀请

】从公会1向公会2发送邀请【英文标题】:Sendinvitesfromguild1toguild2【发布时间】:2021-09-2422:43:10【问题描述】:我正在开发一种从公会生成单次使用邀请的方法,我们将其称为GuildOne。如果要在公会2中执行!invite<@user>,... 查看详情

从公会 1 向公会 2 发送邀请

】从公会1向公会2发送邀请【英文标题】:Sendinvitesfromguild1toguild2【发布时间】:2021-09-2422:43:10【问题描述】:我正在开发一种从公会生成单次使用邀请的方法,我们将其称为GuildOne。如果要在公会2中执行!invite<@user>,... 查看详情

使用 OneSingnal 从 NodeJS 发送通知推送到 React Native

】使用OneSingnal从NodeJS发送通知推送到ReactNative【英文标题】:SendNotificationsPushfromNodeJStoReactNativewithOneSingnal【发布时间】:2020-04-0516:39:05【问题描述】:当我使用Nodejs插入mongodb数据库并使用OneSingnal向反应本机应用程序发送通知时... 查看详情

从 Celery 任务向 Channels 发送消息

】从Celery任务向Channels发送消息【英文标题】:SendingmessagefromCelerytasktoChannels【发布时间】:2019-08-1519:24:32【问题描述】:Django2.1.1,Django频道2.1.3,芹菜4.2.1我在Celery中设置了一个任务,在任务结束时,我需要向客户端发送一条we... 查看详情

从 Lambda 向订阅主题的所有用户发送 SNS 通知

】从Lambda向订阅主题的所有用户发送SNS通知【英文标题】:SendSNSnotificationtoallUsersthatsubscribedthetopicfromLambda【发布时间】:2021-12-2906:00:46【问题描述】:我在nodejs(AWSLambda)中创建了一个带有后端的电子商务IOS应用程序。当用户登录... 查看详情

使用 NodeJS + 实时输出从 Web 运行 Linux 命令

...题描述】:简单地说,有可能实现从php脚本向nodeJS服务器发送命令的最佳方法是什么(与从客户端js发送命令相比,服务器端阻止用户发送自定义和破坏性命令)到nodejs服务器,然后运行这些命令并将实时输出发 查看详情

NodeJS 服务器向 C++ 进程发送数据

】NodeJS服务器向C++进程发送数据【英文标题】:NodeJSserversenddatatoC++process【发布时间】:2019-02-2517:10:16【问题描述】:我有一个nodeJS服务器,它从web-UI接收用户POST/Streaming请求。我有一个C++后端引擎进程,它进行一些计算并将API... 查看详情

Socket Send(2) - 如何从服务器向客户端发送错误消息

】SocketSend(2)-如何从服务器向客户端发送错误消息【英文标题】:SocketSend(2)-Howtosendanerrormessagefromservertoclient【发布时间】:2017-04-0621:49:27【问题描述】:我现在正在做一些非常简单的TCP套接字编程,但我遇到了一个小问题,我似... 查看详情

在nodeJs中向客户端发送错误时出错

】在nodeJs中向客户端发送错误时出错【英文标题】:ErrorsendingerrortoclientsideinnodeJs【发布时间】:2017-02-1418:49:05【问题描述】:我在nodeJS中使用异步,在我的最终回调中,我正在处理错误并尝试将其发送回我的角度控制器。function... 查看详情

Laravel 和 Vue 在 Blade 中从组件 1 向组件 2 发送数据

】Laravel和Vue在Blade中从组件1向组件2发送数据【英文标题】:LaravelandVueemitdatafromcomponent1tocomponent2withinBlade【发布时间】:2021-02-0620:45:19【问题描述】:不知道这是否可能。但这里是上下文。我有一个会员状态(活动/非活动)的... 查看详情

使用 nodejs 使用 REST 向 html 发送响应

】使用nodejs使用REST向html发送响应【英文标题】:ConsumingaRESTusingnodejssendingresponsetohtml【发布时间】:2018-08-1110:05:24【问题描述】:我是Nodejs的初学者,我有一个辅助项目来检查我的端点的状态。我最初尝试使用XMLHttp执行此操作... 查看详情

NodeJS - 处理 100 多个并发连接的内存不足

...我正在开发一个IoT应用程序,其中客户端每2秒向服务器发送一次生物电势信息。客户端每2秒发送一个包含400行数据的CSV文件。我的服务器上运行着一个Socket.IOwebsocket服务器,它从每个客户端捕 查看详情

将数据从 javascript/html 页面发送到 Express NodeJS 服务器

】将数据从javascript/html页面发送到ExpressNodeJS服务器【英文标题】:Sendingdatafromjavascript/htmlpagetoExpressNodeJSserver【发布时间】:2017-12-1509:21:49【问题描述】:我正在使用html5和javascript开发一个cordova应用程序。架构如下:电话应用程... 查看详情