node.js - 需要将rtsp视频输出到stdout
问题描述
我需要让 gstreamer 从 rtsp uri 获取视频并将视频发送到标准输出,以便模拟 fluent ffmpeg 的类似行为。
我可以在终端上执行此操作(并获取原始二进制数据),但是在节点内部时,我得到:
“错误的管道语法错误”。
gst-launch-1.0 uridecodebin silent=true uri=rtsp://192.168.x.x:8800/test.stm ! fdsink fd=1
当上述命令与“autovideosink”一起使用时,我可以观看视频。
我需要使用 stdout 的原因是因为现有应用程序使用 fluent-ffmpeg 并且它使用“pipe:1”,这基本上是相同的。我希望尽可能减少对现有应用程序的干扰。
在节点应用程序中,我通过“spawn”命令调用 gst-lauch-1.0,如下所示:
var gstreamerProc = spawn(command, args, options);
在哪里:
command: '/usr/bin/gst-launch-1.0'
args: ["uridecodebin","silent=true","uri=rtsp://192.168.x.x:8800/test.stm","!","queue","! fdsink fd=0"]
options: {"captureStdout":false,"niceness":0}"
从原始的 fluent-ffmpeg/lib/processor.js 中,此注释描述了“选项”中的值
/*
:
* The 'options' argument may contain the following keys:
* - 'niceness': specify process niceness, ignored on Windows (default: 0)
* - `cwd`: change working directory
* - 'captureStdout': capture stdout and pass it to 'endCB' as its 2nd argument (default: false)
* - 'stdoutLines': override command limit (default: use command limit)
*
:
*/
正如我所说,上面的命令行在常规终端上工作,没有错误,没有警告,当它被放置在 Node.js 中时,它会抛出
“错误的管道语法”
警告。非常感谢解决此问题的任何帮助。
解决方案
推荐阅读
- javascript - node_module 文件夹未出现在工作目录中
- javascript - Express 自定义路由参数自动取值
- r - 使用 RMD 和 downloadHandler 的 PDF 下载问题
- android - 获取文件路径的问题
- scalardb - 关于卡西的问题
- mysql - 如何将表引用到自身以带回员工记录和提供 empId 的经理
- excel - 复制和粘贴具有相同工作表名称的值
- eclipse - 如何检查是否使用 maven 插件解决了 Osgi 捆绑包?
- javascript - 想知道这是否是验证网站的最佳方式
- rest - 如何对 Apache Nifi 进行 REST API 调用